SQLitデータベースの追加削除

6890 ワード

SQLiteデータベース
  • Sqlite概要Sqliteは軽量なデータベースで、比較的小さなCライブラリに含まれています.その設計目標は組み込み式です.リソースの占有量が非常に少ないため、数百Kのメモリしか必要ない可能性があります.Windows/Linux/Unixなどの主流のオペレーティングシステムをサポートし、多くのプログラム言語と結合することができます.例えば、C#/Java/phpなどです.そのため、組み込み機器で特に人気があり、androidの開発要件にもぴったりなので、Android開発ではこのデータベースがよく使われています.
  • SQlite内部構造は内部にあり、SqliteにはSQLコンパイラ、カーネル、バックエンド、添付ファイルのいくつかのコンポーネントがあります.Sqliteは、仮想マシンと仮想データベースエンジンを利用することで、Sqliteのカーネルをデバッグ、修正、拡張するのに便利になり、すべてのSQL文が読みやすく、Sqlite仮想マシンで実行できるプログラムセットにコンパイルされます.
  • androidでのSqliteの使用方法AndroidでSqliteデータベースを使用するには、まずSQLiteOpenHelperクラスを継承するクラスを作成する必要があります.このクラスをDatabaseHelperと命名します.Sqliteにアクセスするアシスタントクラスとして、2つの機能を提供しています.
  • getReadableDatabase()/getWritableDatabase()は、SQLiteDatabaseオブジェクトを取得し、データベースを操作できます.
  • はOnCreate()とonUpgrade()の2つのコールバック関数を提供し、データベースの作成とアップグレード時に独自の操作を行うことができます.


  • 例:
  • データベースアシスタントクラス
  • カスタムMySQLiteOpenHelperクラス継承SQLiteOpenHelper
  • public class MySQLiteOpenHelper extends SQLiteOpenHelper {
        //       
        private final static String DB_NAME = "my_database.db";
        //       
        private final static int DB_VERSION = 1;
        //      
        public final static String TABLE_NAME = "table_person";
    
        /**
         *        
         *
         * @param context    
         * @param name          
         * @param factory     ,    null,Android         
         * @param version       
         */
        public MySQLiteOpenHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
            super(context, name, factory, version);
        }
    
        //       :
        public MySQLiteOpenHelper(Context context) {
            //     "my_database.db"   ,    1       : data/data/com.w.Demo/databases/my_database.db
            super(context, DB_NAME, null, DB_VERSION);
        }
    
        /**
         *       
         * @param db           
         */
        @Override
        public void onCreate(SQLiteDatabase db) {
            //      ,  :         ,    :  _id,name,age
            /*  : SQ  : exists    ,()    */
            String sql = "create table if not exists " + TABLE_NAME + "(_id integer primary key autoincrement, name varchar, age integer)";
            //            
            db.execSQL(sql);
        }
    
        /**
         * @param db            
         * @param oldVersion    
         * @param newVersion    
         */
        @Override
        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
            if (oldVersion != newVersion) {
                Log.d("TAG", "onUpgrade: onUpgrade");
            }
        }
    }
    
  • データアシスタントクラスを使用してデータベースを作成する
  • MySQLiteOpenHelper mHelper =  new MySQLiteOpenHelper(this);
    SQLiteDatabase dbSelect = mHelper.getReadableDatabase();
    
  • 具体的な添削の調査は以下の通りである:
  • データベースを作成または開く方法
  • public SQLiteDatabase getDb() {
     //      my_database.db
            String filePath = Environment.getExternalStorageDirectory() + "/my_database.db";
            SQLiteDatabase database = SQLiteDatabase.openOrCreateDatabase(filePath, null);
     //           table_person
            String sql = "create table if not exists table_person(_id integer primary key autoincrement, name varchar, age integer)";
     //            
            database.execSQL(sql);
            return database;
    }
    
  • データ挿入
  • 単一データ
  • を挿入する.
    SQLiteDatabase dbAdd = getDb();
    ContentValues values = new ContentValues();
                    values.put("name", "   ");
                    values.put("age", 18);
                    // table:        
                    //nullColumnHack:      null ,nullColumnHack     ,                ;       null ,nullColumnHack     , null
                    // values:     
                    dbAdd.insert("table_person", null, values);
    
  • SQ文を使用して複数のデータを挿入する
  • //     
      SQLiteDatabase dbAdd = getDb();
                    //     
                    dbAdd.beginTransaction();
                    try {
                        for (int i = 0; i < 10; i++) {
                            //     
                            String sql = "insert into table_person(name, age) values('   ', " + i + ")";
                            dbAdd.execSQL(sql);
                        }
                       //    
                        dbAdd.setTransactionSuccessful();
                    } catch (Exception e) {
    
                    } finally {
                        //    
                        dbAdd.endTransaction();
                    }
                    //     ,      
                    dbAdd.close();
    
  • Transactionトランザクション:トランザクションの開始と終了の間のコードはすべて実行されますか?
  • は実行されません.
  • 削除データ
  •  SQLiteDatabase dbDelete = getDb();
                    //             
                    // table:  
                    // whereClause:    ,  “name = ?”
                    // whereArgs:       ,      ,  “"  "”
                    dbDelete.delete("table_person", "name = ?", new String[]{"   "});
                    dbDelete.close();
    
  • 修正データ
  • ContentValues contentValues = new ContentValues();
                    contentValues.put("name", "  ");
                    contentValues.put("age", 25);
                    SQLiteDatabase dbModify = getDb();
                    // table:  
                    // values:     
                    // whereClause:    
                    // whereArgs:       
                    dbModify.update("table_person", contentValues, "name = ?", new String[]{"   "});
                    dbModify.close();
    
  • クエリーデータ
  •                //     ;
                    SQLiteDatabase dbSelect = getDb();
                  //      
                    // table:  
                    // columns:     (  ),      
                    // selection:    
                    // selectionArgs:       
                    // groupBy:    (       )
                    // having:         (       )
                    // orderBy:  
                    Cursor cursor = dbSelect.query("table_person", new String[]{"name", "age"}, null, null, null, null, null);
                    int nameIndex = cursor.getColumnIndex("name");
                    int ageIndex = cursor.getColumnIndex("age");
                    //           
                    while (cursor.moveToNext()) {
                        String name = cursor.getString(nameIndex);
                        int age = cursor.getInt(ageIndex);
                       showText = showText + "  : " + name + "\t  : " + age + "
    "; } Log.d("TAG", " : " + showText ); dbSelect.close(); cursor.close();

    -注意事項:
  • カスタムデータベースアシスタントクラスを使用してデータベースを作成した場合、データベースの格納場所は**data/data/com.w.Demo/databases/my_database.db**
  • データベースを作成または開く方法を使用する場合、データベースの場所は:/storage/emulated/0/my_database.db