【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 的设置在执行或运行时设置,不是在分析时设置。

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


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

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

(0)
上一篇 2022年4月25日 上午9:00
下一篇 2022年4月25日 上午9:00


相关推荐

  • 使用fiddler实现苹果ios手机抓包

    使用fiddler实现苹果ios手机抓包Fiddler 是一个强大的抓包工具 可以通过它抓取 查看和调试 PC 端 手机终端和远程服务器之间的 http https 等通信 Fiddler 没有手机客户端 都是安装在 PC 上 要实现对手机上的程序抓包 则需要对 PC 上的 Fiddler 和手机端做一些配置 此文介绍如何使用 fiddler 实现苹果手机抓包 具体步骤如下 一 对 PC 端的 Fiddler 进行配置 1 Fiddler 默认只捕获 http 会话而不抓取 HTTPS 报文 所以我们要先允许捕获 HTTPS 操作步骤 打开 Fiddler 点击 Tool gt O

    2025年8月29日
    6
  • 10种用于渗透测试的漏洞扫描工具有哪些_渗透测试和漏洞扫描区别

    10种用于渗透测试的漏洞扫描工具有哪些_渗透测试和漏洞扫描区别漏洞扫描工具是IT部门中必不可少的工具之一,因为漏洞每天都会出现,给企业带来安全隐患。漏洞扫描工具有助于检测安全漏洞、应用程序、操作系统、硬件和网络系统。黑客在不停的寻找漏洞,并且利用它们谋取利益。网络中的漏洞需要及时识别和修复,以防止攻击者的利用。漏洞扫描程序可连续和自动扫描,可以扫描网络中是否存在潜在漏洞。帮助It部门识别互联网或任何设备上的漏洞,并手动或自动修复它。在本文中,我们将介绍市场上可用的十大最佳漏洞扫描工具。1.OpenVAS漏洞扫描工具OpenVAS漏洞扫描器是

    2025年11月6日
    4
  • Robotium体验—-白盒

    Robotium体验—-白盒什么是Robotium?先说一下发音。音标类似于[rəʊbɒʃɪəm],可参照有道。Robotium是一款开源测试框架,官方定义为AndroidApp的黑盒测试框架(官方示例为白盒),适用于native/hybridapp。由于开源,该框架源码可以从github上获取,地址为https://github.com/RobotiumTech/robotium。若需要文档,j…

    2022年7月17日
    11
  • Cursor 教程 – Agent 使用指南

    Cursor 教程 – Agent 使用指南

    2026年3月15日
    2
  • JVM成神之路-类加载机制-双亲委派,破坏双亲委派

    概述概念虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接时候用的Java类型。类的生命周期类从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期包括:加载、验证、准备、解析、初始化、使用、卸载。其中验证、准备、解析统称为连接上图中,加载、验证、准备、初始化和卸载这5个阶段的顺序是确定的,类的加载过程必须严…

    2022年4月16日
    38
  • 新手保姆级教程:OpenClaw 自动化操作浏览器!

    新手保姆级教程:OpenClaw 自动化操作浏览器!

    2026年3月13日
    1

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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