标签: sqlcommand

.net SqlCommand.ExecuteReader是否关闭连接?

在这句话中:

myCommand.ExecuteReader(CommandBehavior.CloseConnection)
Run Code Online (Sandbox Code Playgroud)

如果发生异常,它会关闭连接吗?

.net sqlcommand sqlconnection

4
推荐指数
1
解决办法
6740
查看次数

在c#中解析SQL字符串

我需要解析一个Command.CommandText.

我不想运行查询.我只想查看命令执行时查询是否成功.

说我有; "SELECT * FROM SomeTable WHERE (1=1)"

此字符串将成功.

但,

"SELECT * FROM SomeTable WHERE (1=1"
Run Code Online (Sandbox Code Playgroud)

不会成功.

现在我的问题.我怎么会Parse这个字符串c#

.net c# t-sql parsing sqlcommand

4
推荐指数
1
解决办法
8217
查看次数

以编程方式创建SQL Server表

我需要以编程方式在C#中创建一个SQL Server 2008表,以便从列列表中生成表的列(每个列名是表中行的名称)

我的问题是循环列列表的命令字符串是什么,并创建记录的表:

List<string> columnsName = ["col1","col2","col3"]
Run Code Online (Sandbox Code Playgroud)

我想创建一个包含列中的列的表columnsName.但由于列表大小不恒定,我需要循环遍历列表以生成表列.

c# sqlcommand sql-server-2008-r2

4
推荐指数
1
解决办法
2万
查看次数

如果从子表中删除一行,则为“On Delete Cascade”

如果我有以下示例,我很难理解“删除级联”:

创建表X(id int主键,名称char(10));

创建表 Y(bid int 主键,在删除级联时辅助引用 A(id));

X 包含一行 (111, 'Mike')

Y 包含两行 (1000, 111), (2000, 111)**

如果删除表 Y 中的行 (2000,111) 会发生什么?

由于对父表的引用,该行会被删除还是允许我删除任何内容?

谢谢

mysql sql sqlcommand foreign-keys cascading-deletes

4
推荐指数
1
解决办法
3016
查看次数

如何使用C#将数组元素插入SQL Server数据库?

我需要将天气预报(温度)插入SQL Server数据库,以便远程控制建筑物的供暖.

步骤是:

  1. 从RSS源获取数据
  2. 将它们放在一个数组中
  3. 连接到SQL数据库
  4. 将元素插入SQL数据库

我做了3个第一步,但我坚持使用最后一个.

该阵列是从Yahoo weather的RSS feed创建的.

string[,] myarray1 = new string[5, 3];
Run Code Online (Sandbox Code Playgroud)

数据库列的名称是:Date,Templow,Temphigh

我现在正在尝试将此数组的元素插入SQL Server数据库.几个小时我一直在努力,我无法弄清楚如何做到这一点.我在这个网站上看了很多解决方案而没有成功.

我试过了:

foreach (string str2 in myarray1)
{
    var mycommand = new SqlCommand("INSERT INTO RSS2 VALUES(@Date, @Templow, @Temphigh)", myConnection);
    mycommand.Parameters.AddWithValue("@Date", str2);
    mycommand.Parameters.AddWithValue("@Templow", str2);
    mycommand.Parameters.AddWithValue("@Temphigh", str2);
    mycommand.ExecuteNonQuery();
}
Run Code Online (Sandbox Code Playgroud)

for (k = 0; k < 5; k++)
{
    SqlCommand myCommand = new SqlCommand("INSERT INTO RSS2 (Date, Templow, Temphigh)" +
            "Values ('myarray1[k,0]','myarray1[k,1]','myarray1[k,2]')", myConnection);
    myCommand.ExecuteNonQuery();
}
Run Code Online (Sandbox Code Playgroud)

和许多其他人......

这些解决方案都没有得到纠正.这是我在c#中的第一个代码(我习惯了Basic),所以要小心;-)

c# sql sql-server arrays sqlcommand

4
推荐指数
1
解决办法
2万
查看次数

一个带两个连接字符串的sql命令

我想在C#中运行此查询

SELECT *
FROM [FirstDataBase].[dbo].[table1]
INNER JOIN [SecondDataBase].[dbo].[table2]
Run Code Online (Sandbox Code Playgroud)

我的代码是:

