我在servlet中有以下代码 -
String loginID = request.getParameter("loginId").toString();
String loginPassword = request.getParameter("loginPassword").toString();
String strSQLcount = "SELECT COUNT(*) as 'Number Of Match' "
+ "FROM persons " + "WHERE (password =? AND id =?);";
PreparedStatement prepareSQL = connection
.prepareStatement(strSQLcount);
prepareSQL.setString(1, loginPassword);
prepareSQL.setString(2, loginID);
ResultSet numOfMatchResult = prepareSQL.executeQuery();
// now we know number of matchs ...
int numOfMatch = numOfMatchResult.getInt(1);
在运行并到达第int numOfMatch = numOfMatchResult.getInt(1);
行时,它会抛出异常 - java.sql.SQLException
。我查了一下,发现它是因为executeQuery()
找不到任何人。虽然我在persons
表中,使用MySQL创建了2个字段,但它仍然存在 -
id (text)
的值为“300”,password (text)
的值为“500”。当然,我在loginID
和loginPassword
时使用相同的2值进行检查。我检查了与DB的连接的所有其他事情,它没关系..所以我认为问题出在strSQLcount
的SQL语法中。
答案 0 :(得分:6)
您忘记在结果集上调用next()
:
ResultSet numOfMatchResult = prepareSQL.executeQuery();
int numOfMatch = 0;
if (rs.next() {
numOfMatch = numOfMatchResult.getInt(1);
}
如果这还不足以解决问题,请粘贴异常的整个堆栈跟踪:它包含有意义的信息。