Java, проходя через набор результатов - PullRequest
35 голосов
/ 04 октября 2011

В 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);

Ответы [ 3 ]

35 голосов
/ 04 октября 2011
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());
14 голосов
/ 04 октября 2011

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, вы должны посмотреть :)

0 голосов
/ 04 октября 2011

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

     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(" ");

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...