メモリDBの作成

簡単メモリDBを作成する時、次2つステップがある。

  • ステップ1:簡単メモリDBを作成する時、SQLiteOpenHelper クラスを継承する。

  • ステップ2:コンストラクタメソッドで、テーブルの名前はnullを渡す。

以下クラスを参照してください。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
public class MemoryDbHelper extends SQLiteOpenHelper {
    /**
     * データベースバージョン
     */
    private static final int DATABASE_VERSION = 1;
    /**
     * 一時テーブル名前
     */
    private static final String TABLE_NAME = "PRINTSETTING";
    /**
     * 一時テーブルを作成する
     */
    private static final String SQL_LITERAL_CREATE_TABLE = "CREATE TABLE "
            + TABLE_NAME + " (" + "PRTTYPE    VARCHAR (256) ,"
            + "INLINENO    VARCHAR (2) ," + "LDEVID    VARCHAR (40) ,"
            + "BKUPINLINENO    VARCHAR (2)," + "BKUPLDEVID    VARCHAR (40) ,"
            + "PRTTYPEKEY VARCHAR (2) " + ");";

    /**
     * コンストラクタ
     *
     * @param context
     *            コンテキスト
     */
    public MemoryDbHelper(Context context) {
        super(context, null, null, DATABASE_VERSION);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL(SQL_LITERAL_CREATE_TABLE);
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
           //Nothing to do
    }

    //************************以下テーブルに検索、変更、削除、追加  START*********************

    /**
     * 一時テーブルを検索して、画面のデータを表示する。
     *
     * @param table
     *            テーブル
     * @param multiSearch
     *            設定する検索条件
     */
    public void query(Table table, MultiSearch multiSearch) {
        String[] columns = { "PRTTYPE","INLINENO", "LDEVID","BKUPINLINENO","BKUPLDEVID","PRTTYPEKEY" };
        SQLiteDatabase db = getReadableDatabase();
        Cursor cursor = db.query(TABLE_NAME, columns,
                multiSearch.getSqlString(), multiSearch.getSqlArgs(), null,
                null, multiSearch.getSqlSortOrder());
        if (cursor != null) {
            table.clear();
            cursor.moveToPosition(-1);
            while (cursor.moveToNext()) {
                Row row = table.newRow();
                for (Cell cell : row.getCells()) {
                    int index = cursor.getColumnIndex(cell.getColumnName());
                    cell.setValue(cursor.getString(index));
                    cell.setDispValue(cursor.getString(index));
                }
            }
            cursor.close();
        }
    }

    /**
     * 一時テーブルのデータを付ける。
     *
     * @param vals
     *            データソース
     */
    public void insert(List<ContentValues> vals) {
        SQLiteDatabase db = getWritableDatabase();
        db.beginTransaction();
        for (ContentValues val : vals) {
            db.insert(TABLE_NAME, null, val);
        }
        db.setTransactionSuccessful();
        db.endTransaction();
    }

    /**
     * 一時テーブルのデータを削除する。
     */
    public void delete() {
        SQLiteDatabase db = getWritableDatabase();
        db.delete(TABLE_NAME, null, null);
    }

    //************************以下テーブルに検索、変更、削除、追加  END*********************

}