6

我在 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 创建的表中有两个字段 - id (text)值“300”和password (text)值“500”,但它发生了。loginID当然,我会检查它何时loginPassword使用相同的 2 个值。我检查了有关与数据库连接的所有其他事情,一切正常..所以我认为问题出在 .sql 语法中strSQLcount

4

1 回答 1

6

您忘记调用next()结果集:

ResultSet numOfMatchResult = prepareSQL.executeQuery();
int numOfMatch = 0;
if (rs.next() {    
    numOfMatch = numOfMatchResult.getInt(1);
}

如果这不足以解决问题,请粘贴异常的整个堆栈跟踪:它包含有意义的信息。

于 2012-08-05T08:39:24.833 回答