How to get the number of columns from a JDBC ResultSet?

JavaJdbcCsvResultset

Java Problem Overview


I am using CsvJdbc (it is a JDBC-driver for csv-files) to access a csv-file. I don't know how many columns the csv-file contains. How can I get the number of columns? Is there any JDBC-function for this? I can not find any methods for this in java.sql.ResultSet.

For accessing the file, I use code similar to the example on the CsvJdbc website.

Java Solutions


Solution 1 - Java

You can get columns number from ResultSetMetaData:

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

int columnsNumber = rsmd.getColumnCount();

Solution 2 - Java

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

Solution 3 - Java

Number of a columns in the result set you can get with code (as DB is used 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();

But you can get more meta-informations about columns:

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

And at least but not least, you can get some info not just about table but about DB too, how to do it you can find here and here.

Solution 4 - Java

After establising the connection and executing the query try this:

 ResultSet resultSet;
 int columnCount = resultSet.getMetaData().getColumnCount();
 System.out.println("column count : "+columnCount);

Solution 5 - Java

This will print the data in columns and comes to new line once last column is reached.

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

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionJonasView Question on Stackoverflow
Solution 1 - JavaRomanView Answer on Stackoverflow
Solution 2 - JavalokeshView Answer on Stackoverflow
Solution 3 - Java1ac0View Answer on Stackoverflow
Solution 4 - JavaPrabodh HendView Answer on Stackoverflow
Solution 5 - Javanitish shahView Answer on Stackoverflow