Сохранение результата в массиве - PullRequest
6 голосов
/ 23 апреля 2010

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

я тоже пытаюсь взять одну строку из столбца в 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]

я хотел, чтобы он сохранял столбец column1 строка 1 в [1]

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

я знаю, что мог бы сделать это с помощью цикла.но я тоже не знаю, беру только одну строку за раз из одного столбца.какие-нибудь идеи?

ps я читал API, я не вижу ничего подходящего.

Ответы [ 2 ]

22 голосов
/ 23 апреля 2010

Вы должны использовать 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()]);
0 голосов
/ 23 апреля 2010

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

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