2011-01-21 1 views
0

Et encore une fois j'ai trouvé un problème avec lequel je ne sais pas comment me battre. Supposons que nous avons le code de test suivant:Comment puis-je récupérer des méta-données de tables temporaires MySQL au sein d'une même connexion dans JDBC?

private static final String CREATE_TEMPORARY_TABLE = 
     "CREATE TEMPORARY TABLE T1 (\n" + 
     "\tA FLOAT(4, 1),\n" + 
     "\tB FLOAT(5, 2),\n" + 
     "\tC FLOAT,\n" + 
     "\tD INTEGER\n" + 
     ") ENGINE = MEMORY;"; 

private final String[] SHOW_TABLE_TYPES = new String[] { 
     //"TABLE", 
     "VIEW", "SYSTEM TABLE", "GLOBAL TEMPORARY", "LOCAL TEMPORARY", "ALIAS", "SYNONYM" 
}; 

private void createTemporaryTable(Connection connection) throws SQLException { 
    final PreparedStatement statement = connection.prepareStatement(CREATE_TEMPORARY_TABLE); 
    statement.execute(); 
    statement.close(); 
} 

private void showTables(Connection connection) throws SQLException { 
    final ResultSet set = connection.getMetaData().getTables(null, null, null, SHOW_TABLE_TYPES); 
    while (set.next()) { 
     out.println(format("%s %s %s %s %s", 
       set.getString("TABLE_CAT"), 
       set.getString("TABLE_SCHEM"), 
       set.getString("TABLE_NAME"), 
       set.getString("TABLE_TYPE"), 
       set.getString("REMARKS") 
     )); 
    } 
    set.close(); 
} 

@Override 
public void test(Connection connection) throws SQLException { 
    createTemporaryTable(connection); 
    showTables(connection); 
} 

Résultat attendu écrit les méta-données de table T1 dans le flux out. Mais rien ne se passe, et il semble que getTables() ne prenne pas en compte les tables temporaires. Je ne sais pas comment je peux le résoudre ... Est-ce qu'une solution de rechange existe? Votre aide est vraiment très appréciée. Merci beaucoup d'avance.

Répondre

0

MySQL ne fournit parfois pas de support, même pour des choses stupides. Il n'y a pas de solution à ce problème. Fermé.

Questions connexes