0
public int countBookings() throws SQLException{

    ResultSet rs=null;
    PMDBController db=new PMDBController();
    int rowCount=0;

    db.getConnection();

    String dbQuery="SELECT COUNT(User) AS UserCount FROM INSTRUCTORBOOKING WHERE USER ='"+instructorId+"'";

    rs=db.readRequest(dbQuery);

    try{
        if(rs.next()){
            instructorId=rs.getString("UserCount");
        }
    }catch(Exception e){
        e.printStackTrace();
    }

    rs.last();
    rowCount=rs.getRow();
    db.terminate();

    return rowCount;
}

基本的に、このメソッドが行うことになっているのは、データベースから取得した行数をカウントすることです。ただし、中身に関係なく常に 1 を返します。ヘルプ!

4

3 に答える 3

1

クエリに問題があるようです。1 人のユーザーのみを選択するため、カウントは常に 1 になります。

"SELECT COUNT(User) AS UserCount FROM INSTRUCTORBOOKING WHERE USER ='"+instructorId+"'"

WHERE 句を削除してみてください。それはあなたが望んでいるものではないかもしれませんが、たった 1 つのクエリからデータ モデルを確認することはできません。

于 2013-02-01T11:07:19.127 に答える
0

rowCount = rs.getInt("UserCount");代わりにinstructorId = rs.getString("UserCount");トリックを行います。つまり、行数を読み取りますが、変数instructorIdに読み込みます。

于 2013-02-01T11:08:58.753 に答える
0

行数は常に 1 です。クエリは実際の行ではなく行数を返すように設計されているため、確認する必要があるのはその行の値です。

SELECT COUNT(User) AS UserCount FROM INSTRUCTORBOOKING WHERE USER ='"+instructorId+"'"

行数が探している数になると誤って解釈しました。

于 2013-02-01T11:20:46.453 に答える