无效的游标状态错误C#DB2

时间:2017-10-11 14:28:58

标签: c# ado.net db2

我使用C#ADO.NET OleDb对DB2数据库运行标准查询,并使用语句和get System.Data.OleDb.OleDbException(0x80004005):CLI0115E无效的游标状态。 SQLSTATE = 24000 当我为每个OleDb对象包含dispose方法时,查询将运行。 为什么没有Dispose方法会失败?从我研究的所有内容中,u​​sing语句应该为我处理对象。我使用的是.NET 4.5.1

using (OleDbConnection conn = DBConn.BIPSConn)
{
    using (OleDbCommand cmd = new OleDbCommand(query, conn))
    {
        using (OleDbDataReader rdr = cmd.ExecuteReader())
        {
            while (rdr.Read())
            {
               string orderNumber = rdr.GetString(0).Trim();
               string originCode = rdr.GetString(1).Trim();
               string destinationCode = rdr.GetString(3).Trim();

               Record record = new Record(orderNumber, originCode, destinationCode);
               RecordList.Add(record);                                             
           }
           // for unknown reasons, without these dispose methods we get an Invalid Cursor State error
           rdr.Dispose();
        }
        cmd.Dispose();
    } 
    conn.Dispose();
}

1 个答案:

答案 0 :(得分:0)

你有一个使用块 - 你不想调用你想要调用Close()的Dispose()。使用块将负责处理。添加一个对Close的调用。