c# - 回滚在 C# 中不起作用

标签 c# mysql odbc

我正在使用 C# 和 MYSQL,但回滚不起作用。我有三个删除语句,其中表第三个删除 SQL 不存在,并且在 catch 中我正在执行回滚,但它只发生在第三个

         string id = dataGridView1.Rows[index].Cells[0].Value.ToString();
         string strDelete = "DELETE FROM user WHERE id = " + id;
         OdbcTransaction transaction = null;
         OdbcCommand cmd = new OdbcCommand();
         cmd.Connection = Singleton.Instance.GetConnection();
         transaction = Singleton.Instance.GetConnection().BeginTransaction();
         cmd.Transaction = transaction;
         try
         {
             cmd.CommandText = strDelete;
             cmd.ExecuteNonQuery();
             // delete from userdata
             strDelete = "DELETE FROM userdata WHERE id = " + id;
             cmd.CommandText = strDelete;
             cmd.ExecuteNonQuery();
             // delete from usersystem
             strDelete = "DELETE FROM usersystem WHERE id = " + id;
             cmd.CommandText = strDelete;
             cmd.ExecuteNonQuery();
             // delete from user systemstatus. here table don't exists, will throw 
             // exception 
             strDelete = "DELETE FROM usersystemstatusAAAA WHERE id = " + id;
             cmd.CommandText = strDelete;
             cmd.ExecuteNonQuery();
             transaction.Commit();
         }
         catch (Exception ex)
         {
             // Attempt to roll back the transaction.
             try
             {
                 transaction.Rollback();
             }
             catch (Exception ex2)
             {
                 Console.WriteLine("  Message: {0}", ex2.Message);
             }

         }

这里前两个 SQL 语句被提交,同时假设要回滚。

最佳答案

您需要检查您的 MySQL 数据库的存储类型。并非所有存储都是事务性的。例如 InnoDB 有事务而 MyISAM 没有。

MyISAM 与 InnoDB MyISAM versus InnoDB

关于c# - 回滚在 C# 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9015989/

相关文章:

c# - 从 XElement 中删除属性

c# - DefaultTraceListener 的性能影响

c# - 如何正确处理 LinqToSql 类的 System.Nullable<T> 字段?

mysql - Code First 带前缀的主键自动递增

sql - Mysql多对多计数和数学

java - ODBC 到 JDBC 数据类型的映射

odbc - 如何安装 DB2 ODBC 或 OLEDB 驱动程序

c# - UWP 应用程序中的自定义主题

php - 在 MySQL 中,通过对 JSON 列执行联接从两个表中获取数据时出现问题

sql - 记录 ODBC、SQL Server