Как получить количество столбцов из JDBC ResultSet? - PullRequest
80 голосов
/ 10 апреля 2010

Я использую CsvJdbc (это JDBC-драйвер для csv-файлов) для доступа к CSV-файлу. Я не знаю, сколько столбцов содержит csv-файл. Как я могу получить количество столбцов? Есть ли какая-нибудь JDBC-функция для этого? Я не могу найти какие-либо методы для этого в java.sql.ResultSet.

Для доступа к файлу я использую код, подобный примеру на веб-сайте CsvJdbc.

Ответы [ 5 ]

226 голосов
/ 10 апреля 2010

Номер столбца можно получить из ResultSetMetaData :

Statement st = conn.createStatement();
ResultSet rs = st.executeQuery(query);
ResultSetMetaData rsmd = rs.getMetaData();

int columnsNumber = rsmd.getColumnCount();
7 голосов
/ 12 июня 2014
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(2));  
System.out.println("Column Type Name of 1st column: "+rsmd.getColumnTypeName(2)); 
5 голосов
/ 27 октября 2014

Количество столбцов в наборе результатов , которое можно получить с помощью кода (поскольку используется база данных PostgreSQL):

//load the driver for PostgreSQL
Class.forName("org.postgresql.Driver");

String url = "jdbc:postgresql://localhost/test";
Properties props = new Properties();
props.setProperty("user","mydbuser");
props.setProperty("password","mydbpass");
Connection conn = DriverManager.getConnection(url, props);

//create statement
Statement stat = conn.createStatement();

//obtain a result set
ResultSet rs = stat.executeQuery("SELECT c1, c2, c3, c4, c5 FROM MY_TABLE");

//from result set give metadata
ResultSetMetaData rsmd = rs.getMetaData();

//columns count from metadata object
int numOfCols = rsmd.getColumnCount();

Но вы можете получить больше метаинформации о столбцах:

for(int i = 1; i <= numOfCols; i++)
{
    System.out.println(rsmd.getColumnName(i));
}

И, по крайней мере, но не в последнюю очередь, вы можете получить некоторую информацию не только о таблице, но и о БД. Как это сделать, вы можете найти здесь и здесь .

4 голосов
/ 16 мая 2016

После установления соединения и выполнения запроса попробуйте следующее:

 ResultSet resultSet;
 int columnCount = resultSet.getMetaData().getColumnCount();
 System.out.println("column count : "+columnCount);
0 голосов
/ 02 января 2017

Это напечатает данные в столбцах и перейдет на новую строку после достижения последнего столбца.

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

            }
...