如何解决"ExecuteNonQuery:连接属性尚未初始化?"

本文关键字:quot 属性 连接 初始化 ExecuteNonQuery 解决 何解决 | 更新日期: 2023-09-27 18:16:00

con = new SqlConnection (cs);
SqlCommand UpdateCommand = new SqlCommand("Update Stock Set ConfigID = @ConfigID , Quantity = @Quantity ,TotalPrice =@TotalPrice, StockDate =@StockDate ,Where StockID='" +txtStockID.Text+"'");
UpdateCommand.Parameters.Add("@ConfigID",SqlDbType.Int).Value= txtConfigID.Text;
UpdateCommand.Parameters.Add("@Quantity", SqlDbType.Int).Value = txtQty.Text;
UpdateCommand.Parameters.Add("@TotalPrice", SqlDbType.Int).Value = txtTotalPrice.Text;
UpdateCommand.Parameters.Add("@StockDate", SqlDbType.NVarChar, 50).Value = dtpStockDate.Value;
con.Open();
UpdateCommand.ExecuteNonQuery();
con.Close();

如何解决"ExecuteNonQuery:连接属性尚未初始化?"

我发现这个错误信息是可以理解的,不是吗?但是,您必须通过使用构造函数或属性Connection将连接分配给SqlCommand:

string updateSQL = @"UPDATE Stock Set ConfigID = @ConfigID, 
                                      Quantity = @Quantity,
                                      TotalPrice = @TotalPrice, 
                                      StockDate = @StockDate 
                     WHERE StockID = @StockID";
SqlCommand UpdateCommand = new SqlCommand(updateSQL, con);

SqlCommand UpdateCommand = new SqlCommand(updateSQL);
UpdateCommand.Connection = con;
  • 请注意,我在Where中添加了StockID的参数,并删除了Where之前的最后一个逗号。
  • 还请注意,当您完成连接时应该关闭连接,因此您可以使用using -语句确保即使在错误时也会被处理/关闭:

    using(var con = new SqlConnection (cs))
    {
        // ...
    } 
    

如何解决"ExecuteNonQuery: Connection属性未初始化"的错误?"

通过初始化Connection属性
UpdateCommand.Connection = con;  
UpdateCommand.ExecuteNonQuery();

还应该用using语句包装连接对象,以确保它被正确处理。

您还可以使用该连接创建以下命令:

var command = connection.CreateCommand();

这将确保您使用正确的连接初始化命令。您可以使用属性command.CommandText:

设置查询字符串。
command.CommandText = @"SELECT foo FROM foo";