如何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#代码的演示 :