java - 显示MySQL数据库中的表名及其记录数

标签 java mysql netbeans

我正在处理类(class)作业的下一步,我想要执行一个查询,从数据库中提取元数据以列出其中的表,然后包括表中的记录数。我有它的工作原理,但在上半部分显示它只将数字 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");
                 }

最佳答案

通过以下查询,您可以查询特定数据库上所有表的行数、日期大小、索引大小等。

SELECT concat(table_schema,'.',table_name) tables,
concat(round(table_rows),'') rows,
concat(round(data_length/(1024),2),'') data_size,
concat(round(index_length/(1024),2),'') index_size,
concat(round((data_length+index_length)/(1024),2),'') total_size,
round(index_length/data_length,2) index_data_ratio
FROM information_schema.TABLES
WHERE table_schema like "%YOUR-DATABASE-NAME-HERE%"
ORDER BY rows DESC LIMIT 20;

关于java - 显示MySQL数据库中的表名及其记录数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23874631/

相关文章:

java - 为 vertx 项目生成 OpenAPI 规范

php 连接到 mysqlworkbench 本地主机

php - 在 MySql 日期字段中正确插入日期

java - Netbeans 8.2 比例设置

java - 如何暂时禁用 Junit 测试运行?

java - 在 Click 基础上绘制 2D 图形对象

java - 远程调试 Java 应用程序不显示变量值

java - Hibernate用俄语创建记录显示为问号mysql

java - 查找项目中的所有包

mysql - 选择以特定字符结尾的所有值