は、オプション3の賢明なバージョン(そこに覚えているものを表示し、データベースとエンティティの数がいつ、どのように変化するかを表示します)を使って、すべてのデータベースとエンティティを初期化するクラスを作成しました(DaoMaster.DevOpenHelper、 SQLiteDatabaseとentityNameDao)、そこに、私はデータベース名を取得し、すべてのエンティティのリストを作成し、アクティビティに渡し、そこから、Daoでエンティティからのデータのリストを取得します。私はそれを作っていた方法ではありませんが、少なくともそれは更新するために混乱ではありません。
編集:しばらくすると、すべてのデータベースを除くすべてのデータをSqliteで取得できることがわかりました。あなたがSELECT name FROM sqlite_master WHERE type='table'
を照会することができますテーブルまたはエンティティの場合、今あなたが各テーブルを照会することができ、すべてのテーブル名と、データを取得するためには、まずCursor.getColumnNames();
でatributesを取得し、getColumnIndex();
でそれらを取得する必要があり、ここで少し例
ArrayList<String> arrTblNames = new ArrayList<>();
List<List<String>> data = new ArrayList<>();
Cursor c = db.rawQuery("SELECT name FROM sqlite_master WHERE type='table'", null);
if (c.moveToFirst()) {
while (!c.isAfterLast()) {
arrTblNames.add(c.getString(c.getColumnIndex("name")));
c.moveToNext();
}
}
for(int i=0; i<=arrTblNames.size()-1;i++){
Cursor dbCursor = db.query(arrTblNames.get(i), null, null, null, null, null, null);
String[] columnNames = dbCursor.getColumnNames();
Cursor c2 = db.query(arrTblNames.get(i),columnNames,null,null,null,null,null);
if (c2.moveToFirst()) {
while (!c2.isAfterLast()) {
data.add(new ArrayList<String>());
for(int j=0; j<=columnNames.length-1;j++){
data.get(i).add(c2.getString(c2.getColumnIndex(columnNames[j])));
}
c2.moveToNext();
}
}
}
です