分隔SQL语句并执行SQL语句

2015-11-25 17:34:14  访问(1478) 赞(0) 踩(0)

  
    /// <summary>
    /// 保存事件
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    /// <param name="xdbHelper">数据库链接串</param>
    protected void btnSaveClick(object sender, EventArgs e, DBHelper xdbHelper)
    {
        string sql = this.txt_Input.Text.Trim();

        if (sql.Length == 0)
        {
            FineUI.Alert.Show("请输入SQL语句。");

            return;
        }

        if (!UserSessionData.IsAdministrator(xdbHelper))
        {
            string strPwd = this.txt_DataBasePassword.Text;

            if (!CheckDataBaseManagePower(strPwd))
            {
                this.txt_Result.Text = "执行密码错误。";
                return;
            }
        }

        StringBuilder logResult = new StringBuilder();

        bool bIsCreate = true;

        string dbConnectionString = this.txt_dbConnectionString.Text.Trim();
        string emDBHelper = this.ddl_emDBHelper.SelectedValue;

         
        if (xdbHelper == null)
        {
            if (dbConnectionString.Length == 0)
            {
                xdbHelper = SlowX.DAL.Helpers.DBHelper.CreateDBHelper();
            }
            else
            {
                xdbHelper = SlowX.DAL.Helpers.DBHelper.CreateDBHelper(dbConnectionString, emDBHelper);
            }
        }
        else
        {
            // 没有打开链接 //
            bIsCreate = xdbHelper.IsNotOpen();
        }

        try
        {
            if (bIsCreate)
                xdbHelper.OpenDBHelper();

            string[] sArray = sql.Split(new char[] { '\r', '\n' });
            string strTmp = "";
            bool isFirst = true;
            StringBuilder strSQL = new StringBuilder();
            
            int returnResult = 0;
            int idx = 0;
            string execSQL = "";

            foreach (string s in sArray)
            {
                if (s == null || s.Length == 0)
                    continue;

                strTmp = s.Trim();

                if (strTmp.Length == 0)
                    continue;

                if (strTmp.StartsWith("--"))
                {
                    if (isFirst)
                        continue;

                    execSQL = strSQL.ToString();

                    // 遇到断行,执行SQL语句 //
                    returnResult = xdbHelper.ExecuteNonQuery(execSQL);

                    ++idx;
                    logResult.AppendLine(idx.ToString() + "、执行SQL语句:");
                    logResult.AppendLine(execSQL);
                    logResult.AppendLine( "影响" + returnResult.ToString() + "行记录。" );
                    logResult.AppendLine();


                    strSQL = new StringBuilder();
                    isFirst = true;
                }
                else
                {
                    strSQL.AppendLine(s);
                    isFirst = false;
                }

            }

            if (!isFirst)
            {
                execSQL = strSQL.ToString();

                // 遇到断行,执行SQL语句 //
                returnResult = xdbHelper.ExecuteNonQuery(execSQL);

                ++idx;
                logResult.AppendLine(idx.ToString() + "、执行SQL语句:");
                logResult.AppendLine(execSQL);
                logResult.AppendLine("影响" + returnResult.ToString() + "行记录。");
                logResult.AppendLine();

            }

            logResult.AppendLine();
            logResult.AppendLine("执行完成...");

            if (bIsCreate)
                xdbHelper.EndDBHelper();

        }
        catch (Exception err)
        {
            if (bIsCreate)
                xdbHelper.TranDBHelper();

            txt_Result.Text = "系统异常:" + err.Message;

            throw err;
        }
        finally
        {
            if (bIsCreate)
                xdbHelper.FinallyDBHelper();
        }

        this.txt_Result.Text = logResult.ToString();
    }


标签:分隔SQL语句并执行SQL语句 

上一条:

下一条:


 

相关评论

评论加载中……
 

发表评论

类型:
内容:
  (Alt+Enter)
 
  ┈全部┈  
 
(显示默认分类)