【问题标题】:How to check and delete if mysql insert query is failed then delete inserted data in c#如果mysql插入查询失败,如何检查和删除然后在c#中删除插入的数据
【发布时间】:2014-09-30 20:16:07
【问题描述】:

我有一个用户点击保存按钮的项目:

1) INSERT 查询将数据插入表 1 中的 MySQL DB。 2) Update Query 更新表 2 中的 1 个字段值。

如果第 1 步失败,则第 2 步需要停止,第 1 步需要反转。这意味着需要一起完成步骤 1 和步骤 2 才能完成交易。否则事务需要失败。

有什么帮助吗?

【问题讨论】:

标签: c# mysql


【解决方案1】:

你可以这样做

MySqlConnection con = new MySqlConnection( ... );

con.Open();

MySqlTransaction tx = con.BeginTransaction();

MySqlCommand cmd = new MySqlCommand( "", con );

cmd.Transaction = tx;

try
{

   cmd.CommandText = "INSERT query insert Data into MySQL DB in Table 1";

   cmd.ExecuteNonQuery();

   cmd.CommandText = "Update Query update 1 fields value in Table 2";

   cmd.ExecuteNonQuery();

   tx.Commit();

}
catch( MySqlException e )
{

  // TODO: report error?

  tx.Rollback();

}

然后,如果第一次插入查询失败,您将捕获错误并从那里回滚(以中止事务) 或者,如果第二个查询失败,您再次回滚(以撤消第一个查询的更改)。 否则提交所有内容。

请记住为您的表使用 Innodb 引擎,(否则事务在 MyISAM 中不起作用)。

【讨论】:

    【解决方案2】:

    您实际上是在给出交易的确切定义:

    在需要执行两个或多个 SQL 命令的情况下使用转换,这样如果任何一个语句失败,那么其他语句将无法更改数据库。

    欲了解更多信息,请参阅此链接:http://www.codeproject.com/Articles/10223/Using-Transactions-in-ADO-NET

    希望对你有帮助

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-08
      • 1970-01-01
      • 2011-11-27
      • 2013-01-30
      相关资源
      最近更新 更多