码迷,mamicode.com
首页 > 数据库 > 详细

前台拼凑sql语句传到后台

时间:2015-03-28 17:21:52      阅读:246      评论:0      收藏:0      [点我收藏+]

标签:js   .net   

有时我们会把一些sql的在前台动态生成,这是我们首先要做的是验证他是不是合法,如果sql 语句结尾为and 或or 我们也要进行删除处理,不然会报错。

1.前台js 判断是否满足左右括号对称

 function checkBracket(algorithms) {
            var bracket = [];
            var algorithms = algorithms || '';
            for (var i = 0; i < algorithms.length; i++) {
                if (algorithms.charAt(i) == "(") {
                    bracket.push('(');
                }
                if (algorithms.charAt(i) == ")") {
                    if (bracket.length) {
                        bracket.pop();
                    } else {
                        alert('条件括号不配对,缺少左括号!')
                        return false;
                    }
                }
            }
            if (bracket.length) {
                alert('条件括号不配对,缺少右括号!')
                return false;
            }
            return true;
        }

2.判断是否满足sql语句语法

 public string GetBool(string exp)
    {
        string flag = "true";
        try
        {
            if (exp.EndsWith("and ") || exp.EndsWith("or "))
            {
                exp = exp.Contains("and ") ? exp.Substring(0, exp.Length - 4) : exp.Substring(0, exp.Length - 3);
            }
            exp = exp.Replace("and", "&&").Replace("or", "||");
            var type = Type.GetTypeFromProgID("MSScriptControl.ScriptControl");
            var obj = Activator.CreateInstance(type);
            type.InvokeMember("Language", System.Reflection.BindingFlags.SetProperty, null, obj, new object[] { "javascript" });
            var result = type.InvokeMember("Eval", System.Reflection.BindingFlags.InvokeMethod, null, obj, new object[] { exp });
        }
        catch (Exception e)
        {
            flag = "false";
        }
        return flag;
    }


前台拼凑sql语句传到后台

标签:js   .net   

原文地址:http://blog.csdn.net/wyl900606/article/details/44702161

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!