奇怪问题,请高手指点,Illegal operation on empty result set. 本帖最后由 lxkj123 于 2010-01-28 11:14:26 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 Illegal operation on empty result set你的数据集返回的是null值1) 检查你的sql语句 是否正确2) 确实无数据返回 要加异常处理 看Exception就知道,是对空数据集的操作是非法的 源程序对应: public static MaplePet loadFromDb(int itemid, byte position, int petid) { try { MaplePet ret = new MaplePet(itemid, position, petid); Connection con = DatabaseConnection.getConnection(); // Get a connection to the database PreparedStatement ps = con.prepareStatement("SELECT * FROM pets WHERE petid = ?"); // Get pet details.. ps.setInt(1, petid); ResultSet rs = ps.executeQuery(); if(rs.next()); { ret.setName(rs.getString("name")); ret.setCloseness(rs.getInt("closeness")); ret.setLevel(rs.getInt("level")); ret.setFullness(rs.getInt("fullness")); } rs.close(); ps.close(); return ret; } catch (SQLException ex) { Logger.getLogger(MaplePet.class.getName()).log(Level.SEVERE, null, ex); return null; } } //有可能rs为空if(rs.next()); if(rs.next()); //这里这么有个分号?if(rs != null && rs.next()){} SELECT * FROM pets WHERE petid = id去数据库先查一查数据在说,你数据库没数据吧 if(rs.next()) { ret.setName(rs.getString("name")); ret.setCloseness(rs.getInt("closeness")); ret.setLevel(rs.getInt("level")); ret.setFullness(rs.getInt("fullness")); } 重新运行试试,保证执行的是重新编译过的class。 rs.close(); 放到finally语句试试 if(rs.next()); { ret.setName(rs.getString("name")); ret.setCloseness(rs.getInt("closeness")); ret.setLevel(rs.getInt("level")); ret.setFullness(rs.getInt("fullness")); } else{return null;} return ret; } catch (SQLException ex) { Logger.getLogger(MaplePet.class.getName()).log(Level.SEVERE, null, ex); return null; }finnal{ rs.close(); ps.close(); } [swing] JTable怎么给选中行添加监听器 谁知道,浮点数在计算计是怎么表示的? 寻求简单通讯的例子 多线程的问题一个 请问java开发的application程序如何运行? 用java做一个数据copy的batch 笔试的问题:Unicode与中文的相互转换 100分请教一个问题:是关于异常处理的 为什么我在命令行输入可以运行,可是把命令写到文件里用 < file > outfile 这样的命令就出错呢? 要给JTextField加水平滚动条,怎么办? 正则表达式的子集 请教一个网页生成图片的问题
1) 检查你的sql语句 是否正确
2) 确实无数据返回 要加异常处理
public static MaplePet loadFromDb(int itemid, byte position, int petid) {
try {
MaplePet ret = new MaplePet(itemid, position, petid);
Connection con = DatabaseConnection.getConnection(); // Get a connection to the database
PreparedStatement ps = con.prepareStatement("SELECT * FROM pets WHERE petid = ?"); // Get pet details..
ps.setInt(1, petid);
ResultSet rs = ps.executeQuery();
if(rs.next());
{
ret.setName(rs.getString("name"));
ret.setCloseness(rs.getInt("closeness"));
ret.setLevel(rs.getInt("level"));
ret.setFullness(rs.getInt("fullness"));
}
rs.close();
ps.close();
return ret;
} catch (SQLException ex) {
Logger.getLogger(MaplePet.class.getName()).log(Level.SEVERE, null, ex);
return null;
}
}
if(rs.next());
if(rs != null && rs.next()){}
去数据库先查一查数据在说,你数据库没数据吧
{
ret.setName(rs.getString("name"));
ret.setCloseness(rs.getInt("closeness"));
ret.setLevel(rs.getInt("level"));
ret.setFullness(rs.getInt("fullness"));
}
重新运行试试,保证执行的是重新编译过的class。
{
ret.setName(rs.getString("name"));
ret.setCloseness(rs.getInt("closeness"));
ret.setLevel(rs.getInt("level"));
ret.setFullness(rs.getInt("fullness"));
} else{
return null;
} return ret;
} catch (SQLException ex) {
Logger.getLogger(MaplePet.class.getName()).log(Level.SEVERE, null, ex);
return null;
}finnal{
rs.close();
ps.close();
}