如何validationSQL查询语法?

java 1.4 Sql server 2000

我正在从管理员用户输入sql查询(对于通过执行sql查询检索的值validation字段值),这将存储在数据库中,之后我将执行对应于field的sql查询。在数据库中插入sql查询之前我想要在java代码中validation其语法。

Fields Sql Query stateCode select statecode from states district code select district code from districts 

不要认为有任何(简单)方法来validationSQL

Sql语法很复杂,允许使用很多不同的方法来输入语句。

认为你最好的方法是只执行sql statent,如果你有一个SQlexception,看看它是否是一个错误的语法导致它。

你可以预先添加一些sql以避免实际执行查询

在sybase中它将是SET NOEXEC ON

使用查询字符串创建PreparedStatement ; 如果这样可行,查询字符串就可以了(但还没有执行)

你为什么要让他们输入整个sql语句?

只需提供给字段,让他们输入状态代码或分区代码。

然后检查输入的值是否为数字。 并使用输入的值运行相应的查询。

一个可能的解决方案是获取查询的解释计划,如果它设法解释查询我想它必须是有效的。 缺点是它不喜欢参数化查询。

您可以执行SET FMTONLY ON然后执行查询并查看它是否有效。 只记得在finally块中执行SET FMTONLY OFF,因为它是连接级别设置。

您可能需要完整的SQL Parser才能执行此类特定于供应商的脱机SQL语法检查。

看一下这个包含一些Java和C#代码的演示 :

http://www.dpriver.com/blog/list-of-demos-illustrate-how-to-use-general-sql-parser/vendor-specific-offline-sql-syntax-check/