SqlConnection cn = new SqlConnection(myConnectionString);
SqlCommand cmd = new SqlCommand(@"SELECT * FROM [FirstDataBase].[dbo].[table1]
    INNER JOIN [SecondDataBase].[dbo].[table2]");

cmd.Connection = cn; // here is my question !!!

cn.Open();
int x = (int)cmd.ExecuteScalar();
Run Code Online (Sandbox Code Playgroud)

但是我的查询需要两个连接字符串...一个用于[FirstDataBase],第二个用于[SecondDataBase] ...我怎么能这样做?如何插入两个SqlConnectionConnectionString一个SqlCommand?或者我怎么能以其他方式做到这一点?

c# sql sql-server sqlcommand inner-join

4
推荐指数
2
解决办法
6502
查看次数

SQLCommand.ExecuteScalar() - 为什么抛出System.NullReferenceException?

任何人都可以注意到以下功能可能出现的问题:

public string Login(string username, string password)
    {
        string result = "";
        string select = "SELECT user_id FROM [user] WHERE username = @username AND password = @password";
        SqlConnection conn = new SqlConnection(connectionString);
        SqlCommand cmd = new SqlCommand(select, conn);
        cmd.Parameters.AddWithValue("username", username);
        cmd.Parameters.AddWithValue("password", password);
        int userID = 0;
        try
        {
            conn.Open();
            userID = (int)cmd.ExecuteScalar();
            if(userID > 0)
            {
                result = addSession(userID);
            }
        }
        catch(Exception ex)
        {
            string sDummy = ex.ToString();
        }
        return result;
    }
Run Code Online (Sandbox Code Playgroud)

不知道为什么行`userID =(int)cmd.ExecuteScalar(); 抛出一个例外.

谢谢

.net sqlcommand exception

3
推荐指数
1
解决办法
6328
查看次数

用于读取特定工作表,列的sql命令

对于SQL stalwarts来说,这可能是一个非常愚蠢的问题,但我只想要一个SQL命令.

细节,

我使用的是名为R的数据分析工具,该工具使用ODBC从XLS读取数据.我现在正在尝试从XLS文件中读取数据.R中的ODBC工具接受SQL命令.

题,

有人可以给我一个SQL命令,它将从XLS文件中读取数据 - 指定表 - 指定列[按名称] - 指定行[仅由行索引指定]

谢谢 ...

sql excel r sqlcommand import-from-excel

3
推荐指数
1
解决办法
1万
查看次数

ExecuteNonQuery()不保存任何记录

我正在使用基于WinForms的C#工具,该工具具有附加的基于MDF文件的数据库.我正在尝试使用该SqlCommand.ExecuteNonQuery()方法将记录保存到此附加的MDF数据库,但记录未保存.没有错误或异常发生; 唯一的问题是记录实际上没有保存.

Console.WriteLine在顶部显示了我正在尝试运行的查询.它的语法正确,如果我从输出窗口复制粘贴并单独运行它,它的工作原理.

我已正确定义连接字符串如下,它可以正常获取记录:

public static String connectionString = @"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\TestBuildDB.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True";

这里我用来保存记录的功能:

public static void PerformDBWriteTransaction(string inputSQLStatement)
{
    Console.WriteLine(inputSQLStatement);
    DataTable returnDataTable = new DataTable();
    SqlConnection sqlConnection = new SqlConnection();
    sqlConnection.ConnectionString = connectionString;
    SqlCommand cmd = new SqlCommand();
    cmd.Connection = sqlConnection;
    cmd.CommandType = CommandType.Text;
    cmd.CommandText = inputSQLStatement;
    cmd.Connection.Open();
    try
    {
        cmd.ExecuteNonQuery();
    }
    catch (SqlException ex)
    {
        errorMessages.Clear();
        errorMessages.Append("The following errors were found in the SQL statement:\n\n");

        for (int i = 0; i < ex.Errors.Count; …
Run Code Online (Sandbox Code Playgroud)

c# database sqlcommand mdf executenonquery

3
推荐指数
1
解决办法
8410
查看次数

迭代DbCommand中的参数

我正在尝试拦截并将所有SQL命令记录到数据库中.我也需要参数及其值.但command.Parameters没有IEnumerable.我可以去找一个for-statement但有点感觉就像一个退缩.

public override void ScalarExecuted(DbCommand command, DbCommandInterceptionContext<object> interceptionContext)
{
    _stopwatch.Stop();
    if (interceptionContext.Exception != null)
    {
        _logger.Error(interceptionContext.Exception, "Error executing command: {0}", command.CommandText);

        string param = string.Empty;

        if (command.Parameters.Count > 0)
        {
            foreach (var t in command.Parameters)
            {
                param += t....
            }
        }

        Log log = new Log() 
        { 
            Date = DateTime.UtcNow, 
            LogLevel = LogLevel.Error, 
            Message = command.CommandText + "\r\n " + param. 
        };
    }
    else
        _logger.TraceApi("SQL Database", "CommandInterceptor.ScalarExecuted", _stopwatch.Elapsed, "Command: {0}: ", command.CommandText); …
Run Code Online (Sandbox Code Playgroud)

c# logging entity-framework sqlcommand interceptor

3
推荐指数
1
解决办法
1745
查看次数