如何验证sql查询语法?

时间:2009-10-21 08:56:03

标签: java sql sql-server validation

java 1.4 Sql server 2000

我正在从admin用户输入sql查询(用于验证字段值对执行sql查询检索的值),这将存储在数据库中,之后我将执行对应于field的sql查询。在数据库中插入sql查询之前我想在java代码中验证它的语法。

Fields         Sql Query

stateCode      select statecode from states
district code  select district code from districts

6 个答案:

答案 0 :(得分:8)

使用查询字符串创建PreparedStatement;如果这样可行,则查询字符串正常(但尚未执行任何操作)

答案 1 :(得分:5)

不要认为有任何(简单)方法来验证sql

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

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

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

在sybase中就是这样 设置NOEXEC ON

答案 2 :(得分:3)

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

只提供字段,让他们输入州代码或区号。

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

答案 3 :(得分:2)

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

答案 4 :(得分:2)

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

答案 5 :(得分:0)

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

查看this demo,其中包括一些Java和C#代码:

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