Come ottenere il numero di colonne da un ResultSet JDBC?

Sto usando CsvJdbc (è un driver JDBC per i file csv) per accedere a un file csv. Non so quante colonne contenga il file csv. Come posso ottenere il numero di colonne? C’è qualche funzione JDBC per questo? Non riesco a trovare alcun metodo per questo in java.sql.ResultSet.

Per accedere al file, utilizzo un codice simile all’esempio sul sito Web CsvJdbc.

È ansible ottenere il numero di colonne da 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)); 

Numero di colonne nel set di risultati che puoi ottenere con il codice (dato che DB è usato come PostgreSQL):

 // carica il driver per PostgreSQL
 Class.forName ( "org.postgresql.Driver");

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

 // crea una dichiarazione
 Statement stat = conn.createStatement ();

 // ottiene un set di risultati
 ResultSet rs = stat.executeQuery ("SELECT c1, c2, c3, c4, c5 FROM MY_TABLE");

 // dal set di risultati fornisce i metadati
 ResultSetMetaData rsmd = rs.getMetaData ();

 // colonne contano dall'object metadati
 int numOfCols = rsmd.getColumnCount ();

Ma puoi ottenere più meta-informazioni sulle colonne:

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

E almeno, ma non meno importante, puoi ottenere alcune informazioni non solo sul tavolo ma anche su DB, come farlo puoi trovare qui e qui .

Dopo aver stabilito la connessione ed eseguito la query, prova questo:

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

Questo stamperà i dati in colonne e arriverà alla nuova riga una volta raggiunta l’ultima colonna.

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