C# Mysql中多个查询之间是否可以回滚事务,一个更新查询可以回滚0行?

C# Mysql中多个查询之间是否可以回滚事务,一个更新查询可以回滚0行?,c#,mysql,C#,Mysql,我想在C#windows应用程序的回滚事务中更新并插入多个Mysql查询。我希望在至少一个查询由于其条件变为false而无法更新行时回滚 我听说回滚只有在事务由于突然错误而失败时才会发生 private void btnCheckin_Click(object sender, EventArgs e) { Dictionary<int, string> queryList = new Dictionary<int, string>();

我想在C#windows应用程序的回滚事务中更新并插入多个Mysql查询。我希望在至少一个查询由于其条件变为false而无法更新行时回滚

我听说回滚只有在事务由于突然错误而失败时才会发生

private void btnCheckin_Click(object sender, EventArgs e)
        {
        Dictionary<int, string> queryList = new Dictionary<int, string>();

        queryList.Add(0, "INSERT INTO `booked_room`(`bok_id`, `cat_id`, `rom_no`) VALUES (1,2,3)");
        queryList.Add(1, "UPDATE `room` SET `rom_stat`=1  WHERE `rom_stat`=0 AND `rom_no`=3");

if (rollbkUpdate(queryList))MessageBox.Show("Success");
else MessageBox.Show("Failed");

    }




public bool rollbkUpdate(Dictionary<int,string> query)
        {
            MySqlConnection conn= ConnString();
            conn.Open();
            MySqlCommand comm = conn.CreateCommand();
            MySqlTransaction startTrans = conn.BeginTransaction();
            comm.Connection = conn;
            comm.Transaction = startTrans;
            int i = 0;            
            try
            {
                for (i = 0; i < query.Count; i++)
                {
                    if (query.ContainsKey(i))
                    {
                        comm.CommandText = query[i];
                        comm.ExecuteNonQuery();                        
                    }
                }
                startTrans.Commit();
                if (i == query.Count) return true;
                else return false;
            }
            catch (Exception)
            {
                try
                {
                    startTrans.Rollback();
                    return false;
                }
                catch (Exception)
                {
                    return false;
                }
            }
            finally
            {
                conn.Close();
            }
        }
private void btnCheckin\u单击(对象发送者,事件参数e)
{
Dictionary queryList=new Dictionary();
添加(0,“插入到`预订房间'(`bok\U id`、`cat\U id`、`rom\U no`)值(1,2,3)”;
添加(1,“更新`room`SET`rom_stat`=1,其中`rom_stat`=0和`rom_no`=3”);
if(rollbkUpdate(queryList))MessageBox.Show(“Success”);
else MessageBox.Show(“失败”);
}
公共bool更新(字典查询)
{
MySqlConnection conn=ConnString();
conn.Open();
MySqlCommand comm=conn.CreateCommand();
MySqlTransaction startTrans=conn.BeginTransaction();
通信连接=连接;
通信事务=启动事务;
int i=0;
尝试
{
对于(i=0;i
你可以发布一些代码吗?是的,你可以。。。您需要依赖于
comm.ExecuteNonQuery()
结果-读取文档返回的内容您的意思是我必须检查(comm.ExecuteNonQuery()<1){startTrans.Rollback();}