我已经设置了数据库,并且我已经连接到它,因为我可以正常添加值。我想现在运行循环并添加值,但我收到此错误:
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();
}
答案 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