0

I am trying to insert a java Array into postgres and get the following error:

Exception in thread "main" org.postgresql.util.PSQLException: No value specified for parameter 2

Code below:

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; 
}
1
  • There is a typo. You are setting first parameter twice. Commented Sep 23, 2014 at 19:23

2 Answers 2

4

Look at the second ps.setObject() it's setting the first parameter a second time.

It should read

ps.setObject(1, sku);
ps.setObject(2, cross, java.sql.Types.VARCHAR, cross.length);
Sign up to request clarification or add additional context in comments.

Comments

2

You haven't specified the second parameter for the PreparedStatement. You are repeating the value for first parameter twice

ps.setObject(1, sku);
ps.setObject(1, cross, java.sql.Types.VARCHAR, cross.length);

should be

ps.setObject(1, sku);
ps.setObject(2, cross, java.sql.Types.VARCHAR, cross.length);

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.