使用FbDataAdapter的C#Firebird填充数据表失败

时间:2014-01-01 12:59:02

标签: c# datatable firebird

我正在尝试从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;
}

对于如何使这项工作有任何帮助表示赞赏。

1 个答案:

答案 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应用于一次性对象,以确保正确清理资源。