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

时间:2012-05-03 05:58:56

标签: c# .net sql

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

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

3 个答案:

答案 0 :(得分:2)

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

set PARSEONLY ON
your statement

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

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

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

PARSEONLY是连接级别设置。因此,如果你打开它,如果你真的想在那个连接上执行SQL,你需要再次关闭它。

答案 1 :(得分:1)

对于Transact-SQL,您可以查看使用TSql100Parser Class

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

答案 2 :(得分:0)

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

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