Как получить количество столбцов из набора результатов JDBC?
Я использую CsvJdbc (это JDBC-драйвер для csv-файлов) для доступа к csv-файлу. Я не знаю, сколько столбцов содержит csv-файл. Как я могу получить количество столбцов? Есть ли для этого JDBC-функция? Я не могу найти никаких методов для этого в java.язык SQL.набор результатов.
для доступа к файлу, я использую код, похожий на пример на сайте CsvJdbc.
5 ответов:
вы можете получить количество столбцов ResultSetMetaData:
Statement st = conn.createStatement(); ResultSet rs = st.executeQuery(query); ResultSetMetaData rsmd = rs.getMetaData(); int columnsNumber = rsmd.getColumnCount();
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));
число a столбцы в результирующем наборе вы можете получить с кодом (как БД используется 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)); }
и по крайней мере, но не в последнюю очередь, вы можете получить некоторую информацию не только о таблице, но и о БД тоже, как это сделать вы можете найти здесь и здесь.
после установления соединения и выполнения запроса попробуйте следующее:
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)); } }