[英]How to insert values in mysql database if one of the column is auto increment using prepared statement
public String put(){
this.query = "INSERT INTO user_registration VALUES('default', '?' , '?' , '?' , '?' , '?' );";
try {
PreparedStatement stmt= Main.connection.prepareStatement(query);
stmt.setString(1,this.fullname);
stmt.setString(2,this.username);
stmt.setString(3,this.password);
stmt.setString(4,this.email);
stmt.setString(5,this.contact);
stmt.executeUpdate();
return String.valueOf(SignupStatus.SUCCESS);
} catch (SQLException e) {
e.printStackTrace();
System.out.println(e);
return String.valueOf(SignupStatus.FAILED);
}
}
我收到此異常:
java.sql.SQLException: Parameter index out of range (1 > number of parameters, which is 0).
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:129)
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:97)
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:89)
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:63)
at com.mysql.cj.jdbc.ClientPreparedStatement.checkBounds(ClientPreparedStatement.java:1372)
at com.mysql.cj.jdbc.ClientPreparedStatement.getCoreParameterIndex(ClientPreparedStatement.java:1385)
at com.mysql.cj.jdbc.ClientPreparedStatement.setString(ClientPreparedStatement.java:1752)
at client_sharenow.Signup.put(Signup.java:29)
at client_sharenow.Client_Request.run(Client_Request.java:40)
at java.base/java.lang.Thread.run(Thread.java:832)
java.sql.SQLException: Parameter index out of range (1 > number of parameters, which is 0).
請幫我更正代碼。
?
占位符不能用單引號括起來。
此外,在您的語句中包含將接收每個提供的值的列名稱也是一種很好的做法。
如果第一列是自動遞增列,那么您應該從列表中省略它,因為它的值將由 MySql 提供:
this.query = "INSERT INTO user_registration(fullname, username, password, email, contact) VALUES (?, ?, ?, ?, ?);";
將列名稱更改為實際名稱。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.