gpt4 book ai didi

c# - 为什么我的事务不会对数据库进行更改?

转载 作者:行者123 更新时间:2023-12-01 00:43:10 25 4
gpt4 key购买 nike

我正在编写一个需要更新 MySQL 数据库的应用程序。我现在正在做的是从表中删除行,然后插入新数据,因此我正在使用事务来确保我获得所有更改或没有更改。但是,什么都没有改变,我不知道为什么,因为没有抛出异常。

这是交易的代码片段:

using(var conn = new MySqlConnection(connectionString))
{
conn.Open();
// Use transaction to get all or nothing
using(var trans = conn.BeginTransaction())
{
try
{
using(MySqlCommand cmd = new MySqlCommand())
{
// Clear the current summary entries
cmd.Connection = conn;
cmd.CommandText = "DELETE FROM summaryTable WHERE projectID = @Id";
cmd.Parameters.AddWithValue("@Id", id);
cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
}

// Write new entries
foreach(SummaryObject record in summaryList)
{
using(MySqlCommand cmd = new MySqlCommand())
{
cmd.Connection = conn;
cmd.CommandText = "INSERT INTO summaryTable VALUES(/*All values here*/)";
// Add With Value statements
cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
}
}
}
catch(MySqlException e)
{
try
{
// try roll back
}
catch(MySqlException e1)
{
// Catch rollback fail
}
}
}
conn.Close();
}

我已经缩短了一些东西,但我知道 SQL 语句是有效的,因为我在将其更改为事务之前对它们进行了较早的测试。

最佳答案

You must explicitly commit or roll back the transaction using the Commit or Rollback method.Source

因此,把

trans.Commit();

在 try block 的末尾。

关于c# - 为什么我的事务不会对数据库进行更改?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26846026/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com