首页 新闻 搜索 专区 学院

请问一个JDBC'查询数据库,Resultset 结果集为null的问题

0
悬赏园豆:100 [待解决问题]

public static void main(String[] args) throws SQLException, ClassNotFoundException {
Class.forName("com.mysql.jdbc.Driver");
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/newdb3", "root", "");
String sql = "select * from t_user where uname=? and pwd=?";
PreparedStatement ps = conn.prepareStatement(sql);
ps.setString(1, "张三");
ps.setString(2, "123");
Resultset rs = ps.executeQuery();

    System.out.println(rs);
    while (rs.next()) {
        User u = new User();
        u.setUid(rs.getInt("uid"));
        u.setUanme(rs.getString("uname"));
        u.setPwd(rs.getString("pwd"));
    }
    System.out.println(u);
    rs.close();
    ps.close();
    conn.close();

}

输入结果U为null,无法进入循环,给u赋值

_Rorschach的主页 _Rorschach | 初学一级 | 园豆:102
提问于:2019-02-21 20:36
< >
分享
所有回答(3)
0

表里没有名字叫张三,密码为123的用户?
另外使用前先判空,循环只使用一个后面最好加个break

流年飞雨 | 园豆:1983 (小虾三级) | 2019-02-22 10:24

还有可能因为张三是中文,项目编码和数据库编码不一致的问题

支持(0) 反对(0) 流年飞雨 | 园豆:1983 (小虾三级) | 2019-02-22 10:25
0

User u = new User(); 放在while定义了,那么System.out.println(u); 的输出也应该放在while中
while (rs.next()) {
User u = new User();
u.setUid(rs.getInt("uid"));
u.setUanme(rs.getString("uname"));
u.setPwd(rs.getString("pwd"));
System.out.println(u);
}

jerry-Tom | 园豆:4077 (老鸟四级) | 2019-03-01 14:12
0

Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/newdb3", "root", "");
while (rs.next()) {
User u = new User();
u.setUid(rs.getInt("uid"));
u.setUanme(rs.getString("uname"));
u.setPwd(rs.getString("pwd"));
}
System.out.println(u);
}
1、数据连接是不是真没有密码
2、局部变量只能在局部使用,所以将对象输出移到while循环里面看是否有输出,如果没有哪么错误点在连接到结果集之间

一世红尘 | 园豆:321 (菜鸟二级) | 2019-03-25 13:05
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册