AndroidデータベースSQLite-初認識

4042 ワード

SQLiteは、軽量なリレーショナル・データベースです.小さなCライブラリに含まれています.
ACIDデータベーストランザクションを遵守する4つの要素:1、原子性.
トランザクションの原子間性とは、トランザクションが分割できない作業単位であり、この操作はすべて発生するか、そうでなければすべて発生しません.
2、一貫性.
トランザクションが開始される前に、操作されたデータの整合性は一貫性のある状態にあり、トランザクションが終了すると、操作されたデータの整合性も一貫性のある状態にある必要があります.
3、隔離性.
トランザクションの独立性は、他の同時実行トランザクションの影響を受けないトランザクションを保証する必要があります.
4、持続性.
トランザクションが正常にコミットされると、データベースの変更は永続的でなければなりません.データベースに障害が発生しても、そのトランザクションに影響を与えないでください.
SQLiteのAndroidでの使用:
データベース・オブジェクトの取得方法
一、Contextコンテキストオブジェクトに基づいてデータベースオブジェクトを取得する.
二、データベースオブジェクトSQLiteDatabaseを直接作成する.
三、SQLiteOpenHelperデータベース操作ヘルプクラスに基づいてデータベースオブジェクトを取得する.
3つの方法の最終的な目的は、データベースの操作対象SQLiteDatabaseを取得してデータの削除変更操作を実現することであり、3つの方法は最終的にSQLiteDatabaseを呼び出すことである.OpenDatabaseメソッドを使用して、データベース・オブジェクトを取得します.
1つ目:
    //    
    private static final String DATA_BASE_NAME = "test.db";
    //  
    private static final String TABLE_NAME = "person";
    //  
    private static final String TABLE_COLUMN = "name";
    //      
    private static final String ITEM_SPLIT = "、";

    private void getDB() {
        SQLiteDatabase mDataBase = openOrCreateDatabase(DATA_BASE_NAME, MODE_PRIVATE, null);
    }

2つ目:
SQLiteDatabase mDatabase = SQLiteDatabase.openDatabase(DATA_BASE_NAME, null, MODE_PRIVATE);

3つ目:
SQLiteOpenHelper sqLiteOpenHelper = new SQLiteOpenHelper(context, name, null, 1) {
            @Override
            public void onCreate(SQLiteDatabase sqLiteDatabase) {

            }

            @Override
            public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {

            }
        };
SQLiteDatabase mDataBase= sqLiteOpenHelper.getWritableDatabase();

上記の3つの方法でデータベース・オブジェクトを取得した後、SQLiteDatabaseが提供するinsert、delete、update、queryなどの方法を呼び出すことでデータベースを操作できます.また、データベース操作文を実行する方法execSQLが提供され、データベースを操作します.
データベース・オブジェクトの操作方法
一、execSQLでデータベースを操作する:
private void sqlOperation(String args) {
        //      
        mDataBase.execSQL("INSERT INTO "+ TABLE_NAME +" VALUES (NULL, ?)", new Object[]{args});
        //      
        mDataBase.execSQL("DELETE FROM " + TABLE_NAME + " WHERE " + TABLE_COLUMN + "='" + args + "'");
        //    
        mDataBase.execSQL("UPDATE " + TABLE_NAME + " set " + TABLE_COLUMN + " ='" + args + "'"
                + " WHERE " + TABLE_COLUMN + " ='" + args + "'");
        //    
        Cursor cursor = mDataBase.rawQuery("SELECT * FROM " + TABLE_NAME, new String[]{});
        int index = 0;
        while (cursor.moveToNext()){
            index += 1;
            HashMap map = new HashMap<>();
            map.put(TABLE_COLUMN, index + ITEM_SPLIT + cursor.getString(cursor.getColumnIndex(TABLE_COLUMN)));
            mListItem.add(map);
        }
        cursor.close();
}

二、データベース・オブジェクトによって提供された方法によって直接操作する.
private void sqlOpration(String args){
        //      
        ContentValues contentValues = new ContentValues();
        contentValues.put(TABLE_COLUMN, args);
        mDataBase.insert(TABLE_NAME, null, contentValues);
        //      
        mDataBase.delete(TABLE_NAME, TABLE_COLUMN + " == ?", new String[]{args});
        //    
        mDataBase.update(TABLE_NAME, contentValues, TABLE_COLUMN + " == ?", new String[]{});
    }

データベースの操作方法は異なりますが、最終的に呼び出されるのはSQLiteStatementが取得したSQLiteSessionであり、SQLiteConnectionPoolに追加されて実行されます.
簡単で使いやすいものはありませんか.
SQLiteOpenHelperヘルプクラスは、このヘルプクラスを継承してデータベース・オブジェクトを取得する方法について説明したように、データベースの操作を容易かつ効率的に行う方法を提供します.また、onCreat(データベースが最初に作成されたとき)、onUpgrade(データベースがアップグレードされたとき)、onDowngrade(データベースがダウングレードされたとき)、onOpen(データベースが開いたとき)、onConfigure(データベースの構成情報、データベースの構成情報が正しいかどうかを判断するために使用される場合など)などのコールバックメソッドも提供され、データベースのステータスをリスニングします.