2016-03-28 23 views
0

Veritabanındaki tüm verileri almak istiyorum ve aynı zamanda kaç tane veri satırı aldığımı bilmek istiyorum.
ResultSet'in boyutunu SELECT COUNT (*) kullanarak alın (0)

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

bu geçerli SQL deyimi var mı: Bu da benim SQL nedir? ve tüm verileri aldıktan sonra bunları farklı değişkenlere nasıl ayarlayacağım? Örneğin, veritabanında UserID adlı bir sütun var, ben sadece rs.getString('UserID') kullanarak alabilirsiniz, ancak COUNT(*) sonucu nasıl elde edilir?

+0

Hangi veritabanını kullanıyorsunuz? –

+0

Bunun geçerli bir SQL olmadığını söyleyebilirim. Sayım() genellikle ayrı ayrı yapılmalıdır. Sayım sadece 1 kayıt döndürecektir. – kevingreen

+0

Normal bir seçim yapın ve sonuç kümesinden form sayısını alın –

cevap

6

Geçerli geçerli değil değil. Ne istediğinizi yapmak için ANSI standart yol pencere fonksiyonlarını kullanır:

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

Bu her satıra yeni bir sütun ekler - istediğini gibi görünüyor. Bunu yapmak için temel veri tabanına bağlı olarak başka mekanizmalar vardır.

+0

Bu 'u' ne için? ne diyor ve 'rs' verileri nasıl alınır? – Newbie

+2

u, tblUser için bir takma addır. Daha kısa SQL ifadelerine izin verir. u. *, tblUser ile aynıdır. Verileri, 'rs.getInt (1)' veya 'rs.getInt (" total_cnt ")' yoluyla alabilirsiniz. – kevingreen

0

sizin RDBMS sen birbiriyle değildir istekte

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

sonuçları pencere fonksiyonlarını destekler, bu nedenle iki sorgu çalıştırmak yoksa alternatif:

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

ve yalnızca (Birini değerleri almak rs1) her zamanki yol. Sen Resultset

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

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

Zaten VBA'DA içinde kayıt erişen beri resultset yanı sıra sayısı

0

muhtemelen en basit oldu Kayıt kümesinin geri döndürülmesi:

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

alabilirsiniz Bu şekilde satırları saymak için bunu yapabilirsiniz