2016-10-31 4 views
1

Я пытаюсь выполнить sqlite-запрос в Java-коде, который будет возвращать имена столбцов из таблицы sqlite. Как я могу это сделать? Мне только удалось получить значения из таблицы, а не имена столбцов.Возвращает имена из столбцов в базе данных sqlite

+0

Вы также можете достичь этого 'DatabaseMetaData': [JDBC Sqlite пытается получить NULLABLE Столбцы] (http://stackoverflow.com/questions/35172550/jdbc-sqlite-trying-to- get-nullable-columns/39370248 # 39370248) – asdf

ответ

2

Используйте запрос «select ... limit 0», чтобы получить только метаданные, а затем используйте объекты ResultSetMetaData для их фактического извлечения. Что-то вроде этого:

List<String> sqliteTableColumns(Connection connection, String tableName) { 
    List<String> columns = new ArrayList<>(); 
    String sql = "select * from " + tableName + " LIMIT 0"; 
    Statement statement = connection.createStatement(); 
    ResultSet rs = statement.executeQuery(sql); 
    ResultSetMetaData mrs = rs.getMetaData(); 
    for(int i = 1; i <= mrs.getColumnCount(); i++) { 
     columns.add(mrs.getColumnLabel(i)); 
    } 
    return columns; 
} 
+0

В обычном браузере sqlite я ничего не получаю после выполнения этого запроса: выберите * from tableName LIMIT 0? – konstantin

+0

@ konstantin да, это нормально, потому что из-за «LIMIT 0» выберите возврат нулевых строк. Предложение LIMIT используется для размещения верхней границы числа строк, возвращаемых всей операцией SELECT. –

Смежные вопросы