.Net 中检查给定字符串是否为有效 SQL 语句的任何类

本文关键字:SQL 有效 语句 任何类 是否 检查 字符串 Net | 更新日期: 2023-09-27 18:33:04

我有一个SelectSQLQueryBuilder,其中有一个只读文本框。 用户输入数据并生成字符串!! 我必须检查这个字符串是否是 SQL 语句。

在 SQL SERVER MGMT STUDIO 中,执行旁边有一个按钮,可以在不触发语句的情况下执行此操作。.NET 中是否有任何类这样做?我如何验证这个字符串!!请帮忙!!

.Net 中检查给定字符串是否为有效 SQL 语句的任何类

如果像这样将语句发送到 SQLServer

set PARSEONLY ON
your statement

服务器将解析您的语句,但不执行它并返回任何错误。如果它通过,你就会知道这是一个有效的陈述。

您将不知道它是否真的会运行,因为 PARSEONLY 未检测到某些类型的错误。例如,这些错误是 SQL 有效的,但它会导致非法操作,例如数据转换或约束冲突。

因此,虽然 .Net 中可能没有类,但您可以通过将 set 命令添加到 sql 来实现 parseonly。我相信这是SQL Management Studio使用的功能。您可能会注意到,SQL Mgt. Studio 无法分析语句,除非它具有服务器连接。

PARSEONLY是一个连接级别设置。因此,如果您打开它,如果您确实想在该连接上执行 SQL,则需要再次将其关闭。

对于 Transact-SQL,您可以考虑使用 TSql100Parser Class。

还有一个名为General SQL Parser的产品,它不是免费的,但已经存在了一段时间。

通常,问题是解析 SQL 语句。事实证明,由于语言的复杂性以及众多的变化,这是相当困难的。

存在一个很好的库来处理这些复杂性并解析 SQL- http://sqlparser.com/。