很简单的一个oracle 建的表格 admin,其中就是两行,分别是,username 和password
用一个函数根据username查询 password
代码如下:
public void queryAdmin(String username) throws SQLException{
try{
Class.forName(sDBDriver);
}
catch(java.lang.ClassNotFoundException e){
System.err.println("queryAdmin:"+e.getMessage());
}
//initialize the query string
String sql="select Password from Admin where Username= ?";
ResultSet rs=null;
try{
//connect database
conn=DriverManager.getConnection(sConnStr,"VIC","292929");
//create PrepareStatement instance prepStmt
PreparedStatement prepStmt=conn.prepareStatement(sql);
// set the value of each "?"
prepStmt.setString(1,username);
//excute querying
rs=prepStmt.executeQuery();
if(rs.next()){
setUsername(username);
setPassword(rs.getString(1)); //password被set进了instance的一个参数
}
if(rs!=null) rs.close();
if(prepStmt!=null)
prepStmt.close();
if(conn!=null)
conn.close();
}
catch(SQLException ex){
System.err.println("Administrator queryAdmin executeQuery:"+ex.getMessage());
}
}运行的结果,不论Password是什么,getPassword()返回的都是空值,相当奇怪。各位帮我看看什么问题啊
用一个函数根据username查询 password
代码如下:
public void queryAdmin(String username) throws SQLException{
try{
Class.forName(sDBDriver);
}
catch(java.lang.ClassNotFoundException e){
System.err.println("queryAdmin:"+e.getMessage());
}
//initialize the query string
String sql="select Password from Admin where Username= ?";
ResultSet rs=null;
try{
//connect database
conn=DriverManager.getConnection(sConnStr,"VIC","292929");
//create PrepareStatement instance prepStmt
PreparedStatement prepStmt=conn.prepareStatement(sql);
// set the value of each "?"
prepStmt.setString(1,username);
//excute querying
rs=prepStmt.executeQuery();
if(rs.next()){
setUsername(username);
setPassword(rs.getString(1)); //password被set进了instance的一个参数
}
if(rs!=null) rs.close();
if(prepStmt!=null)
prepStmt.close();
if(conn!=null)
conn.close();
}
catch(SQLException ex){
System.err.println("Administrator queryAdmin executeQuery:"+ex.getMessage());
}
}运行的结果,不论Password是什么,getPassword()返回的都是空值,相当奇怪。各位帮我看看什么问题啊
如果没有值,那么检查你的数据库里面是否有值,还有你的select Password from Admin where Username= ?这句是否正确
这样不好猜测你哪部出错了,贴出你的异常代码吧
改成
setPassword(rs.getString(”Password“)); //password被set进了instance的一个参数
数据库有值,代码运行无异常,你说的异常代码不知从哪里看,select Password from Admin where Username= ?
这句已经简单到不能在简单了.其实这只是我做的一个bean里的方法,在login.jsp中来验证admin的login输入的。但是我
惊奇的发现输入正确password的时候,就会把页面导向error.jsp,反而不输入password的时候能过通过验证,很明显这个
方法返回的是一个null的password,从而使得不输入password的时候反而通过验证了。
1.你要肯定你的sql语句确实没有错。
2.你在setXX值的时候,与你在判断的是否为同一个domain。
这种 东西自己debug就知道了 lZ加油啊!!
setPassword(rs.getString(1)); //password被set进了instance的一个参数
楼主,不知道你这个是放在了哪里,是bean还是其他.但是觉得你set之后应该将你保存数据之后的对象返回,如果你在取数据的时候是新建了一个对象的话,那你的password就应该是空的,同时你的username也是空的. 要是username不是空的,那就是你数据库里取值取失败了. ...你把问题再详细点贴出来吧
这句代码好像错了;好像应该是这样prepStmt.setString(0,username);