PostgreSQL:通过Java更新我的用户表

时间:2013-05-29 07:57:04

标签: java postgresql jdbc runtime-error

在PostgreSQL中user是一个在内部表中使用的保留关键字,但是我在自己的数据库中也有一个单独的user表,我需要使用它。每当我尝试在表上执行INSERT或UPDATE语句时,它都会生成以下错误:The column name 'id' was not found in this ResultSet

这是我目前使用的Java代码:

PreparedStatement stat1 = conn.prepareStatement("SELECT id FROM user;");
PreparedStatement stat2 = conn.prepareStatement("UPDATE user SET date_created = ? , last_updated = ? , uuid = ? WHERE id = ?;");
ResultSet rs = stat1.executeQuery();
while(rs.next()){
    UUID uuid = UUID.randomUUID();
    String tempId = uuid.toString();

    stat2.setTimestamp(1, curDate);
    stat2.setTimestamp(2, curDate);
    stat2.setString(3, tempId);
    stat2.setLong(4,rs.getLong("id"));

    stat2.executeUpdate();
}

所以我的问题是,如何在不干扰关键字限制的情况下插入或更新个人user表中的值?

2 个答案:

答案 0 :(得分:2)

使用此:

prepareStatement("UPDATE \"user\" set date_created = ?")

或者,更好的是,将user表重命名为其他内容,例如users

ALTER TABLE "user" RENAME TO users;

答案 1 :(得分:1)

像这样逃避表名

select * from "user";