2 回答
TA贡献1842条经验 获得超12个赞
尝试这个:
try{
rs.next();
System.out.println(rs.getString("5"));
}catch(Exception ex){
System.out.println(ex.getMessage("5"));
}
TA贡献1772条经验 获得超5个赞
你的连接在哪里打开?您不应该无限期或不必要地保持连接打开。您的结果集没有调用其 next() 函数,因此您没有迭代数据。但是,您不应该通过公共方法(或一般恕我直言)传递结果集。而是创建一个类来表示结果集中的数据,并将结果集加载到所述对象中(然后返回)。
尝试改为:
public static void main(String[] args) {
LocationDA locate = new LocationDA();
Record record = locate.getRecord("81");
try{
System.out.println(record.getLandmark());
}catch(Exception ex){
System.out.println(record.getMessage());
}
}
public ResultSet getRecord(String id) {
String sql = "SELECT * FROM LOCATION WHERE ID = ?";
try (Connection conn = ConnectionManager.getConnection()){
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setString(1, id);
ResultSet rs = pstmt.executeQuery();
while(rs.next()){
Record record = new Record();
record.setContinent(rs.getString(2));
//etc.
return record;
}
} catch (SQLException e) {
e.printStackTrace();
} catch(Exception e){
e.printStackTrace();
}
return null;
}
可以更改它以满足您的需要(例如不返回 null);
添加回答
举报