java - 在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'。所以我应该怎么做才能让它正确。
解决方案
我不得不说,你可以做一些非常简单的事情来极大地改进你的代码。
- 如果您的最新 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");
}
推荐阅读
- c# - 尝试解析 Post 请求返回的 HTML
- c# - 如何监控 Stream 的下载进度
- ios - CIFilter 链的性能改进?
- sas - 动态划分多列
- python - 从 channel.history 的消息中获取创建日期
- json - 如何在 BigQuery 中检查键的值是 ARRAY 还是 STRUCT
- angular - 量角器:失败:未找到元素。7030ms 后等待超时
- git - 在 Git Windows 中将 SSH 密钥添加到 SSH-Agent
- sql - 如何将 21-03-18 14:01:03.000000000 AMERICA/TORONTO 转换为 2021-03-18 14:01:03.000-04:00
- python - 以编程方式使用字典更新 Twilio 数字属性