不能使用已与其基础 RCW 分离的访问 C# COM 对象

本文关键字:分离 访问 对象 COM RCW 不能 | 更新日期: 2023-09-27 17:57:05

我做了很多工作,但没有解决这个问题。我正在用 c# 制作一个带有访问数据库的程序。

我添加了新表单,我想使用此表单更新数据库。

我以另一种形式获得 id; gelenid = Form1.id2;

这是我的代码。我在科姆特得到错误。执行非查询();

        isim = comboBox1.Text;
        yapilacak_is = textBox1.Text.Trim();
        bolum = comboBox2.Text.Trim();
        tarih = monthCalendar1.SelectionRange.Start.ToShortDateString();
        durum = comboBox3.Text;
        int idm = Convert.ToInt32(gelenid);
        baglanti.Open();
        komut.Connection = baglanti;
        komut.CommandText = @"UPDATE Bakim SET [Ad]=@isim, 
                        [Bolum]=@bolum,
                        [Yapilacak_Is]=@yapis,          
                        [Tarih]=@tarihim,
                        [Durum]=@durum 
                        WHERE [Id]=@Id";
        komut.Parameters.AddWithValue("@isim", isim);
        komut.Parameters.AddWithValue("@yapis", yapilacak_is);
        komut.Parameters.AddWithValue("@bolum", bolum);
        komut.Parameters.AddWithValue("@tarih", tarih);
        komut.Parameters.AddWithValue("@durum", durum);
        // Moved after the Cover parameter
        komut.Parameters.AddWithValue("@Id", idm);
        komut.ExecuteNonQuery();
        baglanti.Close();
        komut.Dispose();

我为命令添加了 komut

OleDbConnection baglanti = new OleDbConnection("Provider=Microsoft.ACE.Oledb.12.0;Data Source=BakimVeritabani.accdb");OleDbCommand komut = new OleDbCommand();

不能使用已与其基础 RCW 分离的访问 C# COM 对象

我有一个连接。

这可能是您的问题,您的连接可能无法处理多次打开和关闭,您应该每次都创建一个新连接并使用using语句处理它。

using(OleDbConnection baglanti = new OleDbConnection("Provider=Microsoft.ACE.Oledb.12.0;Data Source=BakimVeritabani.accdb")
using(OleDbCommand komut = new OleDbCommand())
{
    isim = comboBox1.Text;
    yapilacak_is = textBox1.Text.Trim();
    bolum = comboBox2.Text.Trim();
    tarih = monthCalendar1.SelectionRange.Start.ToShortDateString();
    durum = comboBox3.Text;
    int idm = Convert.ToInt32(gelenid);
    baglanti.Open();
    komut.Connection = baglanti;
    komut.CommandText = @"UPDATE Bakim SET [Ad]=@isim, 
                    [Bolum]=@bolum,
                    [Yapilacak_Is]=@yapis,          
                    [Tarih]=@tarihim,
                    [Durum]=@durum 
                    WHERE [Id]=@Id";
    komut.Parameters.AddWithValue("@isim", isim);
    komut.Parameters.AddWithValue("@yapis", yapilacak_is);
    komut.Parameters.AddWithValue("@bolum", bolum);
    komut.Parameters.AddWithValue("@tarih", tarih);
    komut.Parameters.AddWithValue("@durum", durum);
    // Moved after the Cover parameter
    komut.Parameters.AddWithValue("@Id", idm);
    komut.ExecuteNonQuery();
}