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



我正在尝试从火鸟数据库中获取一个充满数据的DataTable。但它在这一点上失败了da.Fill(ds, "Result");

错误消息是:

System.InvalidOperationException: 当分配给命令的连接对象位于挂起的本地事务中时,执行要求命令对象具有事务对象。命令的事务属性尚未初始化。

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;
}
任何

关于如何使其工作不胜感激的帮助。

仔细查看代码,您正在创建一个实际上未使用的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);

顺便说一句:我强烈建议您将using应用于一次性对象,以确保正确清理资源。

最新更新