.NET高性能编码之事务_.NET_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > .NET > .NET高性能编码之事务

.NET高性能编码之事务

 2017/9/15 13:26:51  梦里花开梦醒花落  程序员俱乐部  我要评论(0)
  • 摘要:最近在做一些EO方面的系统开发,由于涉及到对数据库的操作量比较大,用ADO.NET和数据库进行连接交互的时候,难免会对程序的性能产生影响。比如说我们现在要对九个SQL语句进行数据库操作,并且每个语句的执行是有顺序限制的,如果我们一次一个一个的与数据库进行交互,则需要和数据库建立九次连接,这样对系统性能的损耗太大,那么该如何实现呢。如下:1、将要执行的九条SQL语句依次推入List集合中:List<string>sQLStringList=newList<string>(
  • 标签:.net net 编码

最近在做一些EO方面的系统开发,由于涉及到对数据库的操作量比较大,用ADO.NET和数据库进行连接交互的时候,难免会对程序的性能产生影响。比如说我们现在要对九个SQL语句进行数据库操作,并且每个语句的执行是有顺序限制的,如果我们一次一个一个的与数据库进行交互,则需要和数据库建立九次连接,这样对系统性能的损耗太大,那么该如何实现呢。如下:

 

1、将要执行的九条SQL语句依次推入List集合中:

List<string> sQLStringList = new List<string>();

sQLStringList.Add("select * from table1");

sQLStringList.Add("select * from table2");

sQLStringList.Add("select * from table3");

sQLStringList.Add("select * from table4");

sQLStringList.Add("select * from table5");

sQLStringList.Add("delete from table1");

sQLStringList.Add("delete from table2");

sQLStringList.Add("delete from table3");

sQLStringList.Add("delete from table4");

2、利用事物实现与数据库只建立一次连接,并且实现了如果都成功了一起提交,哪怕有一条SQL执行出错了,都不会提交(要么都提交,要么都失败)。如下:

public static bool ExecuteSqlTran(List<string> SQLStringList)
{
       bool flag;
       try
       {
             using (SqlConnection connection = new SqlConnection(strConnection))
             {
                    connection.Open();
                   SqlCommand command = new SqlCommand
                   {
                       Connection = connection
                   };
                  SqlTransaction transaction = connection.BeginTransaction();
                  command.Transaction = transaction;
                  try
                  {
                       for (int i = 0; i < SQLStringList.Count; i++)
                       {
                             string str = SQLStringList[i].ToString();
                             if (str.Trim().Length > 1)
                             {
                                 command.CommandText = str;
                                 command.ExecuteNonQuery();
                             }
                       }
                       transaction.Commit();
                       flag = true;
                  }
                  catch (SqlException)
                  {
                         transaction.Rollback();
                         flag = false;
                  }
            }
      }
      catch (Exception)
      {
            flag = false;
      }
      return flag;
}

发表评论
用户名: 匿名