问题遇到的现象和发生背景
将MySQL的两张表数据导入到java中出现错误
用代码块功能插入代码,请勿粘贴截图
package view;
import com.mysql.cj.protocol.Resultset;
import java.sql.*;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
public class load {
//从数据库中加载信息
public static void loadStudent(ArrayList<Student> ls,ArrayList<curriculumDesign> lc,
HashMap<Integer,String> hm1,HashMap<Integer,Integer> hm2){
String url="jdbc:mysql:///course_selection_management?useSSL=true";
String username="root";
String userpwd="******";
String sql1="select * from student;";
String sql2="select * from curriculum_design;";
Connection con= null;
Statement st= null;
ResultSet rs1= null;
ResultSet rs2= null;
try {
con = DriverManager.getConnection(url,username,userpwd);
st=con.createStatement();
rs1=st.executeQuery(sql1);
rs2=st.executeQuery(sql2);
Student s=null;
curriculumDesign cd=null;
for(int i=0;rs1.next();i++){
hm1.put(i,rs1.getString(1));
s=new Student();
s.setSno(rs1.getString(1));
s.setSname(rs1.getString(2));
s.setGender(rs1.getString(3));
s.setAge(rs1.getInt(4));
s.setSclass(rs1.getString(5));
s.setMajor(rs1.getString(6));
s.setId(rs1.getInt(7));
ls.add(s);
}
for(int i=0;rs2.next();i++){
hm2.put(i,rs2.getInt(1));
cd=new curriculumDesign();
cd.setId(rs2.getInt(1));
cd.setCname(rs2.getString(2));
cd.setKeyWord(rs2.getString(3));
cd.setTechnique(rs2.getString(4));
cd.setNum(rs2.getInt(5));
lc.add(cd);
}
//测试
for(int i=0;i<ls.size();i++){
System.out.println(ls.get(i).getSno());
}
} catch (SQLException e) {
throw new RuntimeException(e);
} finally {
if(con!=null){
try {
rs1.close();
rs2.close();
st.close();
con.close();
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
}
}
}
运行结果及报错内容
Exception in thread "main" java.lang.RuntimeException: java.sql.SQLException: Operation not allowed after ResultSet closed
我的解答思路和尝试过的方法
我想应该是使用了两个sql语句的原因,我尝试删除一个sql后发现程序果然正常跑了起来,但是该如何导入两个表的数据呢