try
{
if (State == 1)
{
sqlcmdRegUser.CommandText = "select * from cussecurity";
sqlcmdRegUser.Connection = mySqlconn;
sqlDaRegUser = new MySqlDataAdapter(sqlcmdRegUser);
sqlDaRegUser.Fill(DsRegUser , "cussecurity");
DataRow row;
DataRow row2;
row =DsRegUser.Tables["cussecurity"].Rows.Add();
。
row["User_Desc"] = UserInfo.Expired ;
MySqlCommandBuilder mycb = new MySqlCommandBuilder(sqlDaRegUser);
sqlDaRegUser.UpdateCommand = mycb.GetUpdateCommand();
sqlDaRegUser.UpdateCommand .Transaction = Tran;
sqlDaRegUser.InsertCommand = mycb.GetInsertCommand();
sqlDaRegUser.InsertCommand.Transaction = Tran;
sqlDaRegUser.Update(DsRegUser,"cussecurity"); sqlcmdRegUser = new MySqlCommand() ;
sqlcmdRegUser.CommandText = "select * from customerreginfor";
sqlcmdRegUser.Connection = mySqlconn;
sqlDaRegUser2 = new MySqlDataAdapter(sqlcmdRegUser);
sqlDaRegUser2.Fill( DsRegUser2 ,"customerreginfor"); row2 = DsRegUser2.Tables["customerreginfor"].Rows.Add();
row2["CustomerID"] = UserInfo.CustomerID;
。。
row2["Zip"] = UserInfo.Zip;
MySqlCommandBuilder mycb1 = new MySqlCommandBuilder(sqlDaRegUser2);
sqlDaRegUser2.UpdateCommand = mycb.GetUpdateCommand();
sqlDaRegUser2.UpdateCommand.Transaction = Tran;
sqlDaRegUser2.InsertCommand = mycb.GetInsertCommand();
sqlDaRegUser2.InsertCommand.Transaction = Tran;
sqlDaRegUser2.Update (DsRegUser2);
Tran.Commit(); }
else
{ i = -1; }
return i; }
catch { Tran.Rollback();
return -1; }
}
我在测试的过程中代码先运行到第一个UPDATE 中,然后在后边的写上一个出错的值,就会直接跳到 Tran.Rollback();可是发现第一个次写到数据库中的数据拼没有取消,请教大家这是哪里出了问题。
{
if (State == 1)
{
sqlcmdRegUser.CommandText = "select * from cussecurity";
sqlcmdRegUser.Connection = mySqlconn;
sqlDaRegUser = new MySqlDataAdapter(sqlcmdRegUser);
sqlDaRegUser.Fill(DsRegUser , "cussecurity");
DataRow row;
DataRow row2;
row =DsRegUser.Tables["cussecurity"].Rows.Add();
。
row["User_Desc"] = UserInfo.Expired ;
MySqlCommandBuilder mycb = new MySqlCommandBuilder(sqlDaRegUser);
sqlDaRegUser.UpdateCommand = mycb.GetUpdateCommand();
sqlDaRegUser.UpdateCommand .Transaction = Tran;
sqlDaRegUser.InsertCommand = mycb.GetInsertCommand();
sqlDaRegUser.InsertCommand.Transaction = Tran;
sqlDaRegUser.Update(DsRegUser,"cussecurity"); sqlcmdRegUser = new MySqlCommand() ;
sqlcmdRegUser.CommandText = "select * from customerreginfor";
sqlcmdRegUser.Connection = mySqlconn;
sqlDaRegUser2 = new MySqlDataAdapter(sqlcmdRegUser);
sqlDaRegUser2.Fill( DsRegUser2 ,"customerreginfor"); row2 = DsRegUser2.Tables["customerreginfor"].Rows.Add();
row2["CustomerID"] = UserInfo.CustomerID;
。。
row2["Zip"] = UserInfo.Zip;
MySqlCommandBuilder mycb1 = new MySqlCommandBuilder(sqlDaRegUser2);
sqlDaRegUser2.UpdateCommand = mycb.GetUpdateCommand();
sqlDaRegUser2.UpdateCommand.Transaction = Tran;
sqlDaRegUser2.InsertCommand = mycb.GetInsertCommand();
sqlDaRegUser2.InsertCommand.Transaction = Tran;
sqlDaRegUser2.Update (DsRegUser2);
Tran.Commit(); }
else
{ i = -1; }
return i; }
catch { Tran.Rollback();
return -1; }
}
我在测试的过程中代码先运行到第一个UPDATE 中,然后在后边的写上一个出错的值,就会直接跳到 Tran.Rollback();可是发现第一个次写到数据库中的数据拼没有取消,请教大家这是哪里出了问题。
解决方案 »
- DXperience-9[1].3.2中的VGridControl使数据(原来是横向的)变成纵向
- .net怎么获取到系统日志?
- C# 金山词霸2005 XdictGrb.dll 开发屏幕取词
- 关于DataSet生成的xml中的日期字段再绑定到dataGridView的格式问题
- 关于自动接收淘宝消息,淘宝对话框接收消息的控件句柄。
- 怎么把这段json反序列化成C#类啊?
- 关于关闭窗体的问题
- 有没有三个状态值的TreeView控件
- 在.net里怎么样解决blob类型的参数长度不能超过32k的问题?
- C# 获取扫描仪序列号
- winform datatable问题
- 如何 在函数中调用菜单的click时间
sqlDaRegUser2.InsertCommand.Transaction = Tran;
你的事务开始在哪里开始的?
少了个语句吧
sqlDaRegUser.Update(DsRegUser,"cussecurity");
sqlDaRegUser2.Update (DsRegUser2);
这两句话应该放到一起。
sqlDaRegUser.InsertCommand.Transaction = Tran;
sqlDaRegUser.Update(DsRegUser,"cussecurity");都已经提交了。在把一个操作放到事务里头,有用么?
{
int i;
i = -1;
MySqlCommand sqlcmdRegUser = new MySqlCommand();
MySqlDataAdapter sqlDaRegUser;
MySqlDataAdapter sqlDaRegUser2;
DataSet DsRegUser = new DataSet();
DataSet DsRegUser2 = new DataSet();
MySqlTransaction Tran = mySqlconn.BeginTransaction();
try
{
if (State == 1)
{
我有开始的,就在TRY上边,我没有贴出来。