我使用C#ADO.NET OleDb对DB2数据库运行标准查询,并使用语句和get System.Data.OleDb.OleDbException(0x80004005):CLI0115E无效的游标状态。 SQLSTATE = 24000 当我为每个OleDb对象包含dispose方法时,查询将运行。 为什么没有Dispose方法会失败?从我研究的所有内容中,using语句应该为我处理对象。我使用的是.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();
}
答案 0 :(得分:0)
你有一个使用块 - 你不想调用你想要调用Close()的Dispose()。使用块将负责处理。添加一个对Close的调用。