我有一个SelectSQLQueryBuilder,其中有一个只读文本框。用户输入数据并生成字符串!!我必须检查此字符串是否是SQL语句。
在SQL SERVER MGMT STUDIO中,执行旁边有一个按钮,可以在不触发语句的情况下执行此操作。 .NET中的任何类都这样做?我该如何验证这个字符串!!请帮助!!
答案 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/。