Я использую CsvJdbc (это JDBC-драйвер для csv-файлов) для доступа к csv-файлу. Я не знаю, сколько столбцов содержит csv-файл. Как я могу узнать количество столбцов? Есть ли для этого какая-нибудь JDBC-функция? Я не могу найти никаких методов для этого в java.sql.ResultSet.
Для доступа к файлу я использую код, аналогичный примеру на сайте CsvJdbc.
ResultSetMetaData
реализация обрабатывают записи CSV переменной длины. например, если вы указали,SELECT * FROM sample
и каждая строка содержала разное количество полей, будет ли пересчитываться счетчик столбцов для каждой строки, которая была повторена?PreparedStatement ps=con.prepareStatement("select * from stud"); ResultSet rs=ps.executeQuery(); ResultSetMetaData rsmd=rs.getMetaData(); System.out.println("columns: "+rsmd.getColumnCount()); System.out.println("Column Name of 1st column: "+rsmd.getColumnName(1)); System.out.println("Column Type Name of 1st column: "+rsmd.getColumnTypeName(1));
источник
rs.getMetaData()
метод? Запрашивает ли он базу данных каждый раз при вызове или нет?rs.getMetaData()
Вызов может быть интенсивным; но если у вас есть объект,rsmd
то при вызове методов объекта метаданных обычно не выполняется никаких дополнительных вызовов базы данных; все метаданные заполняются вызовом getMetaData.Количество столбцов в результирующем наборе, которое вы можете получить с помощью кода (в качестве БД используется PostgreSQL):
Но вы можете получить больше метаинформации о столбцах:
for(int i = 1; i <= numOfCols; i++) { System.out.println(rsmd.getColumnName(i)); }
И, по крайней мере, но не в последнюю очередь, вы можете получить некоторую информацию не только о таблице, но и о БД, как это сделать, вы можете найти здесь и здесь .
источник
После установки соединения и выполнения запроса попробуйте следующее:
ResultSet resultSet; int columnCount = resultSet.getMetaData().getColumnCount(); System.out.println("column count : "+columnCount);
источник
Это распечатает данные в столбцах и перейдет на новую строку, как только будет достигнут последний столбец.
ResultSetMetaData resultSetMetaData = res.getMetaData(); int columnCount = resultSetMetaData.getColumnCount(); for(int i =1; i<=columnCount; i++){ if(!(i==columnCount)){ System.out.print(res.getString(i)+"\t"); } else{ System.out.println(res.getString(i)); } }
источник