【发布时间】:2010-11-10 19:54:34
【问题描述】:
我正在编写一个导入例程,并希望在发生错误时整个导入失败。我正在使用设置为 InnoDB 的 MySQL 数据库和一个 asp 页面来驱动导入。我想启动一个事务,如果发生错误则回滚,如果成功则提交。我的问题是,当第 4 行发生错误时,前 3 个条目保存在数据库中,而不是回滚。
这是我的代码示例:-
MySqlConnection conn = new MySqlConnection(connStr);
conn.Open();
MySqlCommand cmd = new MySqlCommand();
MySqlTransaction tran = conn.BeginTransaction();
cmd.Connection = conn;
cmd.Transaction = tran;
int ErrorCount = 0;
do while read from file{
try{
if (fail validate){
ErrorCount ++;
break;
}
run store procedure 1 which does insert
run store procedure 2 which does insert
}
catch (exception e){
ErrorCount ++;
break;
}
}
if (ErrorCount == 0){
tran.Commit();
}
else{
tran.RollBack();
}
if (conn != null) conn.Close();
我已阅读有关自动提交以及如何在数据库中设置它的信息。唯一的问题是,如果将其设置为关闭,它将如何影响数据库中尚未设置事务的所有其他插入。我也看不到如何从 c# 设置自动提交打开或关闭。
有人知道如何让我的交易回滚吗?
谢谢 谢丽尔
【问题讨论】:
标签: c# mysql transactions