【c#】验证SQL语法是否正确

【c#】验证SQL语法是否正确【c#】验证SQL语法是否正确

大家好,又见面了,我是你们的朋友全栈君。

    昨天又有一个新的需求:验证文本框输入的SQL语法是否正确。于是就开始百度,其实也挺简单的。首先需要知道SET PARSEONLY { ON | OFF }”。

    当 SET PARSEONLY 为 ON 时,SQL Server 只分析语句。

    当 SET PARSEONLY 为 OFF 时,SQL Server 编译并执行语句。

    现在我们就可以完成SQL语法检测的功能了。下面是具体的代码

        public static bool ValidateSQL(string sql)
        {
            var connStr = "server=localhost;database=jhly;user id=sa;password=1";
            bool bResult;
            using (SqlConnection conn = new SqlConnection(connStr))
            {
                using (SqlCommand cmd = new SqlCommand())
                {
                    if (conn.State != ConnectionState.Open)
                        conn.Open();
                    cmd.Connection = conn;
                    cmd.CommandText = "SET PARSEONLY ON";
                    
                    try
                    {
                        string strParams = "@starttime";
                        cmd.CommandText = sql;
                        cmd.Parameters.AddWithValue(strParams, "2010-01-01");
                        cmd.ExecuteNonQuery();
                        bResult = true;
                    }
                    catch (Exception ex)
                    {
                        bResult = false;
                        LogHelper.Error("SQL语法错误" + ex);
                    }
                    finally
                    {
                        cmd.CommandText = "SET PARSEONLY OFF";
                        cmd.ExecuteNonQuery();
                    }
                }
            }
            return bResult;
        }

和 SET PARSEONLY 相关的还有SET NOEXEC,

    当 SET NOEXEC 为 ON 时,SQL Server 将编译每一条Tran-SQL语句但并不执行它们。

    当 SET NOEXEC 为 OFF 时,SQL Server 编译并执行语句。

他们之间的一些区别:

1.SET PARASEONLY 检查每个Tran-SQL 的语法并返回错误消息,不编译和执行语句。

  SET NOEXEC 编译每个查询但不执行查询。

2.SET PARASEONLY 的设置是在分析时设置,不是在执行或运行时设置。

  SET NOEXEC 的设置在执行或运行时设置,不是在分析时设置。

    关于这块还是刚刚接触,网上有很多的介绍,大家有更深入的认识,欢迎留言,欢迎讨论     


版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/105673.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 爬虫实战| 1宅男女神(秀人网专区)—让人心情愉悦的图片爬取 ![通俗易懂]

    爬虫实战| 1宅男女神(秀人网专区)—让人心情愉悦的图片爬取 ![通俗易懂]目标是宅男女神的美女图片板块下的秀人板块,页面上全部是该网站收录的美女图片分类,大概浏览了一下,发现各个杂志社的图片(妹子)质量最高,其中以秀人为首,所以决定爬取所有秀人板块下的图片.目标网页截图该网页这里显示只有5页,后面的页面在点击下一页后出现.为了过审还是打码了,本来都是穿着衣服的正经妹妹,兄弟们可别误会了~首先利用Chrome抓包第一步先利用抓包工具来判断我们要爬取的网站是动态数据还是静态数据.这里可以清楚的看到,当我们发起请求之后,所有我们需要的东西都已经加载

  • WinForm控件之【MaskedTextBox】「建议收藏」

    WinForm控件之【MaskedTextBox】「建议收藏」基本介绍掩码文本控件,使用掩码来区分用户输入文本是否正确。常设置属性BeepOnError:指示键入无效字符是控件是否发出系统提示音;CutCopyMaskFormat:设置控件文本值复制到剪

  • python 激活码 2021(注册激活)

    (python 激活码 2021)JetBrains旗下有多款编译器工具(如:IntelliJ、WebStorm、PyCharm等)在各编程领域几乎都占据了垄断地位。建立在开源IntelliJ平台之上,过去15年以来,JetBrains一直在不断发展和完善这个平台。这个平台可以针对您的开发工作流进行微调并且能够提供…

  • mysql是mpp数据库_mysql迁移mpp数据库Greenplum[通俗易懂]

    mysql是mpp数据库_mysql迁移mpp数据库Greenplum[通俗易懂]1.场景描述因兄弟项目中mysql有点扛不住了,要做sql优化,但是业务有点小复杂,优化起来有点麻烦(sql嵌套有点多),便想着用Mpp数据库Greenplum测试下,看性能和复杂度怎么样,趟趟水。2.解决方案初步的想法是:因为mysql和postgresql(Greenplum建立在postgresql之上,i’m软件老王)都是使用的标准sql,直接把mysql的建表语句在Greenplum…

    2022年10月31日
  • keras系列︱Sequential与Model模型、keras基本结构功能(一)

    keras系列︱Sequential与Model模型、keras基本结构功能(一)不得不说,这深度学习框架更新太快了尤其到了Keras2.0版本,快到Keras中文版好多都是错的,快到官方文档也有旧的没更新,前路坑太多。到发文为止,已经有theano/tensorflow/CNTK支持keras,虽然说tensorflow造势很多,但是笔者认为接下来Keras才是正道。笔者先学的caffe,从使用来看,比caffe简单超级多,非常好用,特别是重新训练一个模型,但是

    2022年10月22日
  • python微信刷屏_拍一拍,微信史上最短一行代码

    python微信刷屏_拍一拍,微信史上最短一行代码今日推文说明二条:Python办公自动化|从Word到Excel三条:17个Python的牛逼骚操作,你都OK吗?↑关注+星标,后台回复【大礼包】送你Python自学大礼包图片来自不正经程序员…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号