Java数组插入Postgres的
问题描述:
我试图将Java数组Postgres的,并得到了以下错误:下面Java数组插入Postgres的
Exception in thread "main" org.postgresql.util.PSQLException: No value specified for parameter 2
代码:
public static void main(String[] args) throws SQLException {
String sku = "1";
String[] cross = { "0514", "0414", "0314", "0214", "0114", "1213", "1113",
"1013", "0913", "0813", "0713", "0613" };
String sqlString = "Insert into dbo.Inventory_Metrics skus, cross values(?,?)";
Connection conn = DriverManager.getConnection(getPostgresConnUrl());
PreparedStatement ps = conn.prepareStatement(sqlString);
ps.setObject(1, sku);
ps.setObject(1, cross, java.sql.Types.VARCHAR, cross.length);
//This next line throws the error
int status = ps.executeUpdate();
ps.close();
System.out.print(status);
}
public static String getPostgresConnUrl() {
String database = "mycode";
String userName = "xxxxxxxx";
String password = "xxxxxxxx";
return "jdbc:postgresql://xxx.xxx.xxx.xxx:xxxx/" + database + "?user=" +
userName + "&password=" + password;
}
答
看看第二ps.setObject()
它设置第一第二次参数。
它应该阅读
ps.setObject(1, sku);
ps.setObject(2, cross, java.sql.Types.VARCHAR, cross.length);
答
您还没有指定的PreparedStatement的第二个参数。您是第一个参数重复值的两倍
ps.setObject(1, sku);
ps.setObject(1, cross, java.sql.Types.VARCHAR, cross.length);
应该
ps.setObject(1, sku);
ps.setObject(2, cross, java.sql.Types.VARCHAR, cross.length);
有一个错字。您正在设置第一个参数两次。 – lifus 2014-09-23 19:23:51