使用ASP.NET和jQuery执行SQL Server脚本的最佳方法?

使用ASP.NET和jQuery执行SQL Server脚本的最佳方法?,jquery,asp.net,sql-server,Jquery,Asp.net,Sql Server,我一直在努力寻找使用ASP.NET和Jquery为内部自动化测试编辑器执行SQL server脚本的最佳方法。我目前有一个JQuery函数来调用我的ASP WebMethod来执行SQL连接和执行查询,但我目前正在将查询作为参数发送到此ASP函数,我知道这不是一种安全的方法,而且由于特殊字符,当我有大型脚本时,我也会遇到问题(我尝试使用escape和其他类似的函数,但无法从ASP端正确解码) 因此,我的问题是,如果有人知道处理要执行的脚本的最佳方法是什么?SQL Server上的控制表还是会话变

我一直在努力寻找使用ASP.NET和Jquery为内部自动化测试编辑器执行SQL server脚本的最佳方法。我目前有一个JQuery函数来调用我的ASP WebMethod来执行SQL连接和执行查询,但我目前正在将查询作为参数发送到此ASP函数,我知道这不是一种安全的方法,而且由于特殊字符,当我有大型脚本时,我也会遇到问题(我尝试使用escape和其他类似的函数,但无法从ASP端正确解码)

因此,我的问题是,如果有人知道处理要执行的脚本的最佳方法是什么?SQL Server上的控制表还是会话变量

这是我目前的代码

JQuery

        function ExecuteScript() {
            var script = document.getElementById('MainContent_textEditor').innerHTML;
            $('#MainContent_textEditorResponse').html(encodeURIComponent(script));
            $.ajax({
                type: "POST",
                url: "Default.aspx/ExecuteScript",
                data: "{'sqlQuery':'"+script+"'}",
                dataType: "json",
                contentType: "application/json; charset=utf-8",
                success: ExecuteScript_Success,
                error: ExecuteScript_Error
            });
             return false;
        }
        function ExecuteScript_Success(mydata) {
            $('#MainContent_textEditorResponse').html(mydata.d);
        }
        function ExecuteScript_Error(mydata) {
        }
ASP.NET

        [WebMethod]
        [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
        public static string ExecuteScript(string sqlQuery)
        {
            string connectionString = System.Web.Configuration.WebConfigurationManager.ConnectionStrings["DQSQLAutomationConnectionString"].ConnectionString;
            string queryResult = "";

            using (SqlDataAdapter sqlDataAdapter = new SqlDataAdapter(sqlQuery, connectionString))
            {
                DataTable dt = new DataTable("TestCases");
                sqlDataAdapter.Fill(dt);
                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    queryResult = queryResult + dt.Rows[i][0];
                }
                return queryResult;
            }
        }
[WebMethod]
[ScriptMethod(ResponseFormat=ResponseFormat.Json)]
公共静态字符串ExecuteScript(字符串sqlQuery)
{
string connectionString=System.Web.Configuration.WebConfigurationManager.ConnectionStrings[“DQSQLAutomationConnectionString”]。connectionString;
字符串queryResult=“”;
使用(SqlDataAdapter SqlDataAdapter=newsqldataadapter(sqlQuery,connectionString))
{
DataTable dt=新的DataTable(“测试用例”);
sqlDataAdapter.Fill(dt);
对于(int i=0;i

我还尝试从ASP.NET访问textarea控件以获取脚本,但我无法从静态函数访问非静态元素。

为什么必须通过AJAX调用而不是正常的页面回发?最好的方法是使用参数化SQL查询和预编译的执行计划。如果使用MS SQL Server,您应该LD考虑存储过程。不要从用户提供的数据中建立查询,无论是来自Ajax还是HTTP参数。用户应该只控制查询的参数,而不是查询本身,并且在执行任何查询之前都应该验证参数。谢谢您,Graham,是的,我用Ajax做了所有其他功能,但是我我想我会尝试使用一个定期回发。