java.sql.SQLSyntaxErrorException:ORA-00933:SQL命令未正确以WHERE子句结尾

时间:2018-08-20 15:22:14

标签: sql oracle

我正在尝试使用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,并在用于创建查询的字符串中的?之后添加分号,但这是我的理解,我不想包括分号。

2 个答案:

答案 0 :(得分:1)

您需要添加空格:

String sql = new StringBuilder("SELECT * ")
                    .append("FROM USERNAME.MY_TABLE m ")
                    .append("WHERE m.A_DATE_COLUMN = ? ").toString();

答案 1 :(得分:0)

追加后,您的查询如下所示。

collect

正确添加空格。

collect()