我正在尝试从 DBeaver 中的用户表中打印出数据列表,但是每当我运行 Java 程序以返回列表时,我都会收到一条错误消息,指出未找到“userid”列名。我需要在 while 循环中更改某些内容吗?这是我的代码:
@Override
public List<User> findAll() {
try(Connection conn = ConnectionUtil.getConnection()) {
String sql = "SELECT * FROM user;";
Statement statement = conn.createStatement();
ResultSet result = statement.executeQuery(sql);
List<User> list = new ArrayList<>();
while (result.next()) {
User user = new User();
user.setUserId(result.getInt("userid"));
user.setUsername(result.getString("username"));
user.setPassword(result.getString("password"));
user.setFirstName(result.getString("firstname"));
user.setLastName(result.getString("lastname"));
user.setEmail(result.getString("email"));
list.add(user);
}
return list;
答案 0 :(得分:1)
user
是 PostgreSQL 中的一个特殊关键字。
该查询返回登录到数据库的用户的用户名。这就是列不匹配的原因。
您需要转义表名才能使查询按预期工作:
String sql = "SELECT * FROM \"user\";";