2010-04-23 5 views
5

Ich weiß, dass dies einfach sein sollte und ich wahrscheinlich gerade auf das Problem starrt, aber wieder bin ich stecken und brauche die Hilfe der Code-Gurus.Speichern Ergebnis in einem Array

Ich versuche auch eine Zeile aus einer Spalte in JDBC, und fügen Sie sie in ein Array.

ich tun dies wie folgt:

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 ist ein bereits definiertes Verfahren, das tut, was es offensichtlich tut. Ich erstelle meine Ergebnismenge während Theres eine andere, ich die Zeichenfolge der Spalte in einem Array speichern. dann ausdrucken für ein gutes Maß. auch dafür sorgen, dass es da ist.

das Problem ist, dass seine die gesamte Spalte in contactListNames Speicherung [1]

i es speichert column1 Zeile 1 in [1]

dann Spalte 1 Zeile 2 in [2]

machen wollte

ich weiß, dass ich das mit einer Schleife tun könnte. aber ich weiß nicht, auch nur eine Reihe zu einer Zeit von einer einzigen Spalte zu nehmen. irgendwelche Ideen?

p.s ive lesen die api, ich kann jsut nichts sehen, das passt.

+0

Das 'ResultSet' hat nur eine Spalte (d. H.' Name', wie Sie aus Ihrer Abfrage sehen können), aber Sie wissen nicht die Anzahl der Zeilen im Voraus. Anstatt also ein Array zu verwenden, sollten Sie eine "Liste" verwenden. –

+0

Das 'close' sollte in' finally' passieren. Sie können [hier] (http://balusc.blogspot.com/2008/07/dao-tutorial-data-layer.html) einige nützliche Ideen bekommen. – BalusC

+0

Nun, die maximale Größe des Arrays war 5, das ist alles, was ich wirklich brauchte – OVERTONE

Antwort

20

Sie sollen ein ArrayList verwenden, die automatisch die gesamte Logik liefert, um das Array zu erweitern.

+1

Oder .. nur Stick auf 'list' statt Array. Zum OP: lerne [hier] (http://java.sun.com/docs/books/tutorial/collections/index.html) mehr über die Sammel-API. – BalusC

+0

ive nie zuvor arraylist verwendet. Ich habe Schwierigkeiten, dem Code dort zu folgen. Ich gebe es in einer Sekunde – OVERTONE

+0

@BalusC: Einverstanden, keine Notwendigkeit für das Array, es sei denn, eine andere API erfordert dies. –

0

Meinen Sie so etwas wie:

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

Dies erfordert die Zuweisung der 'names' Array auf die richtige Größe. Ein Weg wäre, zuerst eine count() SQL-Anweisung auszuführen. Ich würde empfehlen, obwohl eine Sammlung (z. B. ArrayList) verwenden. –

+0

ziemlich viel. Das ist irgendwie, was es angefangen hat. aber ich habe die Schleife los, bis ich herausfinden konnte, wie man eine Zeile nach der anderen nimmt. somethign Liek dieser \t \t \t \t \t while (rs.next()) \t \t \t \t \t { \t \t \t \t \t \t int i = 0; \t \t \t \t \t \t contactListNames [i] = namesList.getString (i); \t \t \t \t \t \t System.out.println ("" + contactListNames [i]); \t \t \t \t \t \t \t \t \t \t \t} – OVERTONE