110,538
社区成员
发帖
与我相关
我的任务
分享
private void HG()
{
OracleConnection hgconn = new OracleConnection(oraclstr);
hgconn.Open();
OracleCommand hgcomm = new OracleCommand();
hgcomm.Connection = hgconn;
while (GuanBi)
{
OracleTransaction OT = hgconn.BeginTransaction();//创建事务对象
try
{
hgcomm.CommandText = "insert into ZSH_CS (ID,NAME) values (1,'圣诞节')";
hgcomm.ExecuteNonQuery();
hgcomm.CommandText = "insert into ZSH_CS (ID,NAME) values (2,'万圣节')";//断点到这句,禁用本地连接
hgcomm.ExecuteNonQuery();
hgcomm.CommandText = "insert into ZSH_CS (ID,NAME) values (3,'元旦')";
hgcomm.ExecuteNonQuery();
OT.Commit();
Thread.Sleep(1000);
}
catch
{
hgzs1.Set();//通知另一个线程尝试连接数据库
hgzs.WaitOne();//阻塞本线程
OT.Rollback();//回滚,这里报错
hgconn.Close();
hgconn.Open();
//OT.Rollback();//回滚,写这里也报错
}
}
}
using(var hgconn=.......)
using(var OT = hgconn.BeginTransaction())
{
................
}
不要在这里写什么 try...cach。当出现错误的时候,会自动调用hgconn.Dispose() 和 OT.Dispose()。