Есть ли функция Java для захвата всего столбца в базе данных? - PullRequest
0 голосов
/ 24 сентября 2019

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

Я попытался создать функцию для печати всего столбца в консоли.

Connection conn = DriverManager.getConnection(""jdbc:ucanaccess://C:\\Users\\b0616717\\workspace\\DATABASE.accdb);
Statement s = conn.createStatement();
ResultSet rs = s.executeQuery("SELECT * DATABASE.accdb");
ResultSetMetaData rsmd = rs.getMetaData();

public void test () throws SQLException {
  for (int x = 1; x < db.rsmd.getColumnCount(); x++) {
    while(rs.next()) {
    String output = rs.getString(x);
    System.out.println(output);
    }
  }
}

I expect it to console print every data in the pertaining column for every column. However, I get only one column printed out.

Ответы [ 2 ]

2 голосов
/ 24 сентября 2019

у вас есть петли назад.Попробуйте это:

public void test () throws SQLException {
    int numCols= db.rsmd.getColumnCount();
    while(rs.next()) {
      for (int x = 1; x <= numCols; x++) {
          String output = rs.getString(x);
         System.out.println(output);
      }
    }
  }

rs.next () переместится на следующую строку в наборе результатов.Также можно получить количество столбцов до цикла (более эффективно).

1 голос
/ 24 сентября 2019

Если вы хотите, чтобы каждый столбец был строкой вместо столбца при печати, вы можете использовать rs.beforeFirst() каждый цикл, чтобы переместить курсор назад к началу для ResultSet:

for (int x = 1; x < db.rsmd.getColumnCount(); x++) {
    rs.beforeFirst(); //Move cursor to start
    while(rs.next()) {
        String output = rs.getString(x);
        System.out.print(output + " "); //Print each value of a column with a space between
    }
    System.out.println(); //Move to next row
}

Обратите внимание, что я добавил println для перехода к следующей строке, и output больше не использует println, а вместо print.

Это будет проходить через ResultSet 5 раз, но это были спецификации, которые вы запрашивали.

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