我有一个SelectSQLQueryBuilder,其中有一个只读文本框。用户输入数据并生成字符串!我必须检查这个字符串是否是一个SQL语句。.Net中的任何类检查给定的字符串是否是有效的SQL语句?
在SQL SERVER MGMT STUDIO中,执行的按钮旁边有一个按钮,不会触发该语句。 .NET中的任何类都可以这样做?我怎样才能验证这个字符串!请帮忙!!
我有一个SelectSQLQueryBuilder,其中有一个只读文本框。用户输入数据并生成字符串!我必须检查这个字符串是否是一个SQL语句。.Net中的任何类检查给定的字符串是否是有效的SQL语句?
在SQL SERVER MGMT STUDIO中,执行的按钮旁边有一个按钮,不会触发该语句。 .NET中的任何类都可以这样做?我怎样才能验证这个字符串!请帮忙!!
对于Transact-SQL,您可以使用TSql100Parser Class来查看。
另外还有一个叫General SQL Parser的产品,它不是免费的,但已经有一段时间了。
如果您发送的声明SQLSERVER这样
set PARSEONLY ON
your statement
服务器将解析您的语句,但不执行它并返回任何错误。如果它通过,你会知道这是一个有效的声明。
您不会知道它是否会真正运行,因为某些类型的错误未被PARSEONLY检测到。例如,那些SQL是有效的错误,但会导致数据转换或约束违规等非法操作。
因此,尽管.Net中可能没有类,但可以通过将set命令添加到sql来进行parseonly。我相信这是SQL Management Studio使用的功能。您可能会注意到,SQL管理Studio除非具有服务器连接,否则无法解析语句。
PARSEONLY是连接级别设置。所以如果你打开它,你需要再次关闭它,如果你真的想在该连接上执行SQL。
问题通常是解析SQL语句。事实证明,由于语言的复杂性以及众多的变化,这是相当困难的。
存在一个很好的库,它处理这些复杂性并分析SQL- http://sqlparser.com/。