gpt4 book ai didi

java - Postgresql 更新 JDBC

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

我要更新表格:

id integer NOT NULL,
"first" character varying(255),
"last" character varying(255),
age integer,
CONSTRAINT registration_pkey PRIMARY KEY (id)

使用方法:

    void updateTable(String tableName, String columnName, String value,
String columnName2, String value2) {
try {

String sql = "UPDATE " + tableName + " SET " + columnName + " = "
+ value + " WHERE " + columnName2 + " = " + value2;

stmt.executeUpdate(sql);

} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}

如果我跑

.updateTable("employees", "last", "11", "id", "100");

一切都很好,但如果我尝试一下

.updateTable("employees", "last", "xx", "id", "100");

我收到了

org.postgresql.util.PSQLException: ERROR: column "xx" does not exist
Position: 29
at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2270)
at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1998).....

你能告诉我,问题出在哪里吗?

最佳答案

您不应该通过字符串连接直接放置变量来构建 SQL。这里发生的是,对于 11,您的 SQL 变为:

 set last=11

这是有效的 SQL(使用 11 作为整数文字),而对于 xx 则变为:

set last=xx

没有引号,所以 SQL 意味着您正在读取另一列的值,因此您的错误消息。由于您的值是一个字符串(进入 varchar 字段),您需要将其用引号引起来。

关于java - Postgresql 更新 JDBC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30982722/

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