首页 > 后端开发 > C++ > 为什么 `ExecuteNonQuery()` 会失败并出现'未初始化的连接属性”错误?

为什么 `ExecuteNonQuery()` 会失败并出现'未初始化的连接属性”错误?

Mary-Kate Olsen
发布: 2025-01-03 21:49:39
原创
744 人浏览过

Why Does `ExecuteNonQuery()` Fail with an

ExecuteNonQuery:由于未初始化的连接属性而失败

问题:

尝试使用 ExecuteNonQuery 执行 SQL 命令时( ),遇到错误,表明连接属性尚未初始化。是什么原因导致此问题?

答案:

错误消息“ExecuteNonQuery:Connection 属性尚未初始化”表明 SqlConnection 对象尚未初始化正确分配给 SqlCommand 对象。要解决此问题,必须显式设置 SqlCommand 的连接属性。

解决方案:

分配连接的一种方法是通过 SqlCommand 类的构造函数:

cmd.InsertCommand = new SqlCommand("INSERT INTO Application VALUES (@EventLog, @TimeGenerated, @EventType, @SourceName, @ComputerName, @InstanceId, @Message) ", connection1);
登录后复制

或者,可以分配连接属性直接:

cmd.InsertCommand.Connection = connection1;
登录后复制

其他注意事项:

  • Using 语句: 对于实现 IDisposable 的对象,建议使用 using 语句,例如SqlConnection,以确保正确的资源清理和连接
  • 连接池: 重复创建和关闭连接(例如,对于 foreach 循环中的每个条目)是不必要的开销。相反,请考虑在循环外创建并打开连接,并仅在循环完成后关闭它。

示例代码:

using (var connection1 = new SqlConnection(@"Data Source=.\sqlexpress;Initial Catalog=syslog2;Integrated Security=True"))
using (var cmd = new SqlDataAdapter())
using (var insertCommand = new SqlCommand("INSERT INTO Application VALUES (@EventLog, @TimeGenerated, @EventType, @SourceName, @ComputerName, @InstanceId, @Message) "))
{
    insertCommand.Connection = connection1;
    cmd.InsertCommand = insertCommand;

    // Other code...

    connection1.Open();
    insertCommand.ExecuteNonQuery();
}
登录后复制

以上是为什么 `ExecuteNonQuery()` 会失败并出现'未初始化的连接属性”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板