login()登陆检测,函数不能进入if(rs.next)中,求解释
public boolean login(String account,String password){
boolean check = false;
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
try {
Connection conn = DriverManager.getConnection(
"jdbc:oracle:thin:@localhost:1521:orcl", "system", "oracle");
String sql = "SELECT account,password from manager where account=? and password=?";
PreparedStatement ps = conn.prepareStatement(sql);
ps.setString(1, account);
ps.setString(2, password);
ResultSet rs = ps.executeQuery();
if(rs.next()){
//System.out.println(rs.getString("account"));
//System.out.println(rs.getString("password"));
check = true;
}
ps.close();
conn.close();
} catch (
SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} catch (
ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return check;
}
为什么函数不能进入if()里面呢?也就是说我初始化check是什么值,返回就是什么值。请大神帮我看看啊!
------最佳解决方案--------------------
char是定长,不足的用空格补。
Java里用String Oracle数据库用varchar2对应。
------其他解决方案--------------------
char(18)....char....ca
我才看到。。。
------其他解决方案--------------------
SELECT account,password from manager where account=? and password=?查不到值当然进不去了
------其他解决方案--------------------ResultSet rs = ps.executeQuery();
结果集 rs 里没有东东
那么
if(rs.next()){
}
就进不去了
debug 下 看看吧 应该是select 没有查询到数据
------其他解决方案--------------------但是我是用数据库已有的账号密码验证的啊,那么rs有数据啊?
------其他解决方案-------------------- 你把ResultSet rs 定义到try catch外面去试试看.
------其他解决方案--------------------确定是这个错误!!!
------其他解决方案--------------------首先我觉得看着你的sql语句感觉怪怪的...建表的时候应该有主键值吧,你试着把where后面的语句改为id=?,然后set一下试试...
------其他解决方案--------------------为什么要定义到外面?解释一下
------其他解决方案--------------------
如果没报异常的话 那么就是你传递的账户和密码和数据库对应不上、
查看你传递的账户密码是否与数据库表里的数据对应、
在oracle里执行
SELECT account,password from manager where account="你传递的账户" and password="你传递的密码"
是否有返回结果
------其他解决方案--------------------