2016-03-28 14 views
0

データベースからすべてのデータを取得したいと同時に、取得するデータの行数を知りたい。そして、これは私のSQLです:
SELECT COUNT(*)を使用してResultSetのサイズを取得

rs = s.executeQuery("SELECT COUNT(*), * FROM tblUser"); 

これは、有効なSQL文のですか?すべてのデータを取得した後、それらを異なる変数に設定する方法は?たとえば、データベースにUserIDという列がありますが、rs.getString('UserID')を使用して取得できますが、COUNT(*)の結果を取得する方法はありますか。

+0

どのようなデータベースを使用していますか? –

+0

私はそれが有効なSQLではないと言います。 count()は一般的に別々に行わなければならないでしょう。 Countは1レコードしか返しません。 – kevingreen

+0

通常の選択を行い、結果セットの行数を取得します –

答えて

6

SQLはではなく、が有効です。

select count(*) over() as total_cnt, 
     u.* 
from tblUser u; 

これは、すべての行に新しい列を追加します。これはあなたが望むように見えます。これを行う基礎となるデータベースに応じて、他のメカニズムがあります。

+0

これは何ですか?それは何と呼ばれるのですか? 「rs」からデータを取得する方法は? – Newbie

+2

uはtblUserのエイリアスです。短いSQL文を使用できます。 u。*はtblUserと同じです。 'rs.getInt(1)'または 'rs.getInt(" total_cnt ")'を使ってデータを取得します。 – kevingreen

0

代替あなたのRDBMSは、ウィンドウ関数をサポートしていない場合

rs = s.executeQuery("SELECT B.cnt, U.* 
        FROM tblUser U, 
        (SELECT count(*) cnt FROM tblUser) B"); 
0

あなたが要求した結果は、相互に関係ないので、2つのクエリを実行します。

rs1 = s.executeQuery("SELECT COUNT(*) FROM tblUser"); 
rs2 = s.executeQuery("SELECT * FROM tblUser"); 

をし、唯一の値(1を取得しますrs1)通常の方法です。あなたは結果セット

String query = "Select * from tblUser"; 
rs = s.executeQuery(query); 

public int getCount(ResultSet rs) { 
    int rows = 0; 
    while(rs.next()) { 
    i++; 
    } 
    return i; 
} 

すでにVBA内のレコードにアクセスしているので、あなたは結果セットと同様に、カウント

0

は、おそらく最も簡単なのはしましたレコードセットのカウントを返す:

rs = s.executeQuery("SELECT * FROM tblUser"); 
If Not rs.EOF Then 
    ' Important: You must move to the last record to 
    ' obtain the count of the full recordset 
    rs.MoveLast 
    rsCount = rs.RecordCount 
    ' Remember to Return to the First Record so that you can 
    ' continue to use the recordset 
    rs.MoveFirst 
End If 
0

を得ることができるこの方法で行をカウントするためにこれを行うことができます

関連する問題