2010-05-04 9 views
42

Chcę uzyskać wartość, którą znajduję za pomocą polecenia COUNT SQL. Zwykle wpisuję nazwę kolumny Chcę uzyskać dostęp do metody getInt() getString(), co mam zrobić w tym przypadku, gdy nie ma konkretnej nazwy kolumny.Jak uzyskać dostęp do wartości kwerendy SQL() w programie Java

Użyłem "AS" w taki sam sposób, jak jest używany do alias tabeli, nie jestem pewien, czy to zadziała, nie sądzę.

Statement stmt3 = con.createStatement(); 
ResultSet rs3 = stmt3.executeQuery("SELECT COUNT(*) FROM "+lastTempTable+") AS count"); 
    while(rs3.next()){ 
    count = rs3.getInt("count"); 
    } 

Odpowiedz

71

używać aliasów:

SELECT COUNT(*) AS total FROM .. 

a następnie

rs3.getInt("total") 
+3

przynajmniej z mojej strony, to musi najpierw zadzwonić rs3.next() przed wywołaniem rs3.getInt ("total") – user2805346

+0

Dzięki, mam coś do ciebie prosić, czy możemy porozmawiać? Proszę –

4

spodziewałbym to zapytanie do pracy z programem:

"SELECT COUNT(*) AS count FROM "+lastTempTable+")"

(co potrzeba t O alias kolumna nie tabela)

39

odpowiedzi udzielonych przez Bohzo i Brabster będzie oczywiście działa, ale można też po prostu użyć:

rs3.getInt(1); 

aby uzyskać wartość w pierwszym, a w przypadku , tylko kolumna.

+4

Z Javadoc: "Wartości mogą być pobierane przy użyciu albo numeru indeksu kolumny, albo nazwy kolumny. Ogólnie rzecz biorąc, użycie indeksu kolumny będzie bardziej wydajne." –

+1

Ten poziom dostrajania wydajności naprawdę nie jest ważny dla większości aplikacji. Korzystanie z indeksów kolumn naraża użytkownika na błędy z kolumn poruszających się w zapytaniu SQL, które mogą być trudne do prześledzenia. W tym konkretnym przykładzie (tylko chwytając rekordową liczbę) nie stanowi to problemu, ale należy o tym pamiętać, aby zapewnić stabilność aplikacji. –

+0

@PederRicer nie mógł się zgodzić na więcej. Zbyt często ludzie koncentrują się na mikro-optymalizacjach, gdy klarowność (prawie zawsze) powinna być głównym celem kodu –

2

Zrobiłem to w ten sposób (przykład):

String query="SELECT count(t1.id) from t1, t2 where t1.id=t2.id and t2.email='"[email protected]"'"; 
int count=0; 
try { 
    ResultSet rs = DatabaseService.statementDataBase().executeQuery(query); 
    while(rs.next()) 
     count=rs.getInt(1); 
} catch (SQLException e) { 
    e.printStackTrace(); 
} finally { 
    //... 
} 
1
Statement stmt3 = con.createStatement(); 

ResultSet rs3 = stmt3.executeQuery("SELECT COUNT(*) AS count FROM "+lastTempTable+" ;"); 

count = rs3.getInt("count"); 
+0

należy wywołać metodę next(), aby uruchomić zestaw wyników. np. podczas (recSet.next()) { num = recSet.getInt ("..."); } – Hatim

Powiązane problemy