我正在尝试使用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
,并在用于创建查询的字符串中的?
之后添加分号,但这是我的理解,我不想包括分号。
答案 0 :(得分:1)
您需要添加空格:
String sql = new StringBuilder("SELECT * ")
.append("FROM USERNAME.MY_TABLE m ")
.append("WHERE m.A_DATE_COLUMN = ? ").toString();
答案 1 :(得分:0)
追加后,您的查询如下所示。
collect
正确添加空格。
collect()