zoukankan      html  css  js  c++  java
  • C# 用批处理执行事务

     有时候写一些操作数据库是,要执行多条Sql语句,不得不用事务处理。

    用程式方法:

    public static bool ExecuteSqlTransaction(ArrayList list)
    {
    bool yes = false;
    using (SqlConnection con = new SqlConnection(_ConnectString))
    {
    con.Open();
    using (SqlTransaction trans = con.BeginTransaction())
    {
    try
    {
    for (int i = 0; i < list.Count; i++)
    {
    SQLHelper.ExecuteNonQuery(trans, CommandType.Text, list[i].ToString());
    }

    if (trans != null)
    {
    trans.Commit();
    yes= true;
    }

    }
    catch (Exception ex)
    {
    trans.Rollback();
    yes = false;
    throw ex;
    }
    finally
    {

    con.Close();
    }

    }

    }

    return yes;

    }

    这个方法很简单,但效率不高。

    后来多方思考用C# 批处理的方法,更好用。

    ArrayList Sqllist = new ArrayList();

    string strCreateProc = "";

                        strCreateProc = strCreateProc + "  begin tran test \n ";

                        for (int s = 0; s < Sqllist.Count; s++)

                        {

                            strCreateProc = strCreateProc + "\n       " + Sqllist[s].ToString() + " ;";

                        }

                        strCreateProc = strCreateProc + " \n         if @@error<>0 \n           begin \n            rollback tran test \n           end  \n           else \n            begin \n            commit tran test \n            end  ";

                       

                        string reSql = strCreateProc;

                        int ok = SQLHelper.ExecuteNonQuery(_ConnectString, CommandType.Text, reSql);

  • 相关阅读:
    python操作adb代码
    android sdcard 权限管理策略研究
    glom模块的使用(二)
    爬虫错误汇总
    微博展开全文获取
    数据清洗之微博内容清洗
    Esxi5-管理平台vcenter5.0_数据库迁移流程
    migrating-vcenter-database-express-to-sql-2008-r2
    Centos生成SSL证书的步骤
    找到一篇关于2.4/5G信道的新介绍
  • 原文地址:https://www.cnblogs.com/aran/p/2917413.html
Copyright © 2011-2022 走看看