我有一个应用程序,我需要每隔三天左右创建一个新表。每个表都有一些信息。
在一个月或一段时间后,我可能会决定对我最初创建的数据库的所有表运行一些统计信息,以便找出一些结果。
然而,统计数据将显示数据在整个日子里的变化情况。因此,我们假设在第一天我们创建了名为“date_1”的第一个表
在第三天“date_3”,第六天“date_6”,第九天“date_9”和第十二天“date_12”。实际上,“date_”字符串后的数字将是实际日期,我也可能在两天或一天之后创建另一个表,不一定是三个。
现在假设在第13天我决定运行统计数据。找出数据库中可用表的一种方法是运行以下代码:
public void printTables(){
static Connection conn;
String driver = "org.apache.derby.jdbc.EmbeddedDriver";
String connectionURL = "jdbc:derby:myDB;create=true";
try {
conn = DriverManager.getConnection(connectionURL);
DatabaseMetaData dbmd = conn.getMetaData();
ResultSet resultSet = dbmd.getTables(null, null, null,
new String[] { "TABLE" });
int tableCount = 0;
while (resultSet.next()) {
System.out.println(resultSet.getString("TABLE_NAME"));
tableCount++;
}
}catch (Exception e) {
e.printStackTrace();
}
}
现在问题是,以下代码按字母顺序返回表格,这意味着我们将打印下列表格:
date_1
date_12
date_3
date_6
date_9
但是我按照以下顺序需要它们
date_1
date_3
date_6
date_9
date_12
因此,如果我按第二顺序获取表名,我可以简单地为返回的每个表运行相应的select语句,执行统计并打印正确的结果。所以我的问题是,是否有可能在创建日期之前按升序排列表格,而不仅仅是按名称(字符串)?