You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#操作Access报ExecuteNonQuery: Connection property has not been initialized错误如何解决

问题根因
  • 错误的核心是创建可释放资源的方法内部误用了using语句:using语句会在离开当前代码作用域时自动调用对象的Dispose方法销毁资源,你需要返回给外层使用的连接、命令对象在方法返回时就已经被释放,自然会触发连接属性未初始化的异常。
    1. openConnection方法中给OleDbConnection对象加了using,方法执行完毕返回conn的瞬间,连接就被自动关闭释放,外层Command方法拿到的是无效的销毁对象
    2. getCommand方法中给OleDbCommand对象加了using,方法返回cmd的瞬间,命令对象就被释放,内部绑定的连接属性也被清空,执行ExecuteNonQuery时检测不到有效连接
修复代码

你外层Command方法已经给conn和cmd加上了using,执行完毕会自动释放资源,不需要在创建对象的内部方法里重复加using,修改两个工具方法即可:

// 修复openConnection,去掉内部using
private OleDbConnection openConnection()
{
    var conn= new OleDbConnection(connString);
    conn.Open();
    return conn;
}

// 修复getCommand,去掉内部using
private OleDbCommand getCommand(string queryString, OleDbConnection conn)
{
    var cmd = new OleDbCommand(queryString, conn);
    return cmd;
}

内容的提问来源于stack exchange,提问作者galidan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 02:45:04