昨天做了一个登录验证的例子,但是很奇怪,明明有数据但是却读不出来,不知道是什么原因?String sql = "select * from userinfo where loginname = ?";
dbConnection = ConnectionManager.getConnection();
pStatement = dbConnection.prepareStatement(sql);
pStatement.setString(1, user);
res = pStatement.executeQuery();
if(res.next()&& res.getString("password").equals(pass))
{
return true;
}
按照上面的方式,res.next()返回ture表示有记录,但是res.getString("password")却引发异常,说res没有当前行。后来只有改成下面这种方式,运行成功.这个时候就又可以使用res.getString("password")了: String sql = "select * from userinfo where loginname = ? and password = ?";
dbConnection = ConnectionManager.getConnection();
pStatement = dbConnection.prepareStatement(sql);
pStatement.setString(1, user);
pStatement.setString(2, pass);
res = pStatement.executeQuery();
if(res.next())
{
String s = res.getString("password");
return true;
}
dbConnection = ConnectionManager.getConnection();
pStatement = dbConnection.prepareStatement(sql);
pStatement.setString(1, user);
res = pStatement.executeQuery();
if(res.next()&& res.getString("password").equals(pass))
{
return true;
}
按照上面的方式,res.next()返回ture表示有记录,但是res.getString("password")却引发异常,说res没有当前行。后来只有改成下面这种方式,运行成功.这个时候就又可以使用res.getString("password")了: String sql = "select * from userinfo where loginname = ? and password = ?";
dbConnection = ConnectionManager.getConnection();
pStatement = dbConnection.prepareStatement(sql);
pStatement.setString(1, user);
pStatement.setString(2, pass);
res = pStatement.executeQuery();
if(res.next())
{
String s = res.getString("password");
return true;
}
这种写法是很不正规得!你想象下,你没有res.next()得限制就去取出
res.getString("password")那么res.getString("password")取出值是什么?
if(res.next())
{
if(res.getString("password").equals(pass))
{
return true;
}
}