2012-05-03 21 views
1

我有一个SelectSQLQueryBuilder,其中有一个只读文本框。用户输入数据并生成字符串!我必须检查这个字符串是否是一个SQL语句。.Net中的任何类检查给定的字符串是否是有效的SQL语句?

在SQL SERVER MGMT STUDIO中,执行的按钮旁边有一个按钮,不会触发该语句。 .NET中的任何类都可以这样做?我怎样才能验证这个字符串!请帮忙!!

回答

2

如果您发送的声明SQLSERVER这样

set PARSEONLY ON 
your statement 

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

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

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

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

0

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

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

相关问题