Вопрос:

Java, проходя через набор результатов

java jdbc

116812 просмотра

3 ответа

179 Репутация автора

В Java у меня есть такой запрос:

String querystring1= "SELECT rlink_id, COUNT(*)"
                   + "FROM dbo.Locate  "
                   + "GROUP BY rlink_id ";

Таблица rlink_id содержит эти данные:

Sid        lid
 3           2
 4           4
 7           3
 9           1

Как извлечь эти значения с помощью Java ResultSet?

Вот что у меня так далеко:

String show[] = {rs4.getString(1)};
String actuate[] = {rs4.getString(2)};
asString = Arrays.toString(actuate);
Автор: user977830 Источник Размещён: 04.10.2011 05:18

Ответы (3)


14 плюса

7631 Репутация автора

Result Setна самом деле содержит несколько строк данных, и использовать курсор, чтобы указать текущую позицию. Так что в вашем случае rs4.getString(1)вы получите данные только в первом столбце первой строки. Чтобы перейти к следующему ряду, вам нужно позвонитьnext()

быстрый пример

while (rs.next()) {
    String sid = rs.getString(1);
    String lid = rs.getString(2);
    // Do whatever you want to do with these 2 values
}

Есть много полезных методов ResultSet, вы должны посмотреть :)

Автор: Rangi Lin Размещён: 04.10.2011 05:27

36 плюса

29668 Репутация автора

List<String> sids = new ArrayList<String>();
List<String> lids = new ArrayList<String>();

String query = "SELECT rlink_id, COUNT(*)"
             + "FROM dbo.Locate  "
             + "GROUP BY rlink_id ";

Statement stmt = yourconnection.createStatement();
try {
    ResultSet rs4 = stmt.executeQuery(query);

    while (rs4.next()) {
        sids.add(rs4.getString(1));
        lids.add(rs4.getString(2));
    }
} finally {
    stmt.close();
}

String show[] = sids.toArray(sids.size());
String actuate[] = lids.toArray(lids.size());
Автор: Maurice Perry Размещён: 04.10.2011 05:28

-2 плюса

15505 Репутация автора

Проблема с вашим кодом:

     String  show[]= {rs4.getString(1)};
     String actuate[]={rs4.getString(2)};

Это будет создавать новый массив каждый раз, когда ваш цикл (а не добавлять, как вы, возможно, предполагаете), и, следовательно, в конце у вас будет только один элемент на массив.

Вот еще один способ решить эту проблему:

    StringBuilder sids = new StringBuilder ();
    StringBuilder lids = new StringBuilder ();

    while (rs4.next()) {
        sids.append(rs4.getString(1)).append(" ");
        lids.append(rs4.getString(2)).append(" ");
    }

    String show[] = sids.toString().split(" "); 
    String actuate[] = lids.toString().split(" ");

Эти массивы будут иметь все необходимые элементы.

Автор: Santosh Размещён: 04.10.2011 06:30
Вопросы из категории :
32x32