zoukankan      html  css  js  c++  java
  • 使用事务一次处理多条SQL语句

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

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

    后台写事务:

            /// <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); //输出
    }

    http://hi.baidu.com/solo_liang/blog/item/cde8ff012c0aed034bfb51a9.html

  • 相关阅读:
    Win7下搭建svn服务与客户端的使用
    八皇后问题
    python开发常见应用第一卷(OS遍历文件并存储文件路径到数据库)
    python3下scrapy爬虫(第十四卷:scrapy+scrapy_redis+scrapyd打造分布式爬虫之执行)
    python3下scrapy爬虫(第十三卷:scrapy+scrapy_redis+scrapyd打造分布式爬虫之配置)
    网站爬取-案例四:知乎抓取(COOKIE登录抓取个人中心)(第二卷)
    网站爬取-案例四:知乎抓取(COOKIE登录抓取个人中心)(第一卷)
    网站爬取-案例三:今日头条抓取(ajax抓取JS数据)
    网站爬取-案例二:天猫爬取( 第一卷:首页数据抓取)
    网站爬取-案例一:猫眼电影TOP100
  • 原文地址:https://www.cnblogs.com/chenbg2001/p/1729498.html
Copyright © 2011-2022 走看看