【发布时间】:2019-10-18 07:31:18
【问题描述】:
我有一张如下表
Column | Type | Collation | Nullable | Default
------------+------------------------+-----------+----------+---------
asin | character varying(255) | | not null |
appdetails | json | | |
下面是向“appcredential_info”表中插入值的java代码
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) 方法的值。
谁能帮助我为什么会遇到这个问题并可以提出一个最好的方法来解决这个问题?
【问题讨论】:
-
为什么要硬编码一个参数,而对第二个参数使用通配符
??我敢打赌,一旦您正确使用PreparedStatement,并使用setXXX提供所有参数,您的问题就会消失。 -
卡亚曼是对的。也为第一个参数使用适当的参数。
-
第一列是 varchar,第二列是 json。我将类型值设置为“json”。这就是我这样做的原因。
-
@user3782636 我不知道你想说什么,但你的代码是错误的。对这两个参数使用
?占位符。 varchar 参数可以通过.setString()提供。 -
@Kayaman,我的数据库中只有两个参数,一个是 varchar,另一个是 json。由于 Typevalue 设置为 json,因此我对字符串值进行了硬编码。如果有其他方法可以满足我的要求。请告诉我。
标签: java json postgresql jdbc