2010-04-23 3 views
5

Я знаю, что это должно быть simpel, и я, вероятно, смотрю прямо на проблему, но снова застрял и нуждаюсь в помощи гуру кода.Сохранение результатов, заданных в массиве

Я пытаюсь также взять одну строку из столбца в 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 является уже определен метод, который делает то, что он явно делает. i creat my result set while theres другой, Я хранил строку этой колонки в массив. затем распечатайте его для хорошей оценки. тоже убедитесь, что он там.

проблема заключается в том, что его хранение всего столбца в contactListNames [1]

я хотел, чтобы сделать его хранить column1 строку 1 в [1]

затем столбец 1 строку 2 в [2]

Я знаю, что могу сделать это с помощью петли. но я даже не знаю, что из одной колонки можно взять только одну строку за раз. есть идеи?

p.s ive читать api, i jsut can not видеть все, что подходит.

+0

«ResultSet» имеет только один столбец (т. Е. «Имя», как вы можете видеть это из вашего запроса), но вы не знаете количества строк раньше времени. Поэтому вместо использования массива вам следует использовать «Список». –

+0

«Закрыть» должно произойти в 'finally'. Вы можете получить [здесь] (http://balusc.blogspot.com/2008/07/dao-tutorial-data-layer.html) несколько полезных идей. – BalusC

+0

ну, максимальный размер массива был 5, так что все, что мне действительно нужно – OVERTONE

ответ

20

Вы должны использовать ArrayList, который обеспечивает всю логику для автоматического расширения массива.

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

Или .. просто придерживаться 'list' вместо массива. В OP: узнайте [здесь] (http://java.sun.com/docs/books/tutorial/collections/index.html) больше о API коллекции. – BalusC

+0

ive никогда раньше не использовал арраист. im havin проблема после кода там. плохо дать ему выстрел за секунду. – OVERTONE

+0

@BalusC: Согласен, нет необходимости в массиве, если этого не требует другой API. –

0

вы имели в виду что-то вроде:

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

Это требует выделения массива 'names' до нужного размера. Один из способов - выполнить оператор count() SQL. Я бы рекомендовал использовать коллекцию (например, ArrayList). –

+0

почти все. Это то, что начиналось с лица. но я избавился от цикла, пока не смог понять, как взять одну строку за раз. somethign Лик этого \t \t \t \t \t в то время (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 ("" + контактListNames [i]); \t \t \t \t \t \t \t \t \t \t \t} – OVERTONE

 Смежные вопросы

  • Нет связанных вопросов^_^