мне нужно получить последний идентификатор, введенный в мою базу данных, это AUTO_INCREMENT, поэтому я сделал это
String Var = "SELECT MAX(id) FROM goupe ; ";
ResultSet vari=st.executeQuery(Var);
while(vari.next()){
nombre = vari.getInt("id");}
String sql = "INSERT INTO Student(name,famillyname,email,password,module,speciality,card,id_goupe)VALUES('"+name+"','"+familly+"','"+email+"','"+pass+"','"+module+"','"+specialite+"','"+card+"','"+nombre+"');";
st.execute(sql);
но у меня была эта проблема "Идентификатор столбца" не найден. Итак, что мне делать, чтобы все было правильно.
В качестве альтернативы вы можете выполнить vari.getInt(1), чтобы получить значение первого столбца результата.
спасибо @Berger, это сработало
спасибо @SurfMan, который тоже сработал
ob xkcd




Когда вы выполняете запрос SELECT MAX(id) FROM goupe;, то в возвращаемой таблице имя столбца больше не остается как id.
Итак, лучший подход - указать имя для столбца, как показано ниже:
SELECT MAX(id) AS maxid FROM goupe;
Затем вы можете получить значение, используя:
vari.getInt("maxid")
Я должен сказать, что есть несколько действительно простых вещей, которые вы можете сделать, чтобы значительно улучшить свой код.
Поскольку ваш код - это просто фрагмент, я также предоставлю только фрагмент:
int index = 1;
String sql = "INSERT INTO Student(name,famillyname,email,password,module,speciality,card,id_goupe)" +
"VALUES(?,?,?,?,?,?,?,(SELECT MAX(id) FROM goupe));";
PreparedStatement ps = connection.prepareStatement(sql);
ps.setString(index++, name);
ps.setString(index++, familyname);
ps.setString(index++, email);
ps.setString(index++, password);
ps.setString(index++, module);
ps.setString(index++, speciality);
ps.setString(index++, card);
int rows = ps.executeUpdate();
if (rows == 1) {
System.out.println("Successfully inserted row");
}
Дайте название вашему результату, например
SELECT MAX(id) AS maxid FROM goupe..vari.getInt("maxid")