SqlTransaction 已完成;它再也无法使用。

try{apc.sqlOpen();trans=apc.conn.BeginTransaction();comm=apc.conn.CreateCommand();com... try
{
apc.sqlOpen();
trans = apc.conn.BeginTransaction();
comm = apc.conn.CreateCommand();
comm.Transaction = trans;
comm.Connection = apc.conn;
comm.CommandText = "update tb_users set Balance = " + (dbSource - (Double.Parse(txtMoney.Text))) + " where CarDID = '" + atmPubClass.strCard + "'";
comm.ExecuteNonQuery();
comm.CommandText = "update tb_users set Balance = " + (dbObject + (Double.Parse(txtMoney.Text))) + " where CarDID = '" + txtMuBiao.Text + "'";
comm.ExecuteNonQuery();
comm.CommandText = "insert tb_transfer (SourceCardID , TargetCardID , Cash ,Balance ,Time) values ('" + atmPubClass.strCard + "','" + txtMuBiao.Text + "'," + txtMoney.Text + "," + (dbSource - (Double.Parse(txtMoney.Text))) + ",getDate())";
comm.ExecuteNonQuery();
trans.Commit();
if (MessageBox.Show(this, "转账操作已经成功执行,是否打印凭条", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.Yes)
{
String stid = "select max(TradeID) as tid from tb_transfer where CardID = '" + atmPubClass.strCard + "'";
SqlCommand cmd = new SqlCommand(stid, apc.conn);
SqlDataReader cdr = cmd.ExecuteReader();
this.Hide();
frm_zhuanReport fzp = new frm_zhuanReport(cdr["tid"].ToString());
fzp.ShowDialog();
}
else
{
this.Hide();
frm_main fm = new frm_main();
fm.ShowDialog();
}
}
}
catch (Exception ex)
{
trans.Rollback();
MessageBox.Show(ex.Message);
}
finally
{
apc.sqlClose();
}
您说的我都已经试过了。
trans.dispose(), trans = null ,关闭conn 再打开。都试过了。
展开
 我来答
锦绣九洲分类垃圾桶
推荐于2017-11-21 · TA获得超过864个赞
知道小有建树答主
回答量:504
采纳率:100%
帮助的人:518万
展开全部
你把catch中的 trans.Rollback();去掉就可以了。 因为前面已经trans.Commit();了,这个表示事物已经结束, 后面再调用当然会出现前面的问题了。
另外不用指明trans.Rollback(),如果有异常的话,事物会自动回滚的。

楼上的,他事物是结束了,但是下面的插入语句并没有用到前面的事物,所以根本不需要再次打开事物的连接
微软专家张海
2009-07-07 · TA获得超过748个赞
知道小有建树答主
回答量:564
采纳率:100%
帮助的人:0
展开全部
到底在哪句报错?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wangziyi129
2009-07-07 · TA获得超过1387个赞
知道小有建树答主
回答量:1492
采纳率:100%
帮助的人:0
展开全部
帮顶+接分
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式