簡體   English   中英

面臨“org.postgresql.util.PSQLException:錯誤:列“b00e5nh0la”不存在”的問題

[英]Facing issue with “org.postgresql.util.PSQLException: ERROR: column ”b00e5nh0la“ does not exist”

我有一張如下表

 Column   |          Type          | Collation | Nullable | Default 
------------+------------------------+-----------+----------+---------
 asin       | character varying(255) |           | not null | 
 appdetails | json                   |           |          | 

下面是 java 代碼,用於將值插入表“appcredential_info”

String json = "{ \"asin\": "+values.get(0)+", \"appdetails\": { \"app_name\": "+values.get(1)+", \"app_username\":"+values.get(2)+",\"app_password\": "+values.get(3)+",\"service_provider_uname\":"+values.get(4)+",\"service_provider_password\":"+values.get(5)+",\"marketplace\":"+values.get(6)+" } }";
        System.out.println(json);
        PGobject jsonObject = new PGobject();
        jsonObject.setType("json");
        jsonObject.setValue(json);
        String sql = "INSERT INTO appcredential_info VALUES ("+values.get(0)+", ?)";
        PreparedStatement ps = conn.prepareStatement(sql);
        ps.setObject(1, jsonObject);
        System.out.println(ps);
        ps.executeUpdate();
        System.out.println("Values Inserted Successfully");
}

但我面臨的問題是coloumn不存在。 在錯誤提及列中是 values.get(0) 方法的值。

誰能幫助我為什么我會遇到這個問題並可以提出一個最好的方法來做到這一點?

也為第一列使用適當的參數。 而且您也不需要 PGObject:

String json = ...;
String sql = "INSERT INTO appcredential_info VALUES (?, cast(? as json))";
PreparedStatement ps = conn.prepareStatement(sql);
ps.setString(1, values.get(0));
ps.setString(2, json);
ps.executeUpdate();

在 INSERT 語句中顯式定義目標列也是一種很好的編碼風格:

String sql = "INSERT INTO appcredential_info (asin, appdetails) VALUES (?, cast(? as json))";

我認為你應該修改你的 sql 字符串:

String sql = "INSERT INTO 'appcredential_info' ('asin', 'appdetails')
VALUES ('" + values.get(0) + "', ?);";

暫無
暫無

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

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