Строка из базы данных в виде строки (JDBC) - PullRequest
1 голос
/ 28 октября 2009

Есть ли прямой метод для получения всех элементов подряд из ResultSet как String? JDBC

Ответы [ 3 ]

5 голосов
/ 28 октября 2009

Вы можете использовать BasicRowProcessor из Apache commons, Dbutils

ResultSet rs = ....
RowProcessor rp = new BasicRowProcessor();
Map m = rp.toMap( rs );

String s = m.toString();

И тогда вы получите:

{ id = 1, name = Oscar, lastName = Reyes }

и т.д..

Если вы хотите избавиться от columNames:

String s = m.values().toString();
3 голосов
/ 28 октября 2009

Для этого нет ни одного вызова метода, но вы можете использовать что-то вроде этого для построения строки:

StringBuilder sb = new StringBuilder();
ResultSetMetaData rsmd = rs.getMetaData();
int numberOfColumns = rsmd.getColumnCount();
for (int i = 1; i <= numberOfColumns; i++) {
    sb.append(rs.getString(i));
    if (i < numberOfColumns) {
        sb.append(", ");
    }
}
String data = sb.toString();
3 голосов
/ 28 октября 2009

Я должен спросить - зачем вам что-то подобное?

И нет, это невозможно - вам нужно было бы позвонить getString() хотя бы один раз, несмотря ни на что. Лучшее, что вы можете сделать, - это объединить ваши поля в SQL, например,

SELECT col1 || ', ' || col2 || ', ' || col3 ... FROM my_table

и позвоните resultSet.next().getString(1), чтобы получить это.

Обновление (на основании комментария) Я не думаю (это зависит от вашего драйвера JDBC и базы данных, на самом деле - вам придется измерить, чтобы выяснить), что существует большая разница в объеме данных между отправкой данных (из БД в ваше приложение) по столбцам против одного каскадная строка. На самом деле, последний может даже дороже, если у вас есть числа / даты, потому что они, вероятно, будут занимать больше байтов в формате текста.

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