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

如何对通过 MS JDBC 驱动程序运行的 MS SQL Server 查询强制执行查询超时?

错误:“SQL Server 未返回响应。连接已关闭。”