2011-10-04 12 views
28

ayarlayın:Java sonucu ile döngü, böyle bir sorgu var Java'da

Sid  lid 
3   2 
4   4 
7   3 
9   1 

Ben bir Java ResultSet bu değerleri ayıklamak nasıl: Tablo rlink_id bu verileri sahiptir

String querystring1= "SELECT rlink_id, COUNT(*)" 
        + "FROM dbo.Locate " 
        + "GROUP BY rlink_id "; 

?

String show[] = {rs4.getString(1)}; 
String actuate[] = {rs4.getString(2)}; 
asString = Arrays.toString(actuate); 

cevap

13

Result Set aslında verilerin birden çok satır içerir ve mevcut konumu işaret etmek bir imleç kullanın: Burada

Ben bugüne kadar ne olduğunu. Bu durumda, rs4.getString(1) sadece ilk satırın ilk sütunundaki verileri alır. Bir sonraki satıra geçmek için, hızlı bir örnek next()

aramaya

while (rs.next()) { 
    String sid = rs.getString(1); 
    String lid = rs.getString(2); 
    // Do whatever you want to do with these 2 values 
} 

ResultSet birçok kullanışlı yöntem vardır, bir göz :)

+1

Bu sid n kapağını döngü içinde bir yerde aradığımda bana yalnızca ilk satır değerini veriyor – user977830

+0

while döngüsündeki rs.next() öğesi ilk sonucu atlamıyor mu? – Durin

+2

@Durin: [ResultSet.next()] 'in javadoc'unu kontrol edin (http://docs.oracle.com/javase/6/docs/api/java/sql/ResultSet.html#next%28%29) imleç "aslında oluşturulduğunda ilk satır ** önce noktasıdır :) –

30
List<String> sids = new ArrayList<String>(); 
List<String> lids = new ArrayList<String>(); 

String query = "SELECT rlink_id, COUNT(*)" 
      + "FROM dbo.Locate " 
      + "GROUP BY rlink_id "; 

Statement stmt = yourconnection.createStatement(); 
try { 
    ResultSet rs4 = stmt.executeQuery(query); 

    while (rs4.next()) { 
     sids.add(rs4.getString(1)); 
     lids.add(rs4.getString(2)); 
    } 
} finally { 
    stmt.close(); 
} 

String show[] = sids.toArray(sids.size()); 
String actuate[] = lids.toArray(lids.size()); 
+0

, "do-while" olmasın mı? Yineleyici, başlangıçta ilk satır için doğru konumda mı? (başka neden sadece ilk sıraya erişen dersler sadece başka şekilde çalışmalıdır)? – GameDeveloper

+0

Kesinlikle değil (sorgu hiç satır döndüremedi). Hangi öğretici hakkında konuşuyorsunuz? –

+0

tamam sorunumu çözdüğünüz için teşekkürler .. U.U bir google aramada ilk etapta yanlış bir öğretici vardı, şimdi gitti görünüyor. – GameDeveloper

-3

almalı gerek Kodunuzla ilgili sorun:

 String show[]= {rs4.getString(1)}; 
    String actuate[]={rs4.getString(2)}; 

Bu, her yeni bir dizi oluşturacaktır Döngününüzü (varsaydığınız gibi değil) ekleyin ve sonuçta her dizi için sadece bir elemanınız olacaktır.

StringBuilder sids = new StringBuilder(); 
    StringBuilder lids = new StringBuilder(); 

    while (rs4.next()) { 
     sids.append(rs4.getString(1)).append(" "); 
     lids.append(rs4.getString(2)).append(" "); 
    } 

    String show[] = sids.toString().split(" "); 
    String actuate[] = lids.toString().split(" "); 

Bu diziler bütün gerekli öğesi sahip olacaktır:

İşte bunu çözmek için bir yol daha olduğunu.

+1

Bu, şimdiye dek gördüğüm en iyi kasa dizisidir. Dahası, ya sen aldığınız dizelerden biri boşluk içeriyorsa? –

+0

Reddetme için herhangi bir sebep var mı? – Santosh

+0

OP bir int değil, bir dize saklıyor. Yani kesin bir yer olmayacak. Diğer insanlar tarafından önerilen yollardan ayrı bir dizi oluşturmanın sadece bir başka yolu. – Santosh