Eclipse使用while循环将数据插入MySQL没有指定值的错误

时间:2015-03-03 13:30:17

标签: java mysql eclipse

我已经设置了数据库,并且我已经连接到它,因为我可以正常添加值。我想现在运行循环并添加值,但我收到此错误:

java.sql.SQLException: No value specified for parameter 1
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:996)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:935)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:924)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:870)
    at com.mysql.jdbc.PreparedStatement.checkAllParametersSet(PreparedStatement.java:2281)
    at com.mysql.jdbc.PreparedStatement.fillSendPacket(PreparedStatement.java:2261)
    at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2120)
    at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2077)
    at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2062)
    at test.Test.main(Test.java:30)

此外,我的表中的第一个参数是一个自动增量值,它应该被设置为NULL但是Eclipse不会让我使用NULL,所以任何建议都会受到赞赏。这是我添加数据的代码:

Connection conn = null;
PreparedStatement pstmt = null;
int loopNumber = 0;
try {
    while (loopNumber < 10) {
        conn = getConnection();
        String query = "insert into username(id, name) values(?, ?)";

        pstmt = conn.prepareStatement(query); // create a statement
        pstmt.setInt(loopNumber, loopNumber); // set input parameter 1
        pstmt.setString(loopNumber, "deptname"); // set input parameter 2
        pstmt.executeUpdate(); // execute insert statement
    }
    loopNumber++;
} catch (Exception e) {
  e.printStackTrace();
} finally {
  pstmt.close();
  conn.close();
}

1 个答案:

答案 0 :(得分:3)

setString / setInt方法的第一个参数是parameterIndex,在你的情况下只能是1或2(第一个&#34;?&#34;和第二个)。

因此,

pstmt.setInt(loopNumber, loopNumber); // set input parameter 1
pstmt.setString(loopNumber, "deptname"); // set input parameter 2

应该成为:

pstmt.setInt(1, loopNumber); // set input parameter 1
pstmt.setString(2, "deptname"); // set input parameter 2