【发布时间】:2014-05-26 16:51:01
【问题描述】:
我正在处理课程分配的下一步,我想做一个查询,从数据库中提取元数据以列出其中的表,然后包括表中的记录数。我把它放在它工作的地方,但在前半部分显示它只在记录数应该去的地方放了一个数字 1。在后半部分(我现在这样做是为了测试目的,如果我能让它工作,只会有前半部分)它打印出记录的数量就好了,但我有硬编码的表名。我想要它能够从元数据结果中读取表名,然后执行记录计数的查询。我正在使用 MySQL 数据库在 netbeans 中运行它,并且正在使用 JDBC 驱动程序。
connect();
try
{
String db = conn.getCatalog();
data.append("The current database " + db + " contains the following tables:\r\n");
}
catch(Exception err)
{
System.out.print(err + "\r\n");
}
try
{
ResultSet rs = null;
DatabaseMetaData md = conn.getMetaData();
rs = md.getTables(null, null, "%", null);
while (rs.next())
{
String tbl = rs.getString(3);
System.out.print(tbl + "\r\n");
ResultSet ct = null;
ct = conn.createStatement().executeQuery("SELECT COUNT(*) FROM" + tbl);
while (ct.next())
{
System.out.print(ct.getString(1) + "\r\n");
data.append("Table \"" + rs.getString(3) + "\" contains " + ct.getString(1) + " records.\r\n");
}
}
data.append("\r\n");
}
catch(Exception err)
{
System.out.print(err + "\r\n");
}
try
{
ResultSet ct = null;
ct = conn.createStatement().executeQuery("SELECT COUNT(*) FROM customer");
while (ct.next())
{
data.append(ct.getString(1) + "\r\n");
}
ResultSet pt = null;
pt = conn.createStatement().executeQuery("SELECT COUNT(*) FROM product");
while (pt.next())
{
data.append(pt.getString(1) + "\r\n");
}
}
catch(Exception err)
{
System.out.print(err + "\r\n");
}
【问题讨论】: