源码
jb4.addActionListener(new ActionListener() {// 新增按钮事件监听器
public void actionPerformed(ActionEvent e) {
String str3, str4, str5, str6, str8 = null, str9 = null;
String str1 = jt2.getText();
String str2 = jt3.getText();
str3 = jt4.getText();
str4 = jt5.getText();
str5 = jt6.getText();
String str7 = "select ano from apply where ano='" + str1 + "'";
if (str1.equals("") || str2.equals("") || str3.equals("") || str4.equals("") || str5.equals("")) {
JOptionPane.showMessageDialog(null, "各项信息不能为空");
} else {
try {
mysql.sql = mysql.con.createStatement();// 插入之前先在数据库里面查
mysql.res = mysql.sql.executeQuery(str7);
while (mysql.res.next()) {
str8 = mysql.res.getString("ano");
}
str9 = mysql.res.getString("ano");
if (str8 == null) {
str8 = "insert into apply values(?,?,?,?,?)";
PreparedStatement sql = mysql.con.prepareStatement(str8);
sql.setString(1, str1);
sql.setString(2, str2);
sql.setString(3, str3);
sql.setString(4, str4);
sql.setString(5, str5);
int result = sql.executeUpdate();
JOptionPane.showMessageDialog(null, "插入成功");
} else {
JOptionPane.showMessageDialog(null, "申请编号已存在");
}
} catch (SQLException e1) {
e1.printStackTrace();
}
}
}
});
报错
错误分析
这个是由于当我们从数据库里面读取数据的时候,引用了多个结果集,但前一个结果集取得后,已经和数据库关闭,后面还在引用结果集。也就是下面的代码
try {
mysql.sql = mysql.con.createStatement();// 插入之前先在数据库里面查
mysql.res = mysql.sql.executeQuery(str7);
while (mysql.res.next()) {
str8 = mysql.res.getString("ano");
}
str9 = mysql.res.getString("ano");
str8 引用结果集的是在 try 语句里面进行的,也就是数据库的连接还没有关闭,这个时候是没有问题的,但是当出现 str9 引用结果集的时候,这个时候 try 语句已经结束了,也就是和数据库已经断开连接了,所以会产生java.sql.SQLException: After end of result set的错误。