1 回答

TA貢獻(xiàn)1895條經(jīng)驗(yàn) 獲得超3個(gè)贊
您將在一次迭代后關(guān)閉連接,這將導(dǎo)致在第二次迭代時(shí)在javasql異常上關(guān)閉ResultSet后不允許操作,將con.close移到循環(huán)外
public class UserDAOImpl implements UserDAO{
public List<User> readUser() {
List<User> list = new ArrayList();
User u = new User();
try {
System.out.println("inside readuser impl");
Class.forName("com.mysql.jdbc.Driver");
Connection con =
DriverManager.getConnection("jdbc:mysql://localhost:3306/userdb", "root", "");
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery("select * from user");
while (rs.next()) {
int id = rs.getInt("id");
String name = rs.getString("name");
String address = rs.getString("address");
u.setId(id);
u.setName(name);
u.setAddress(address);
System.out.println(u);
list.add(u); //adding user object to list
}
} catch (Exception e) {
System.out.println(e);
}
con.close();
return list; //returning to list for json response
}
}
甚至您可以對(duì)資源使用try它將自動(dòng)關(guān)閉所有資源
public class UserDAOImpl implements UserDAO{
public List<User> readUser() {
List<User> list = new ArrayList();
User u = new User();
try( Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/userdb", "root", "");
Statement stmt = con.createStatement();ResultSet rs = stmt.executeQuery("select * from user");){
System.out.println("inside readuser impl");
while (rs.next()) {
int id = rs.getInt("id");
String name = rs.getString("name");
String address = rs.getString("address");
u.setId(id);
u.setName(name);
u.setAddress(address);
System.out.println(u);
list.add(u); //adding user object to list
}
} catch (Exception e) {
System.out.println(e);
}
return list; //returning to list for json response
}
}
我沒有測(cè)試第二個(gè),因?yàn)槲覜]有這臺(tái)機(jī)器的環(huán)境
添加回答
舉報(bào)