【发布时间】:2018-08-20 23:27:46
【问题描述】:
我正在尝试使用 WHERE 子句在我的 Oracle 数据库中执行查询:
java.sql.Date today = new java.sql.Date(System.currentTimeMillis());
String sql = new StringBuilder("SELECT *")
.append("FROM USERNAME.MY_TABLE m")
.append("WHERE m.A_DATE_COLUMN = ?").toString();
PreparedStatement ps = con.prepareStatement(sql);
ps.setDate(1, today);
ResultSet rs = ps.executeQuery();
但我不断收到错误:
SQL 命令未正确结束
当executeQuery() 被调用时。我知道这与设置我的参数有关,因为如果我不包含 WHERE 子句,查询运行良好并返回正确的数据。我正在查询的表只有一列类型为 DATE。
我尝试使用setString 而不是setDate,并在我用来创建查询的字符串中的? 之后添加分号,但我的理解是我不想包含分号。
【问题讨论】:
-
调试是程序员工作的一部分。你有没有试过在执行之前输出字符串???我可以从字符串中看出你错过了空格。
-
不相关,但是:对常量字符串使用 StringBuilder 是没用的。
-
您在字符串中的
*之后和FROM之前缺少一个空格。