2010-04-23 14 views
5

Wiem, że to powinno być simpel i im prawdopodobnie wpatrując się prosto w problem, ale po raz kolejny utknął i potrzebują pomocy guru kodu.Przechowywanie wyników zestaw do tablicy

Próbuję również wziąć jeden wiersz z kolumny w jdbc i umieścić je w tablicy.

to zrobić w następujący sposób:

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 jest już zdefiniowany sposób, że robi to, co oczywiście nie. i creat mój zestaw wyników , a tam kolejny, przechowuje ciąg tej kolumny w tablicy. , a następnie wydrukuj go, aby zmierzyć. też upewnij się, że tam jest.

problemem jest to, że jego przechowywania całej kolumny do contactListNames [1]

i chciał by przechowywać COLUMN1 rzędu 1 z [1]

czym kolumna 1 wiersz 2 do [2]

Wiem, że mógłbym to zrobić za pomocą pętli. ale ja też nie wiem, weź tylko jeden wiersz na raz z jednej kolumny. jakieś pomysły?

p.s ive przeczytać api, i jsut nie widzę niczego, co pasuje.

+0

"ResultSet" ma tylko jedną kolumnę (tj. "Name", jak widać z twojego zapytania), ale nie znasz liczby wierszy przed czasem. Dlatego zamiast używać tablicy, powinieneś rozważyć użycie 'List'. –

+0

'close' powinno się zdarzyć w' finally'. Możesz pobrać [tutaj] (http://balusc.blogspot.com/2008/07/dao-tutorial-data-layer.html) kilka przydatnych pomysłów. – BalusC

+0

cóż, maksymalny rozmiar tablicy wynosił 5, więc to wszystko, czego naprawdę potrzebowałem, to – OVERTONE

Odpowiedz

20

należy użyć ArrayList który zawiera wszystkie logiki automatycznie przedłużyć tablicę.

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()]); 
+1

.. Albo po prostu trzymać się 'List' zamiast tablicy. Do OP: dowiedz się [tutaj] (http://java.sun.com/docs/books/tutorial/collections/index.html) więcej na temat kolekcji API. – BalusC

+0

Nigdy wcześniej nie korzystałem z tablicy. Im havin kłopoty po kodzie tam. źle daj mu szansę – OVERTONE

+0

@BalusC: Zgadzam się, nie trzeba tablicy, chyba że wymaga tego inne API. –

0

Czy chodziło Ci o coś takiego:

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

Wymaga to przydzielenia tablicy 'names' do poprawnego rozmiaru. Jednym ze sposobów byłoby wykonanie najpierw instrukcji count() SQL. Polecam jednak przy użyciu kolekcji (np. ArrayList). –

+0

prawie. to trochę, co zaczęło się podobać. ale pozbyłem się pętli, dopóki nie mogłem wymyślić, jak zająć jeden wiersz na raz. somethign liek tym \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

Powiązane problemy