如何在JDBC中的单个连接中检索MySQL临时表元数据?
我又一次发现了一个我不知道如何应对的问题。假设我们有以下测试代码:如何在JDBC中的单个连接中检索MySQL临时表元数据?,mysql,jdbc,temp-tables,Mysql,Jdbc,Temp Tables,我又一次发现了一个我不知道如何应对的问题。假设我们有以下测试代码: 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" +
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);
}
预期结果是将
T1
表元数据写入out
流。但是什么也没有发生,而且似乎getTables()
没有考虑临时表。不知道我怎么才能解决它。。。附近有工作吗?非常感谢你的帮助。非常感谢。MySQL有时甚至不支持愚蠢的事情。这个问题没有解决办法。关闭