我正在尝试从firebird数据库中获取一个DataTable
数据。
但它在da.Fill(ds, "Result");
错误消息是:
System.InvalidOperationException:当分配给命令的Connection对象处于挂起的本地事务中时,Execute要求Command对象具有Transaction对象。 Command的Transaction属性尚未初始化。
try
{
FbTransaction transaction = Fbconnection.BeginTransaction();
FbCommand command = new FbCommand(Fbsql, Fbconnection, transaction);
FbDataAdapter da = new FbDataAdapter(Fbsql, Fbconnection);
DataSet ds = new DataSet();
da.Fill(ds, "Result");
DataTable dt = ds.Tables["Result"];
this.CloseConnection();
return dt;
}
对于如何使这项工作有任何帮助表示赞赏。
答案 0 :(得分:1)
仔细查看代码,您将创建一个FbCommand
和一个您实际未使用的事务。现在,当您执行FbDataAdapter
时,Firebird .NET提供程序会注意到连接已在使用事务并抛出异常。
您需要将代码更改为:
FbTransaction transaction = Fbconnection.BeginTransaction();
FbCommand command = new FbCommand(Fbsql, Fbconnection, transaction);
FbDataAdapter da = new FbDataAdapter(command);
或者不使用明确的单独交易:
FbDataAdapter da = new FbDataAdapter(Fbsql, Fbconnection);
BTW:我强烈建议您将using
应用于一次性对象,以确保正确清理资源。