2010-04-23 18 views
5

मुझे पता है कि यह सिम्पल होना चाहिए और शायद मैं समस्या पर सीधे देख रहा हूं लेकिन एक बार फिर मैं अटक गया और कोड गुरु की मदद की आवश्यकता है।भंडारण परिणाम एक सरणी में सेट

मैं jdbc में कॉलम से एक पंक्ति भी ले रहा हूं, और उन्हें एक सरणी में डाल रहा हूं।

मैं यह नहीं इस प्रकार है:

public void fillContactList() 
     { 
      createConnection(); 
      try 
      { 
       Statement stmt = conn.createStatement(); 
       ResultSet namesList = stmt.executeQuery("SELECT name FROM Users"); 
       try 
       { 
        while (namesList.next()) 
        { 
         contactListNames[1] = namesList.getString(1); 
         System.out.println("" + contactListNames[1]); 
        } 
       } 
       catch(SQLException q) 
       { 

       } 
       conn.commit(); 
       stmt.close(); 
       conn.close(); 
      } 
      catch(SQLException e) 
      { 

      } 

creatConnection एक पहले से ही परिभाषित विधि है कि करता है यह स्पष्ट रूप से क्या करता है। मैं अपना परिणाम बनाता हूं जबकि एक और, मैं उस कॉलम की स्ट्रिंग को सरणी में संग्रहीत करता हूं। फिर इसे अच्छे उपाय के लिए प्रिंट करें। यह भी सुनिश्चित करें कि वहां है।

समस्या यह है कि इसके भंडारण contactListNames में संपूर्ण स्तंभ [1]

मैं इसे [2]

में [1]

तो स्तंभ 1 पंक्ति 2 में स्तम्भ 1 पंक्ति 1 की दुकान बनाना चाहते थे है

मुझे पता है कि मैं इसे एक लूप के साथ कर सकता हूं। लेकिन मुझे नहीं पता कि एक ही कॉलम से एक समय में केवल एक पंक्ति लेनी चाहिए। कोई विचार?

p.s ive api पढ़ें, मैं फिट बैठता कुछ भी नहीं देख सकता।

int i = 0; 
ResultSet rs = stmt.executeQuery("select name from users"); 
while (rs.next()) { 
    String name = rs.getString("name"); 
    names[i++] = name; 
} 
+0

'परिणामसेट' में केवल एक कॉलम है (यानी 'नाम' जैसा कि आप अपनी क्वेरी से देख सकते हैं), लेकिन आप समय से पहले पंक्तियों की संख्या नहीं जानते हैं। तो एक सरणी का उपयोग करने के बजाय, आपको 'सूची' का उपयोग करने पर विचार करना चाहिए। –

+0

'बंद' 'अंत में 'होना चाहिए। आप [यहां] (http://balusc.blogspot.com/2008/07/dao-tutorial-data-layer.html) कुछ उपयोगी विचार प्राप्त कर सकते हैं। – BalusC

+0

अच्छी तरह से सरणी का अधिकतम आकार 5 था, इसलिए मुझे वास्तव में – OVERTONE

उत्तर

20

आप एक ArrayList जो स्वचालित रूप से सरणी का विस्तार करने के सभी तर्क प्रदान करता है का उपयोग करना चाहिए:

+1

या .. बस 'List' बजाय सरणी चिपके रहते हैं। ओपी को: संग्रह एपीआई के बारे में [यहां] (http://java.sun.com/docs/books/tutorial/collections/index.html) सीखें। – BalusC

+0

ive पहले कभी सरणीसूची का उपयोग नहीं किया। वहाँ कोड के बाद परेशानी है। बीमार इसे एक सेक – OVERTONE

+0

@ बालससी में एक शॉट दें: सहमत है, सरणी की कोई आवश्यकता नहीं है जब तक कि किसी अन्य एपीआई को इसकी आवश्यकता न हो। –

0

आप की तरह कुछ मतलब है।

List rowValues = new ArrayList(); 
while (namesList.next()) { 
    rowValues.add(namesList.getString(1)); 
} 
// You can then put this back into an array if necessary 
contactListNames = (String[]) rowValues.toArray(new String[rowValues.size()]); 
+0

की आवश्यकता है, इसके लिए 'नाम' सरणी को सही आकार में आवंटित करने की आवश्यकता है। एक तरीका गिनती() एसक्यूएल कथन पहले निष्पादित करना होगा। मैं एक संग्रह का उपयोग करने की सिफारिश करेंगे (उदाहरण के लिए ArrayList)। –

+0

बहुत ज्यादा। ऐसा लगता है कि यह किस तरह से शुरू हुआ। लेकिन जब तक मैं एक पंक्ति में एक पंक्ति कैसे ले सकता हूं, तब तक मैं लूप से छुटकारा पाता। इस \t \t \t \t \t जबकि (rs.next()) \t \t \t \t \t { \t \t \t \t \t \t पूर्णांक मैं = 0 liek somethign; \t \t \t \t \t \t संपर्क सूची नाम [i] = namesList.getString (i); \t \t \t \t \t \t System.out।println ("" + संपर्कसूची नाम [i]); \t \t \t \t \t \t \t \t \t \t \t} – OVERTONE

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