描述:在用户交互界面根据操作的结果拼凑N(N<10)条SQL语句,再用户最后点击确认提交的时候再执行,我的想法是把SQL语句存到个一维字符串数组里,最后循环读出来执行,当然如果有一个不成功就全部rollback.
因为自学资料都是自己找的,参考了dbhelper(也不知道是不是原版的,发现很多网站版本都不同),自己拿来主义的执行SQL语句关键代码如下public int ExecSql(string SQLString)
        {
            using (SqlConnection connection = new SqlConnection(ConnString))
            {
                using (SqlCommand cmd = new SqlCommand(SQLString, connection))
                {
                    try
                    {
                        connection.Open();
                        int rows = cmd.ExecuteNonQuery();
                        return rows;
                    }
                    catch (System.Data.SqlClient.SqlException E)
                    {
                        connection.Close();
                        throw new Exception(E.Message);
                    }
                }
            }
        }
根据以上代码循环执行SQL的话,不知道如何加入COMMIT或者ROLLBACK语句了。或者说我这个ExecSql本身需要修改以方便实现这个功能???先谢谢大伙

解决方案 »

  1.   

    给你参考。
    public static bool ExecuteTransWithArrayList(ArrayList lstComm)
            {
                bool isSucc = false;
                //创建连接
                using (SqlConnection conn = new SqlConnection(_connectionString))
                {
                    SqlTransaction transaction = null;
                    try
                    {
                        //打开连接
                        conn.Open();
                        //开始事务
                        transaction = conn.BeginTransaction();
                        int totalCount = 0;
                        int count = lstComm.Count;
                        //设置参数
                        if (lstComm != null && count > 0)
                        {
                            for (int i = 0; i < count; i++)
                            {
                                SqlCommand comm = (SqlCommand)lstComm[i];
                                //设置命令数据库连接
                                comm.Connection = conn;
                                comm.Transaction = transaction;
                                //执行数据库操作
                                totalCount += comm.ExecuteNonQuery();
                            }
                        }
                        //提交事务
                        transaction.Commit();
                        //设置Error标志
                        isSucc = true;
                    }
                    catch (Exception e)
                    {
                        //如果开始了事务,则回滚事务
                        if (transaction != null)
                        {
                            transaction.Rollback();
                        }
                        throw e;
                    }
                    finally
                    {
                        //连接打开时,关闭连接
                        if (conn != null)
                        {
                            conn.Close();
                        }
                    }
                }            return isSucc;
            }
      

  2.   

    可以把参数改成
    string[].怎么改,你自己琢磨下,其实好多开源的Sqlhelper都有事务功能的。
      

  3.   

    http://blog.chinaunix.net/u/18297/showart_218696.html
      

  4.   

    谢谢各位提醒,发现另外个版本的DBHELPER有那么个例子。