java - 无法获取数据库的大小

标签 java mysql jdbc

我正在检查我的数据库的大小(当我检查使用的数据库大小时,我发现它是 float 值):我正在使用这段代码:

 Public class DBSize{

 private float dbSize;

    public float databaseSize(Float dbSize,String dataSize,String indexsize){
        String apps="apps";  // It's my DB name
        String query_data = "select table_schema,SUM(data_length+index_length)/1024/1024 AS total_mb,SUM(data_length)/1024/1024 AS data_mb,SUM(index_length)/1024/1024 AS index_mb,COUNT(*) AS tables,CURDATE() AS today FROM information_schema.tables where table_schema='"+apps+"' GROUP BY table_schema ORDER BY table_schema;";
        try {
            connection = getConnection();
            stmt = connection.createStatement();
            ResultSet rs=stmt.executeQuery(query_data);
            if(rs.next())      //as I'm selecting a particular database's information
            this.dbSize=rs.getFloat(2);
            this.dataSize=rs.getString(3);
            this.indexSize=rs.getString(4);

            System.out.println("DB Size : "+this.dbSize);           
        } catch (SQLException e) {
            e.printStackTrace();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
        finally
        {
            try {
                if(stmt != null)
                    stmt.close();
                if(connection != null)
                    connection.close();
                } catch (SQLException e) {
                e.printStackTrace();
            }
        }

        return dbSize;

    }

public float getDbSize(){
        return dbSize;
    }
}

rs 获取空值(不知道是否无法从数据库中获取值),即使我使用 String 类型的函数也获取空值,

任何输入...我哪里出错了:( :(

最佳答案

if 之后的这三个赋值语句保留在 block 内,否则如果条件 rs.next() 的计算结果为 true<,则只会执行第一条语句 和接下来的 2 个语句将始终执行,即使条件 rs.next() 的计算结果为 false 这可能会导致一些异常

if(rs.next()){     
   this.dbSize=rs.getFloat(2);
   this.dataSize=rs.getString(3);
   this.indexSize=rs.getString(4);
}

关于java - 无法获取数据库的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13529890/

相关文章:

java - 调用 SQLException.getMessage() 时出现 RuntimeException (DB2)

java - 当我没有执行回滚时,为什么会收到 "Cannot invoke a rollback operation when the AutoCommit mode is set to "true"."?

java - 连接到 oracle 数据库时显式选择 jdbc 驱动程序

java - 如何构建具有 JavaFX 依赖项的可执行 jar?

java - 如何使用 ActionListener 在同一个 Applet 中添加新面板

mysql - 根据interestID检索有共同兴趣的用户

mysql 查询返回两个结果而不是一个

java.lang.NoClassDefFoundError : android. support.v7.internal.widget.TintManager

mysql - 将项目 ID 从 INT 更改为 BIGINT

sql - 如何在不运行实际查询的情况下检查 JDBC 语句的 SQL 语法?