正在回答
7回答
同学你好。可以检查一下代码中有没有使用rs.getString();的地方。使用rs.getString();前一定要加上rs.next();
ResultSet对象代表SQL语句执行的结果集,维护指向其当前数据行的光标。
每调用一次next()方法,光标向下移动一行。最初它位于第一行之前,因此第一次调用next()应把光标置于第一行上,使它成为当前行。
随着每次调用next()将导致光标向下移动一行。在ResultSet对象以及其他父辈Statement对象关闭之前,光标一直保持有效。
如果解答了同学的疑问,望采纳~
祝学习愉快~
LuckiTC
2019-07-05 19:55:07
package com.imooc.dao.Impl;
import java.sql.Connection;
import java.sql.ResultSet;
import com.imooc.dao.UserDao;
import com.imooc.domain.User;
import com.imooc.utils.JDBCUtils;
import java.sql.PreparedStatement;
public class UserDaoImpl implements UserDao {
@Override
public User login(User user) {
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
System.out.println("开始数据库连接");
try {
conn = JDBCUtils.getConnection();
String sql = "select * from user where username= ? and password= ?";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, user.getUsername());
pstmt.setString(2, user.getPassword());
//System.out.println(sql);
rs = pstmt.executeQuery();
System.out.println(rs.getInt("username"));
System.out.println("数据库连接成功");
if (rs.next()) {
User exitUser = new User();
exitUser.setUid(rs.getInt("uid"));
exitUser.setPassword(rs.getString("password"));
exitUser.setUsername(rs.getString("username"));
return exitUser;
}
} catch (Exception e) {
e.printStackTrace();
} finally {
JDBCUtils.release(rs, pstmt, conn);
}
return null;
}
}
3. Java 数据库开发与实战应用
- 参与学习 人
- 提交作业 357 份
- 解答问题 8016 个
本阶段将带你学习MySQL数据库,JDBC接口,MyBatis框架等,带你掌握的数据的存放和管理。
了解课程






恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星