Он дает эту ошибку:
"java.sql.SQLException: Индекс параметров вне диапазона (1> количество параметров, которое равно 0)."
Это код:
public void insertData(int id,String name, String status, String age){
String sql = "INSERT INTO student_table (id,name,satus,age) VALUES (id,name,status,age)";
try (Connection conn1 = this.connects();PreparedStatement Prepst= conn1.prepareStatement(sql)){
Prepst.setInt(1, id);
Prepst.setString(2, name);
Prepst.setString(3, status);
Prepst.setString(4, age);
Prepst.executeUpdate();
}catch(Exception e){
System.err.println(e);
}
Если я изменил индекс параметра на другое значение, то есть:
Prepst.setInt(0, id);
то он дает эту ошибку:
"java.sql.SQLException: Индекс параметров вне диапазона (0 <1)."
----UPDATE -----
Я вставил этот код:
String sql = "INSERT INTO student_table (id,name,satus,age) VALUES (?,?,?,?)";
Он производит то же самое:
Структура таблицы:
Ваше выражение SQL
INSERT INTO student_table (id,name,satus,age) VALUES (id,name,status,age)
на самом деле не имеет никаких параметров. Попробуйте:
INSERT INTO student_table (id,name,satus,age) VALUES (?,?,?,?)
PreparedStatement
индексация параметров начинается с 1, а не с 0.
Попробуй это...
public void insertData(int id,String name, String status, String age){
String sql = "INSERT INTO student_table (id,name,satus,age) VALUES (?,?,?,?)";
try (Connection conn1 = this.connection;PreparedStatement Prepst= conn1.prepareStatement(sql)){
Prepst.setInt(1, id);
Prepst.setString(2, name);
Prepst.setString(3, status);
Prepst.setString(4, age);
Prepst.executeUpdate();
}catch(Exception e){
System.err.println(e);
}
}
(?,?,?,?)
Верна, но первый параметр находится в позиции 1, а не 0.