日期:2014-05-17  浏览次数:20763 次

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一下试试...
------其他解决方案--------------------
引用:
你把ResultSet rs 定义到try catch外面去试试看.
为什么要定义到外面?解释一下
------其他解决方案--------------------
引用:
public boolean login(String account,String password){
boolean check = false;
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
try {
Connection conn = DriverManager.getConnecti……



如果没报异常的话  那么就是你传递的账户和密码和数据库对应不上、

查看你传递的账户密码是否与数据库表里的数据对应、

在oracle里执行

SELECT account,password from manager where account="你传递的账户" and password="你传递的密码"

是否有返回结果

------其他解决方案--------------------