java.sql.SQLException: Before start of result set解决方案
今天在写老师布置的利用servlet+JDBC+JSP做一个登录平台的时候遇到一个问题,就是按用户名查询数据库中的用户信息时一直包java.sql.SQLException: Before start of result set错,下面是的的部分代码
dao实现类
public class Userdao_Impl implements User_dao {
@Override
public User select(String name) throws SQLException {
Connection connection = JDBC_Util.getConnection();
PreparedStatement ps = connection.prepareStatement("select * from user_info where name = ?");
ps.setString(1,name);
ResultSet resultSet = ps.executeQuery();
if (resultSet!=null){
User user = new User();
user.setName(resultSet.getString("name"));
user.setId(resultSet.getInt("id"));
user.setPassword(resultSet.getString("password"));
JDBC_Util.close(ps, connection, resultSet);
return user;
}
JDBC_Util.close(ps, connection, resultSet);
return null;
}
测试方法
@Test
public void sele_name() throws SQLException {
User_dao dao = new Userdao_Impl();
String name = "lxh";
User user = dao.select(name);
System.out.println(user);
}
得到的结果

这让我很疑惑,我开始还以为是我的sql语句有问题,debug后发现没问题,最后才发现,原来resultSet没有移动光标,直接得到的resultSet就直接去获取此 ResultSet 对象的当前行中指定列的值。后面增加了一行resultSet.next()问题就解决了。
添加resultSet.next()

有时候一个细节不知道会让你无从下手,希望这个问题可以帮助到和我一样的“新猿”!
在使用JDBC进行数据库查询时,遇到`java.sql.SQLException: Before start of resultset`的问题。问题出在尝试在resultSet未移动到第一条记录前获取数据。解决方案是在读取resultSet之前调用`resultSet.next()`来移动光标。这个小疏忽可能导致开发者花费不少时间,但一旦注意到,问题便能迅速解决。该博客分享了这一经验,希望能帮助遇到相同问题的初学者。

220

被折叠的 条评论
为什么被折叠?



