簡體   English   中英

PostgreSQL更新JDBC

[英]Postgresql Update JDBC

我想更新表:

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字段),因此需要將其用引號引起來。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM