我正在尝试从火鸟数据库中获取一个充满数据的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
应用于一次性对象,以确保正确清理资源。