web-dev-qa-db-fra.com

Comment obtenir le nombre de colonnes d'un ResultSet JDBC?

J'utilise CsvJdbc (c'est un pilote JDBC pour les fichiers csv) pour accéder à un fichier csv. Je ne sais pas combien de colonnes le fichier csv contient. Comment puis-je obtenir le nombre de colonnes? Existe-t-il une fonction JDBC pour cela? Je ne trouve aucune méthode pour cela dans Java.sql.ResultSet.

Pour accéder au fichier, j'utilise un code similaire à exemple sur le site Web CsvJdbc.

82
Jonas

Vous pouvez obtenir le nombre de colonnes de ResultSetMetaData :

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

int columnsNumber = rsmd.getColumnCount();
229
Roman
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)); 
7
lokesh

Nombre de colonnes dans le jeu de résultats que vous pouvez obtenir avec du code (DB étant utilisé avec PostgreSQL):

 // charge le pilote pour PostgreSQL 
 Class.forName ("org.postgresql.Driver"); 
 
 String url = "jdbc: postgresql: // localhost/test "; 
 Propriétés props = new Propriétés (); 
 props.setProperty (" utilisateur "," mydbuser "); 
 props.setProperty (" mot de passe "," mydbpass "); 
 Connexion conn = DriverManager.getConnection (url, accessoires); 
 
 // instruction create 
 Instruction stat = conn.createStatement (); 
 
 // obtenir un jeu de résultats 
 ResultSet rs = stat.executeQuery ("SELECT c1, c2, c3, c4, c5 DE MY_TABLE"); 
 
 // du jeu de résultats donne les métadonnées 
 ResultSetMetaData rsmd = rs.getMetaData (); 
 
 // nombre de colonnes de l'objet métadonnées 
 int numOfCols = rsmd .getColumnCount (); 

Mais vous pouvez obtenir plus de méta-informations sur les colonnes:

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

Et du moins mais pas des moindres, vous pouvez obtenir des informations non seulement sur les tables, mais aussi sur les bases de données. Vous pouvez trouver comment ici et ici .

5
1ac0

Après avoir établi la connexion et exécuté la requête, essayez ceci:

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