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

C#开发Access库存跟踪器执行插入时报COM对象与RCW分离错误

你遇到的COM object that has been separated from its underlying RCW cannot be used报错核心是复用了全局静态的OleDbCommand、OleDbConnection实例导致的。OleDb访问Access的底层依赖COM组件,全局实例在多次操作、资源释放后,容易出现托管RCW(运行时可调用包装)和底层COM对象解绑的情况,执行Command时就会抛出该错误。

解决步骤

  • 废弃全局复用的Access_DB.cmd和长连接,每次数据库操作都新建独立的OleDbConnection、OleDbCommand实例,配合using语句自动释放资源,不需要手动调用Open/Close方法。
  • 修正参数赋值的笔误:你代码里给@bc参数赋值时路径多了一个空格,和后续条码保存路径不一致,会导致后续读取条码文件失败。
  • 所有数据库操作的逻辑都放在using块内,确保操作完成后COM资源自动释放,不会残留旧引用。

修正后参考代码

string Uniq = GetUniqueID(UniqueIDInput.Text, 0);
string barcodePath = $"./Barcodes/BC_{Uniq}.png";
// 生成条码逻辑保留
var MyBarCode = IronBarCode.BarcodeWriter.CreateBarcode(Uniq, BarcodeEncoding.Code128);
MyBarCode.SaveAsImage(barcodePath);

// 替换为你Access_DB类中存储的数据库连接字符串
string connStr = Access_DB.连接字符串变量;
string insertSql = "insert into SupplyStock (ItemName,UID,Stock,InternalRef,AddedBy,DateCreated,Barcode) values(@it,@uid,@stk,@ir,@adb,@dc,@bc);";

try
{
    using (OleDbConnection conn = new OleDbConnection(connStr))
    using (OleDbCommand cmd = new OleDbCommand(insertSql, conn))
    {
        cmd.Parameters.Add("@it", OleDbType.VarChar).Value = ItemNameInput.Text;
        cmd.Parameters.Add("@uid", OleDbType.VarChar).Value = UniqueIDInput.Text;
        cmd.Parameters.Add("@stk", OleDbType.VarChar).Value = StockNumber.Value;
        cmd.Parameters.Add("@ir", OleDbType.VarChar).Value = Uniq;
        cmd.Parameters.Add("@adb", OleDbType.VarChar).Value = Username;
        cmd.Parameters.Add("@dc", OleDbType.Date).Value = DateTime.Now;
        cmd.Parameters.Add("@bc", OleDbType.VarChar).Value = barcodePath;
        
        conn.Open();
        cmd.ExecuteNonQuery();
        MessageBox.Show("物料新增成功", "操作成功", MessageBoxButtons.OK);
    }
}
catch (Exception er)
{
    MessageBox.Show("数据写入数据库失败 |" + er, "加载错误", MessageBoxButtons.OK);
    Console.WriteLine(er);
}

注:如果你的Access_DB类封装了连接字符串,直接取出使用即可,不要继续使用全局静态Command实例即可彻底规避该报错。

内容的提问来源于stack exchange,提问作者Bimbles.04

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 05:36:04