IBM Informix ODBC 驱动程序 C# - 游标先前已被释放且不可用
IBM Informix ODBC driver C# - The cursor has been previously released and is unavailable
正在尝试使用数据库(数据库名称)切换数据库;查询,然后在两个单独的查询中对该数据库执行查询。
但是,我得到这个错误:游标先前已被释放,不可用。这是什么意思?
代码如下:
using (OdbcCommand command = new OdbcCommand(null, odbcConnection))
{
if (switchDBName != null)
{
command.CommandText = "Database " + switchDBName + ";";
command.ExecuteNonQuery();
Console.WriteLine("Switched to database: " + switchDBName + " Successfully.");
}
command.CommandTimeout = 0;
command.CommandText = query;
using (OdbcDataReader datareader = command.ExecuteReader())
{
DataTable resultDT = new DataTable();
resultDT.Load(datareader);
Console.WriteLine("ExecuteODBCQuery -- Finished. There are " + resultDT.Rows.Count + " rows.");
return resultDT;
}
}
如果我的逻辑正确:
- 您有两个不同的数据库连接;
- 您使用一个连接创建了一个基于游标的语句;
- 你切换到另一个数据库连接;
- 您收到一条错误消息,指出游标在当前连接上不可用
- 尽管错误消息中的措辞并不完全合适。
准备好的语句或基于游标的语句与连接相关联。相同的语句将不适用于另一个连接;您必须为每个数据库连接重新创建游标或准备好的语句。
您必须知道每个准备好的语句或基于游标的语句使用了哪个连接。您可以在使用之间切换连接,但是当您尝试使用语句时,连接必须与准备时使用的连接相同。
正在尝试使用数据库(数据库名称)切换数据库;查询,然后在两个单独的查询中对该数据库执行查询。
但是,我得到这个错误:游标先前已被释放,不可用。这是什么意思?
代码如下:
using (OdbcCommand command = new OdbcCommand(null, odbcConnection))
{
if (switchDBName != null)
{
command.CommandText = "Database " + switchDBName + ";";
command.ExecuteNonQuery();
Console.WriteLine("Switched to database: " + switchDBName + " Successfully.");
}
command.CommandTimeout = 0;
command.CommandText = query;
using (OdbcDataReader datareader = command.ExecuteReader())
{
DataTable resultDT = new DataTable();
resultDT.Load(datareader);
Console.WriteLine("ExecuteODBCQuery -- Finished. There are " + resultDT.Rows.Count + " rows.");
return resultDT;
}
}
如果我的逻辑正确:
- 您有两个不同的数据库连接;
- 您使用一个连接创建了一个基于游标的语句;
- 你切换到另一个数据库连接;
- 您收到一条错误消息,指出游标在当前连接上不可用
- 尽管错误消息中的措辞并不完全合适。
准备好的语句或基于游标的语句与连接相关联。相同的语句将不适用于另一个连接;您必须为每个数据库连接重新创建游标或准备好的语句。
您必须知道每个准备好的语句或基于游标的语句使用了哪个连接。您可以在使用之间切换连接,但是当您尝试使用语句时,连接必须与准备时使用的连接相同。