首页 > 解决方案 > 在java中获取sql命令的结果

问题描述

我需要获取在我的数据库中输入的最后一个 ID 女巫是 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);

但我有这个问题没有找到列'id'。所以我应该怎么做才能让它正确。

标签: javasql

解决方案


我不得不说,你可以做一些非常简单的事情来极大地改进你的代码。

  • 如果您的最新 ID 是在其他地方生成的,则将查询直接嵌入到语句中,这样您就不需要去获取它。这将降低竞争条件的风险。
  • 使用 PreparedStatements。让我问您这个问题:如果您的用户之一是 O'Ryan,您认为会发生什么?

由于您的代码只是一个片段,我也只会提供一个片段:

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");
}

推荐阅读