如果需要一次性处理多条SQL语句,可以使用SQL中的事务,下面就将为您讲解SQL中事务的写法以及调用的方法,供您参考。

下面就将为您介绍如何使用事务一次处理多条SQL语句的方法,包括SQL中事务的写法以及调用的方法供您参考,希望对您学习SQL语句的执行能够有所帮助。

教您用事务一次处理多条SQL语句(只有多条sql语句才能组成事务)  SQL 语句 事务 第1张

执行一个操作时,要同时修改多张表里的数据,并且每条数据都必须操作成功,才算执行成功,为了防止有些数据操作失败,有些成功,而造成的数据错乱,我们要使用事务。

事务就是:只有所有操作都成功则成功,只要有一条数据操作失败,则回滚。

后台写事务:

/// <summary>
/// 执行多条SQL语句,实现数据库事务。
/// </summary> access数据库
/// <param name="SQLStringList">多条SQL语句</param>
public static void ExecuteSqlTran(List<string> SQLStringList)
{
using (OleDbConnection conn = new OleDbConnection(SqlHelper.ConString))
{
conn.Open();
OleDbCommand cmd = new OleDbCommand();
cmd.Connection = conn;
OleDbTransaction tx = conn.BeginTransaction();
cmd.Transaction = tx;
try
{
for (int n = 0; n < SQLStringList.Count; n++)
{
string strSQL = SQLStringList[n].ToString();
if (strsql.Trim().Length > 1)
{
cmd.CommandText = strsql;
cmd.ExecuteNonQuery();
}
}
tx.Commit();
}
catch (System.Data.OleDb.OleDbException E)
{
tx.Rollback();
throw new Exception(E.Message);
}
}
}

/// <summary>
/// 执行多条SQL语句,实现数据库事务。
/// </summary>sql2000数据库
/// <param name="SQLStringList">多条SQL语句</param>
public static void ExecuteSqlTran(List<string> SQLStringList)
{
using (SqlConnection conn = new SqlConnection(SqlHelper.ConString))
{
conn.Open();
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
SqlTransaction tx = conn.BeginTransaction();
cmd.Transaction = tx;
try
{
for (int n = 0; n < SQLStringList.Count; n++)
{
string strsql = SQLStringList[n].ToString();
if (strsql.Trim().Length > 1)
{
cmd.CommandText = strsql;
cmd.ExecuteNonQuery();
}
}
tx.Commit();
}
catch (System.Data.SqlClient.SqlException E)
{
tx.Rollback();
throw new Exception(E.Message);
}
}
}

前台调用:

try
{
//1.查出会员余额
decimal usermoney = SqlDal.EntityUserinfo.GetModel(int.Parse(cookieUserID)).Money;
//2.修改余额
decimal Zmoney = usermoney + moAD.Commission;
//写SQL语句
List<string> SQLStringList = new List<string>();
string clickSql = "insert into [user] (name,age)values('" + 小名 + "','“+4岁+”')";
string userSql = "update [class] set [name]='" + 幼儿园 + "' where id=" + 2 + " ";
SQLStringList.Add(clickSql);
SQLStringList.Add(userSql);
SqlDal.SqlHelper.ExecuteSqlTran(SQLStringList);

//数据库操作成功
//提示
CommonClass.Xmls xmls1 = new CommonClass.Xmls();
string path1 = CommonClass.Unit.GetMapPath(@"/Admin/Configs/SysSettingInfo.config");
string ClickTishi = xmls1.GetXmlNode(path1, "SysSettingInfo/ClickTishi");
//替换字符
ClickTishi = ClickTishi.Replace("[$]", moAD.Commission.ToString("0.00"));
context.Response.Write(ClickTishi); //输出
}
catch (Exception ex)
{
//Response.Write(ex.Message);
context.Response.Write("操作失败!" + ex.Message); //输出
}

【编辑推荐】

通过执行多条SQL语句实现数据库事务

存储过程优化的SQL语句写法

使用存储过程检查引起死锁的SQL语句及进程

SQL语句中CASE WHEN的使用实例

教您不带参数的SQL语句执行的方法

转载请说明出处
知优网 » 教您用事务一次处理多条SQL语句(只有多条sql语句才能组成事务)

发表评论

您需要后才能发表评论