Sql Server JDBC 驱动程序错误
Posted
技术标签:
【中文标题】Sql Server JDBC 驱动程序错误【英文标题】:Sql Server JDBC Driver Error 【发布时间】:2017-06-30 13:26:58 【问题描述】:当我尝试根据下面的参数计数动态设置 preparestament 参数时,SQL Server JDBC 驱动程序给我错误。
preparedStatement = root.prepareStatement("SELECT * FROM users WHERE DATE BETWEEN ? AND ?");
if(preparedStatement.getParameterMetaData()!=null) //exception at this line
//do some logic
错误:
com.microsoft.sqlserver.jdbc.SQLServerException: com.microsoft.sqlserver.jdbc.SQLServerException:附近的语法不正确 关键字“BETWEEN”。
Same Code 适用于 Mysql jdbc 驱动程序。
(我正在为 mssql 使用 sqljdbc41.jar)。
任何人都可以有这种问题或任何解决方案吗?
【问题讨论】:
DATE
是一个关键字,也许你需要在 SQL Server 中转义它,例如"DATE"
或 SQL Server 使用的非标准 [DATE]
。
【参考方案1】:
DATE 是保留字,需要用引号引起来:
root.prepareStatement("SELECT * FROM users WHERE \"DATE\" BETWEEN ? AND ?");
【讨论】:
不幸的是它不起作用,因为preparedStatement.executeQuery() 已经起作用了,所以它不是保留关键字的问题。只有当我使用getParameterMetaData() 时它才会失败 @JekinKalariya 你 100% 确定吗?这是执行查询时发生的错误。您是否尝试过建议的解决方案? 是的 BackSlash 我在您发布后立即尝试了它,即使我没有将 Date 替换为 \"Date\",它也能正常工作,这里的问题不在查询语法中,而是 getParameterMetaData 方法将要解决的问题在里面做一些逻辑..以上是关于Sql Server JDBC 驱动程序错误的主要内容,如果未能解决你的问题,请参考以下文章
通过 JTDS 驱动程序执行 SQL Server 调用时出现“第 24 行位置的 JDBC 转义语法无效 '=' 预期字符”错误的原因?
Java Spring jdbc sql server连接错误
java连接sql server 2008 失败 报错信息如下:
如何使用库 jTDS JDBC 驱动程序将 android 应用程序连接到 sql server 2012