c# 下访问mysql使用事务处理的问题

publicstaticboolExecuteTransaction(stringconnectionString,CommandTypecmdType,List<str... public static bool ExecuteTransaction(string connectionString, CommandType cmdType, List<string> cmdTexts)
{
MySqlConnection myConnection = new MySqlConnection(connectionString); //get the connection object
myConnection.Open(); //open the connection
MySqlTransaction myTrans = (MySqlTransaction)myConnection.BeginTransaction(); //begin a trascation
MySqlCommand cmd = new MySqlCommand();
cmd.Connection = myConnection;
cmd.CommandType = CommandType.Text;
cmd.Transaction = myTrans;

try
{
foreach (string i in cmdTexts)
{
cmd.CommandText = i;
cmd.ExecuteNonQuery();

}

myTrans.Commit();
}
catch
{
myTrans.Rollback();
return false;
}
finally
{
myConnection.Close();
}
return true;
}
使用这个方法执行mysql的语句,虽然遇到问题,可以执行rollback,但是之前插入的数据,依然已经写入。
调用方式为:

List<string> list = new List<string>();
string sql = "insert into test(name)values(1)";
list.Add(sql);
sql = "insert into test(name)values(aa)";
list.Add(sql);
mysqlDB.MySqlHelper.ExecuteTransaction(conn, System.Data.CommandType.Text, list);
展开
 我来答
浩小宇
2015-07-31 · TA获得超过121个赞
知道小有建树答主
回答量:264
采纳率:0%
帮助的人:96.6万
展开全部
看看数据库的数据库引擎是不是innerdb
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式