Подтвердить что ты не робот

Java, циклический набор результатов

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

Ответ 1

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

Ответ 2

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

Ответ 3

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

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

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