Java PreparedStatement的奇怪行为

时间:2016-07-31 03:03:51

标签: java mysql mariadb

我有以下代码

try{
    sql = "Select Time, Text WHERE Sender =?";
    PreparedStatement stmt = conn.prepareStatement(sql);
    stmt.setString(1, "ABC");
    rs = stmt.executeQuery();
}catch(SQLException){
    System.out.println(e.getMessage());
}

并收到以下错误:

  

您的SQL语法有错误;检查与您的MariaDB服务器版本对应的手册,以便在第1行的'WHERE Sender ='ABC''附近使用正确的语法

我的SQL查询中有一个额外的',我该如何解决?

1 个答案:

答案 0 :(得分:4)

不是"额外" '这就是问题所在。实际上,您需要让数据库了解您提供的文本。

问题是您正在发出一个SELECT语句,该语句从您未指定的表中请求字段。您需要添加表名:

Select Time, Text FROM <tablename here> WHERE Sender =?

编辑:显然MariaDB doesn't consider time and text as reserved words正如@Andreas在对此答案的评论中指出的那样。

相关问题