私のアプリケーションには複数のSQLiteテーブルがあります(異なるフィールドを持つ約20)。これは、Adapterクラスを使用して作成しました(ここでは、1つのクラスのゲームについて説明しました。たとえば、20個あります)。
public class MyDbAdapter {
private SQLiteDatabase mDb;
private static MyDatabaseManager mDbManager;
Context ctx;
public MyDbAdapter(Context context) {
this.ctx = context;
mDbManager = new MyDatabaseManager(context);
mDb = mDbManager.getWritableDatabase();
}
public static final class GameColumns implements BaseColumns {
public static final String TABLE = "game";
public static final String IMEI = "imei";
public static final String LAST_UPDATE = "lastupdate";
public static final String NICKNAME = "nickname";
}
private static class MyDatabaseManager extends SQLiteOpenHelper {
private static final String DATABASE_NAME = "dbname";
private static final int DATABASE_VERSION = 8;
private MyDatabaseManager(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
createGameTable(db);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS "+GameColumns.TABLE);
onCreate(db);
}
@SuppressWarnings("unused")
private void dropDatabase(SQLiteDatabase db) {
db.execSQL("DROP TABLE IF EXISTS " + GameColumns.TABLE);
}
private void createGameTable(SQLiteDatabase db) {
db.execSQL("CREATE TABLE " + GameColumns.TABLE + " ("
+ GameColumns._ID + " INTEGER PRIMARY KEY,"
+ GameColumns.IMEI + " TEXT,"
+ GameColumns.LAST_UPDATE + " TEXT,"
+ GameColumns.NICKNAME + " TEXT);");
}
}
}
各テーブルからのデータは、以下のコードを使用してフェッチしています。この関数は、Cursorオブジェクトを返します。
public Cursor getRecords(String tableName){
Cursor cursor = mDb.query(tableName, null, null, null, null, null, null);
return cursor;
}
カーソルオブジェクトをリストまたは文字列に変換する必要があります。このために、カーソルオブジェクトを繰り返す必要があります。私の問題は、各テーブルに異なるフィールドがあるため、各カーソルオブジェクトを別々のメソッドで繰り返す必要があることです。これは、単一の方法を使用してどのように行うことができますか?カーソルを文字列に変換する直接的な方法はありますか?