1

データベースのサイズをチェックしています(使用されているデータベースのサイズをチェックすると、浮動小数点値であることがわかりました):このコードを使用しています:

 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;
    }
}

rsnull値を取得しています(データベースから値をフェッチできないかどうかはわかりません)。文字列型の関数を使用しただけでなく、null値も取得しています。

任意の入力...私が間違っているところ:(:(

4

1 に答える 1

1

ブロック内の後に割り当てのこれら3つのステートメントを保持ifします。そうしないと、条件が評価された場合に最初のステートメントのみが実行され、条件が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);
}
于 2012-11-23T13:24:37.973 に答える