【发布时间】:2015-09-14 14:55:28
【问题描述】:
我的应用中有以下代码
String sql = "SELECT colA, colB, colC " +
"FROM " + tblName + " WHERE UserId = " + userId +
" AND InsertTimestamp BETWEEN " + lastDate +
" AND " + DataProcessor.TODAY + " ORDER BY UserId, Occurred";
try{
if(null == conn)
openDatabaseConnection();
PreparedStatement stmt = conn.prepareStatement(sql);
ResultSet rs = stmt.executeQuery(); <------- this is the line which throws the SQL exception
retArray = this.getArrayListFromResultSet(rs);
}catch(SQLException sqle){
JSONObject parms = new JSONObject();
eh.processSQLException(methodName, sqle, sql, parms);
}
所以当我在调试器中运行我的应用程序时,我会收到此异常消息
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: 你的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的“00:00:00.0 AND 2014-08-20 00:00:00.0 ORDER BY UserId, Occurred”附近使用正确的语法
我有理由确定对此有简单合理的解决方案,但我一直没能找到。
我已尝试在 MySQL 手册中查找解决方案或其他格式。
我尝试通过 SQL 中的 TIMESTAMP() 函数和 DATE() 函数运行我的时间戳,但都没有帮助。
我从 Java 代码中提取了完整的 SQL,并在 MySQL Workbench 中运行它,没有任何问题,什么都没有。所以现在我正在向专家寻求帮助。
【问题讨论】:
-
是的,我感觉到了。这不是最好的编码实践,如果这不是从调用方法传递特定且明确定义的参数的私有方法,那么你就死定了。