2010-11-11 24 views
0

J'utilise databasemetadata pour trouver la taille de la colonne. Mais getColumns (null, null, "nom_table", null) renvoie un jeu de résultats vide. J'ai vérifié la table en l'interrogeant et la table est présente. Où est l'erreur? Merci d'avance!Données de base contenant les détails de la colonne

Mise à jour:

Connection connection = getConnection(); //getting the connection - 
Statement st = connection.createStatement(); 
ResultSet rs = st.executeQuery("select * from table_name"); 
while (rs.next()) { 
    System.out.println(rs.getString("column_name")); //The values get printed 
} 
ResultSet rsColumns = null; 
DatabaseMetaData meta = connection.getMetaData(); 
rsColumns = meta.getColumns(null, null, "table_name",null);  
System.out.println(rsColumns.next()); // I get false here which means resultset is empty. But I dunno why. 

Répondre

0

Quelle base de données utilisez-vous? C'est probablement lié à la façon dont il gère les identifiants non-cotés, les bases de données qui suivent la norme les stockent automatiquement en majuscules. Vous pouvez vérifier par programme s'il le fait en appelant la méthode storesUpperCaseIdentifiers.

La solution consisterait à utiliser des identificateurs entre guillemets lors de la création de la table ou à appeler la méthode toUpperCase sur la chaîne de nom de table si storesUpperCaseIdentifiers renvoie la valeur true.

0

Pouvez-vous essayer l'extrait ci-dessous:

ResultSet rsColumns = null; 
DatabaseMetaData meta = connection.getMetaData(); 
rsColumns = meta.getColumns(null, null, "table_name",null);  
While (rsColumns,next()) { 
System.out.println(rsColumns.getInt("COLUMN_SIZE")); 
} 

Je pense que vous manque le "COLUMN_SIZE".