![](https://iknow-base.cdn.bcebos.com/lxb/notice.png)
This SqlTransaction has completed; it is no longer usable。 C# 报出的错误,不解,望指教
展开全部
This Transaction has completed; it is no longer usable根源分析
1 链接对象没有打开Transaction
如:XXXTransaction transaction=conn.BeginXXXTransaction();
2 在Command对象中未设置Transaction
可以在new XXXCommand(sqlStr,conn,transaction),也可以用XXXCommand对象的引用打开
com.XXXTransaction=transaction;
3 获取在本conn连接中参入了其他conn
例如:
OleDbConnection conn = DBUtilFactory.getConnection("Access");
updateStr = sb.ToString();
updateStr = updateStr.Substring(0, updateStr.LastIndexOf(",")) + " where id=" + id;
OleDbCommand com = new OleDbCommand(updateStr,conn,ts);
com.ExecuteNonQuery();
ts.Commit();
DataTable table = accessOper.sendData(conn,tableName, id);
dt.Merge(table, false, MissingSchemaAction.Ignore);
count++;
在调用accessOper.sendData()时,两次数据库操作的conn(链接对象)是同一个。
1 链接对象没有打开Transaction
如:XXXTransaction transaction=conn.BeginXXXTransaction();
2 在Command对象中未设置Transaction
可以在new XXXCommand(sqlStr,conn,transaction),也可以用XXXCommand对象的引用打开
com.XXXTransaction=transaction;
3 获取在本conn连接中参入了其他conn
例如:
OleDbConnection conn = DBUtilFactory.getConnection("Access");
updateStr = sb.ToString();
updateStr = updateStr.Substring(0, updateStr.LastIndexOf(",")) + " where id=" + id;
OleDbCommand com = new OleDbCommand(updateStr,conn,ts);
com.ExecuteNonQuery();
ts.Commit();
DataTable table = accessOper.sendData(conn,tableName, id);
dt.Merge(table, false, MissingSchemaAction.Ignore);
count++;
在调用accessOper.sendData()时,两次数据库操作的conn(链接对象)是同一个。
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
此SQL交易已经完成,它已不再可用
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
it is no longer usable 错了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询