gpt4 book ai didi

java - 使用 PreparedStatement java PostgreSQL 更新 ENUM 值

转载 作者:行者123 更新时间:2023-11-29 14:18:13 27 4
gpt4 key购买 nike

我有一个 SQL 枚举:

CREATE TYPE position as ENUM ('G','W','D');

我需要使用 java PreparedStatement 更新这个值。我试过这样做:

PreparedStatement ps = connection.prepareStatement("UPDATE players 
SET position = ? WHERE id = 1");

ps.setString(1, "W");

但是我得到了一个 org.postgresql.util.PSQLException: ERROR: syntax error at or near "position".

我也试过 position = ?::positionposition = CAST(? AS position) 但我总是得到同样的错误。请帮我解决这个问题

最佳答案

当你转换时你需要引用你的枚举的名字:

        PreparedStatement stmt = con.prepareStatement("update players set position = ?::\"position\" where id = 1");

发生语法错误是因为 POSITION 是关键字。将它用双引号括起来会强制 postgres 将其解析为标识符。

为枚举使用不同的名称可能是个好主意。

关于java - 使用 PreparedStatement java PostgreSQL 更新 ENUM 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40707642/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com