【发布时间】:2020-08-28 23:03:20
【问题描述】:
我有一个 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>
【问题讨论】:
-
像
"bank-console".user_credentials这样的模式名称加上双引号。您不应该在标识符中添加连字符。
标签: java postgresql jdbc