【问题标题】:OleDbCommand in Using block: COM object that has been separated from its underlying RCW cannot be used使用块中的 OleDbCommand:无法使用已与其底层 RCW 分离的 COM 对象
【发布时间】:2017-07-11 22:07:58
【问题描述】:

我收到错误“System.Runtime.InteropServices.InvalidComObjectException: 'COM 对象无法使用已与其底层 RCW 分离。'”仅当我在 using 块中执行 OleDbCommand 对象时使用 parameters

using (OleDbCommand comm = new OleDbCommand())
        {
            comm.Connection = conn;
            comm.CommandType = CommandType.Text;
            string txt = "SELECT* FROM [ListForGroup] WHERE [email] = @email";
            comm.Parameters.Add("@email", OleDbType.VarWChar).Value = userEmail;
            comm.CommandText = txt;
            conn.Open();
            OleDbDataReader reader = comm.ExecuteReader();
            List<ListForGroups> list = returnLists(reader);
            conn.Close();
            cmbSelectList.DataSource = list;
            cmbSelectList.DisplayMember = "listName";
            cmbSelectList.ValueMember = "listForGroupsID";
        }

有谁知道原因。我可以解决它以使用OleDbCommand 对象和CommandText 而没有parameters 但我读到这是个坏主意。我想在using 块中执行此操作,以确保所有资源都将被释放。

【问题讨论】:

    标签: c# database exception using comobject


    【解决方案1】:

    我解决了这个问题

    using (OleDbConnection conn = new OleDbConnection(connString))
        {
            OleDbCommand comm = new OleDbCommand();
            comm.Connection = conn;
            comm.CommandType = CommandType.Text;
            string txt = "SELECT* FROM [ListForGroup] WHERE [email] = @email";
            comm.Parameters.Add("@email", OleDbType.VarWChar).Value = userEmail;
            comm.CommandText = txt;
            conn.Open();
            OleDbDataReader reader = comm.ExecuteReader();
            List<ListForGroups> list = returnLists(reader);
    
            cmbSelectList.DataSource = list;
            cmbSelectList.DisplayMember = "listName";
            cmbSelectList.ValueMember = "listForGroupsID";
        }
    

    我不知道为什么我没有在using 旁边的括号中创建OleDbConnection。另一种解决方法是在using 块之后关闭connection

    【讨论】:

      猜你喜欢
      • 2011-11-21
      • 2012-04-27
      • 2011-07-03
      • 1970-01-01
      • 1970-01-01
      • 2022-08-09
      • 1970-01-01
      • 2012-09-17
      • 2011-07-15
      相关资源
      最近更新 更多