今天在写老师布置的利用servlet+JDBC+JSP做一个登录平台的时候遇到一个问题,就是按用户名查询数据库中的用户信息时一直包java.sql.SQLException: Before start of result set错,下面是的的部分代码
dao实现类
java">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;
}
测试方法
java"> @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()
有时候一个细节不知道会让你无从下手,希望这个问题可以帮助到和我一样的“新猿”!