スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
このエントリーをはてなブックマークに追加

[Android]SQLiteのデータベースの中をログで表示する

Logcatでコンソールにデータベースを表示するような形で、ログを吐き出すコードです。
下図の様に表示されます。

[Android]SQLiteのデータベースの中をログで表示する_1

//このメソッドではdb(SQLiteDatabase)オブジェクトが生成されている必要があります。
static final String SQLITE_STATE_LOG_TAG = "SQLiteStateLog";
@TargetApi(Build.VERSION_CODES.HONEYCOMB)
public void SQLiteStateLog (String entity){
Cursor cursor = db.query(entity,null,null,null,null,null,null);
cursor.moveToFirst();
Log.v(SQLITE_STATE_LOG_TAG,"--------------------------------------------------");
Log.v(SQLITE_STATE_LOG_TAG,"(database: "+DATABASE_NAME+")");
Log.v(SQLITE_STATE_LOG_TAG, "table: " + entity);
Log.v(SQLITE_STATE_LOG_TAG, "--------------------------------------------------");
Log.v(SQLITE_STATE_LOG_TAG,"("+cursor.getCount()+" rows)");
//カラムのマックスサイズを格納する
int[] max_column_size = new int[cursor.getColumnCount()];
//カラム名を取得
ArrayList<String> columnNames = new ArrayList<String>();
for(int i=0;i<cursor.getColumnCount();i++) {
String columnName = cursor.getColumnName(i);
columnNames.add(columnName);
max_column_size[i] = columnName.length();
}
//行データの出力データを取得
ArrayList<String[]> rows = new ArrayList<String[]>();
for(int i=0;i<cursor.getCount();i++) {
String[] row = new String[columnNames.size()];
for(int j=0;j<row.length;j++) {
int type = cursor.getType(j);
switch(type){
case Cursor.FIELD_TYPE_NULL :
row[j] = null;
break;
case Cursor.FIELD_TYPE_INTEGER :
row[j] = String.valueOf(cursor.getInt(j));
break;
case Cursor.FIELD_TYPE_FLOAT :
row[j] = String.valueOf(cursor.getFloat(j));
break;
case Cursor.FIELD_TYPE_STRING :
row[j] = cursor.getString(j);
break;
case Cursor.FIELD_TYPE_BLOB :
row[j] = String.valueOf(cursor.getBlob(j));
break;
}
//各カラムの最大サイズを取得するための処理
max_column_size[j] = (max_column_size[j] < row[j].length())?row[j].length():max_column_size[j];
}
rows.add(row);
cursor.moveToNext();
}
//カラム名を出力
String column_name_row = "";
String bar_row = "";
for(int i=0;i<columnNames.size();i++) {
String columnName = columnNames.get(i);
columnName = StringUtilities.rpad(columnName,max_column_size[i]," ");
column_name_row += columnName+" ";
for(int j=0;j<max_column_size[i];j++)bar_row+="-";
bar_row+=" ";
}
Log.v(SQLITE_STATE_LOG_TAG,bar_row);
Log.v(SQLITE_STATE_LOG_TAG,column_name_row);
Log.v(SQLITE_STATE_LOG_TAG,bar_row);
//データを出力
for(int i=0;i<rows.size();i++) {
String data_row = "";
String[] row = rows.get(i);
for(int j=0;j<row.length;j++) {
row[j] = StringUtilities.rpad(row[j],max_column_size[j]," ");
data_row += row[j]+" ";
}
Log.v(SQLITE_STATE_LOG_TAG,data_row);
}
Log.v(SQLITE_STATE_LOG_TAG,bar_row);
}
このエントリーをはてなブックマークに追加

コメントの投稿

非公開コメント

Translation


上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。
プロフィール

チーズくん

Author:チーズくん
個人的メモをただ羅列しています。
twitter:@cheese1038

バロメーター
最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。