java - while 循环中的 ResultSet 找不到列名
问题描述
我正在尝试从 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;
解决方案
user
是 PostgreSQL 中的一个特殊关键字。该查询返回登录到数据库的用户的用户名。这就是列不匹配的原因。
您需要转义表名才能使查询按预期工作:
String sql = "SELECT * FROM \"user\";";
推荐阅读
- arrays - 在 Firestore 集合中添加大量对象
- java - 如何使用偏移量顺序使用 Kafka 消息?
- c++ - 无法使用 emscripten 从 IndexedDB 加载数据
- python - Python数据框新列的值基于其他行中的值
- sql - 如何在更实际的年份中选择去年的两个
- android - 安卓。从构建变体中排除 NativeBuild
- scikit-learn - sklearn 的分类准确率百分比
- jquery - AJAX URL 在一个刀片上工作,但在另一个刀片上不工作
- react-native - 如何在导航到屏幕之前加载 React 本机 WebView 堆栈屏幕?
- java - 在 Java(Kotlin) 中,如果 kafka 主题以编程方式创建而未指定 bootstrap-server 选项,它是否默认在 localhost:9092 上创建?