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
答案 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#代码: