java.sql.SQLException: Before start of result set解决方案

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

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()

在这里插入图片描述
有时候一个细节不知道会让你无从下手,希望这个问题可以帮助到和我一样的“新猿”!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值