如何解决org.postgresql.util.PSQLException:错误:“-”或附近的语法错误
我有一个PostreSQL数据库,我正在尝试使用Java应用程序进行访问。涉及以下代码:
public class UserRepo {
private String baseQuery = "SELECT * FROM bank-console.user_credentials ";
public Optional<UserInfo> findUserByCredentials(String username,String password) {
Optional<UserInfo> _user = Optional.empty();
try (Connection conn = ConnectionFactory.getInstance().getConnection()){
String sql = baseQuery +
"WHERE username = ? AND password = ?";
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setString(1,username);
pstmt.setString(2,password);
ResultSet rs = pstmt.executeQuery();
_user = mapResultSet(rs).stream().findFirst();
} catch (SQLException sqle) {
sqle.printStackTrace();
}
return _user;
}
它将引发与问题标题完全相同的错误消息。当我获取baseQuery和String sql的文本并将其准确输入到PostgreSQL应用程序中(用实际值替换问号)时,它会完美地检索表。语法错误在哪里?
我的pom文件包含
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>42.2.12</version>
</dependency>
解决方法
在回应@Mike Organek的评论时,答案是银行控制台不应带有连字符。使用双引号无效,因为baseQuery已经在双引号内。单引号本身就是语法错误。因此,有效的方法是将bank-console更改为bankconsole。我的SQL应用程序使我能够做到这一点而不会丢失表。然后只需相应地更改baseQuery。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。