2011-10-04 20 views
28

सेट जावा में, मैं इस तरह एक प्रश्न है:जावा, परिणाम के माध्यम से पाशन

Sid  lid 
3   2 
4   4 
7   3 
9   1 

मैं कैसे एक जावा ResultSet के साथ इन मूल्यों को निकालने करते हैं:

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

तालिका rlink_id इस डेटा है ?

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

उत्तर

13

Result Set वास्तव में कर रहे डेटा की अनेक पंक्तियां हैं, और वर्तमान स्थिति का कहना है करने के लिए एक कर्सर का उपयोग करें:

यहाँ मैं अब तक है। तो आपके मामले में, rs4.getString(1) केवल आपको पहली पंक्ति के पहले कॉलम में डेटा प्राप्त करता है। आदेश अगली पंक्ति को बदलने के लिए, आपको

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

वहाँ ResultSet में कई उपयोगी तरीका है, आप एक बार देख :)

+1

जब मैं लूप के माध्यम से कहीं भी इस एसआईडी एन ढक्कन को कॉल करता हूं तो यह मुझे मूल्यों की केवल पहली पंक्ति देता है – user977830

+0

क्या लूप में rs.next() पहले परिणाम को छोड़ नहीं देता है? – Durin

+2

@ डुरिन: [ResultSet.next()] के javadoc की जांच करें (http://docs.oracle.com/javase/6/docs/api/java/sql/ResultSet.html#next%28%29), " कर्सर "वास्तव में ** पहली बार पंक्ति बनाते समय ** पहले बिंदु है :) –

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

यह "कब-समय" नहीं होना चाहिए? शुरुआत में पहली पंक्ति तक पहुंचने के लिए पहले से ही सही स्थिति में इटेटरेटर नहीं है? (अन्यथा क्यों पहली पंक्ति तक पहुंचने वाले ट्यूटोरियल केवल अन्यथा काम करते हैं)? – GameDeveloper

+0

निश्चित रूप से नहीं (क्वेरी कोई पंक्ति नहीं लौटा सकती है)। आप किस ट्यूटोरियल के बारे में बात कर रहे हैं? –

+0

ठीक है धन्यवाद कि मेरी समस्या ठीक हो गई .. यू.यू. Google खोज में पहली जगह में एक गलत ट्यूटोरियल था, ऐसा लगता है कि अब चला गया है। – GameDeveloper

-3

लेना चाहिए एक त्वरित उदाहरण कॉल करने के लिए next()

की जरूरत आपके कोड के साथ समस्या है:

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

यह हर एक नया सरणी बना देगा अपना लूप समय (जैसा कि आप मानते हैं उतना संलग्न नहीं) और इसलिए अंत में आपके पास प्रति सरणी केवल एक तत्व होगा।

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(" "); 

इन सरणियों सभी आवश्यक तत्व होगा:

यहाँ इस हल करने के लिए एक और तरीका है।

+1

यह मैंने कभी देखा है कि crating arrays का एक अजीब तरीका है। इसके अलावा, क्या होगा यदि आपको तारों में से एक में एक जगह मिलती है? –

+0

डाउनवोट के लिए कोई कारण? – Santosh

+0

ओपी एक int भंडारण कर रहा है और एक स्ट्रिंग नहीं है। तो निश्चित रूप से कोई जगह नहीं होगी। अन्य लोगों द्वारा सुझाए गए तरीकों से अलग एक सरणी बनाने का यह एक और तरीका है। – Santosh

संबंधित मुद्दे