6

サーブレットに次のコードがあります-

            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.SQLExceptionexecuteQuery() 誰も検索しなかったので確認してみました。これは、MySQLで作成されたテーブルに、値「300」と値「500」personsの2つのフィールド がありますが発生します。そしてもちろん、同じ2つの値でチェックします。DBへの接続について他のすべてのことを確認しましたが、問題はありませんでした。問題はのSQL構文にあると思います。id (text)password (text)loginIDloginPasswordstrSQLcount

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 に答える