亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

SQLite數(shù)據(jù)庫(kù)在Android中的使用小結(jié)

 更新時(shí)間:2024年07月23日 11:31:52   作者:IH_LZH  
SQLIte是一款輕型的數(shù)據(jù)庫(kù),占用資源非常低,在嵌入式設(shè)備中,可能只需幾百k的內(nèi)存,這篇文章主要介紹了SQLite數(shù)據(jù)庫(kù)在Android中的使用,需要的朋友可以參考下

一,SQLite簡(jiǎn)介

        SQLite是一個(gè)無服務(wù)器的,零配置的,事務(wù)性的SQL數(shù)據(jù)庫(kù)引擎。無服務(wù)器,意味著使用sqlite不需要聯(lián)網(wǎng);不需要配置,意味著不需要安裝和管理;同時(shí)sqlite遵循ACID原則。SQLIte是一款輕型的數(shù)據(jù)庫(kù),占用資源非常低,在嵌入式設(shè)備中,可能只需幾百k的內(nèi)存。

二,SQLIte在Android中的使用

        Android中使用SQLiteDatabase代表數(shù)據(jù)庫(kù),并提供了一系列方法來操作數(shù)據(jù)庫(kù)。對(duì)于常用的增刪改查操作,既可以使用execSQL()方法直接執(zhí)行sql語句,也可以使用Android提供的方法,由于execSQL()方法返回void,無法判斷是否執(zhí)行成功,所以除創(chuàng)建表之外的操作通常使用Android提供的一系列方法。

1,打開或者創(chuàng)建數(shù)據(jù)庫(kù)

        使用openOrCreateDatabase()打開或者創(chuàng)建一個(gè)數(shù)據(jù)庫(kù),如果數(shù)據(jù)庫(kù)存在則打開數(shù)據(jù)庫(kù),反之則創(chuàng)建一個(gè)數(shù)據(jù)庫(kù)。創(chuàng)建成功則返回SQLiteDatabase對(duì)象,否則拋出異常。使用時(shí)需提供創(chuàng)建路徑和一個(gè)游標(biāo)工廠;

private void initDatabase() {
    String filePath = getFilesDir().getAbsolutePath() + "wordDB.db";
    DB = SQLiteDatabase.openOrCreateDatabase(filePath, null);
    Log.i("DB", "數(shù)據(jù)庫(kù)初始化成功!");
}

2,創(chuàng)建表

表的創(chuàng)建可以通過SQLiteDatabase的exexSQL()方法直接執(zhí)行sql語句來創(chuàng)建;

private void inittable() {
    String table = "create table tb_word(" +
            "id integer primary key autoincrement," +
            "word varchar(20) not null," +
            "translation varchar(20) not null);";
    DB.execSQL(table);
}

3,插入數(shù)據(jù)

  • table:所要執(zhí)行的表名;
  • nullColumnHack:在此處指定一個(gè)列名,當(dāng)數(shù)據(jù)為空時(shí),會(huì)向該列插入一個(gè)null。一般設(shè)為null;
  • values:要插入的內(nèi)容;
private void insert() {
    //所要插入的數(shù)據(jù)
    ContentValues contentValues = new ContentValues();
    contentValues.put("word", word);
    contentValues.put("translation", translation);
    //執(zhí)行插入
    long id = wordDB.insert("tb_word", null, contentValues);
    if(id > 0){
        Toast.makeText(this, "錄入成功!", Toast.LENGTH_SHORT).show();
    }
}

4,刪除數(shù)據(jù)

  •  table:表名;
  • whereClause:修改條件,也就是sql語句中where后的內(nèi)容,可以使用占位符,如"id=?";
  • whereArgs:修改條件參數(shù),當(dāng)whereClause使用占位符時(shí),在此處填入條件參數(shù),形式為字符串?dāng)?shù)組;
private void delete() {
    //刪除條件
    String whereClause = "word = ?";
    //刪除條件參數(shù)
    String[] whereArgs = {String.valueOf(words.getWord())};
    //執(zhí)行刪除
    int row = wordDB.delete("tb_word", whereClause, whereArgs);
    if(row > 0){
        Log.i("delete", "刪除成功");
    }else {
        Log.i("delete", "刪除失敗");
    }
}

5,修改數(shù)據(jù)

  • table:表名;
  • values:修改的內(nèi)容;
  • whereClause:修改的條件,與delete的一致;
  • whereArgs:修改條件參數(shù); 
private void update(){
    //修改的內(nèi)容
    ContentValues values = new ContentValues();
    values.put("translation", translation);
    //修改條件
    String whereClause = "word=?";
    //修改條件參數(shù)
    String[] whereArgs = {word};
    //執(zhí)行修改
    int row = wordDB.update("tb_word", values, whereClause, whereArgs);
    if(row > 0){
        Log.i("update", "更新成功");
    }else {
        Log.i("update", "更新失敗");
    }
}

 6,查詢數(shù)據(jù)

        在Android中查詢數(shù)據(jù)是通過Cursor類來實(shí)現(xiàn)的,當(dāng)我們使用SQLiteDatabase.query()方法時(shí),會(huì)得到一個(gè)Cursor對(duì)象,Cursor指向的就是每一條數(shù)據(jù)。

  • table:表名;
  • columns:列名稱數(shù)組,指定從哪些列尋找;
  • selection:查詢的條件,相當(dāng)于where后的內(nèi)容;
  • selectionArgs:查詢條件的參數(shù);
  • groupBy:分組列;
  • having:分組條件;
  • orderBy:排序列;
  • limit:分頁(yè)查詢限制;

Cursor游標(biāo)類常用方法:

private void searchWord() {
    //查詢條件
    String selection = "word=?";
    //查詢條件參數(shù)
    String[] selectionArgs = { String.valueOf(word) };
    //執(zhí)行查詢,獲取游標(biāo)類
    Cursor cursor = wordDB.query("tb_word", null, selection, selectionArgs , null, null, null);
    StringBuffer result = new StringBuffer();
    while(cursor.moveToNext()){
        int idOfWord = cursor.getColumnIndex("word");
        String word1 = cursor.getString(idOfWord);
        int idOfTranslation = cursor.getColumnIndex("translation");
        String translation = cursor.getString(idOfTranslation);
        result.append(word1 + ": " + translation + "\n");
    }
    tv_words.setText(result.toString());
}

三,SQLiteOpenHelper類

        Android提供SQLiteOpenHelper類來管理數(shù)據(jù)庫(kù)。主要負(fù)責(zé)數(shù)據(jù)庫(kù)的創(chuàng)建、版本更新,一般情況通過創(chuàng)建它的子類并擴(kuò)展onCreate()onUpgrade()方法來實(shí)現(xiàn)。 

SQLiteOpenHelper類常用方法:

  • abstract void onCreate():第一次創(chuàng)建數(shù)據(jù)庫(kù)時(shí)回調(diào);
  • abstract void onUpgrade():數(shù)據(jù)庫(kù)版本更新時(shí)回調(diào);
  • SQLiteDatabase  getWritableDatabase():獲得可讀/寫的數(shù)據(jù)庫(kù);
  • SQLiteDatabase  getReadableDatabase():獲得可讀的數(shù)據(jù)庫(kù);
  • void close():關(guān)閉所有打開的SQLiteDatabase;

 (1)創(chuàng)建SQLiteOpenHelper的子類,并重寫方法:

public class MySqliteHelper extends SQLiteOpenHelper {
    public MySqliteHelper(@Nullable Context context, @Nullable String name, @Nullable SQLiteDatabase.CursorFactory factory, int version) {
        super(context, name, factory, version);
    }
    @Override
    public void onCreate(SQLiteDatabase db) {
        String table = "create table tb_word(" +
                "id integer primary key autoincrement," +
                "word varchar(20) not null," +
                "translation varchar(20) not null);";
        db.execSQL(table);
    }
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    }
}

(2)通過子類來創(chuàng)建數(shù)據(jù)庫(kù):

private void initDatabaseHelper() {
    mySqliteHelper = new MySqliteHelper(
            this,
            "wordDB.db",
            null,
            1
    );
    SQLiteHelperUtil.wordDB = mySqliteHelper.getWritableDatabase();
    Log.i("wordDB", "數(shù)據(jù)庫(kù)初始化成功!");
}

四,SQLite中事務(wù)的處理

SQLite采用如下方法來處理事務(wù):

  • beginTransaction():開啟事務(wù);
  • setTransactionSuccessful():標(biāo)記事務(wù)成功;
  • endTransaction():提交事務(wù),當(dāng)事務(wù)執(zhí)行失敗時(shí),可調(diào)用此方法回滾事務(wù);
db.beginTransaction();
try {
        // 執(zhí)行事務(wù)中的sql語句
        db.setTransactionSuccessful();
} finally {
        db.endTransaction();
    }
}

到此這篇關(guān)于SQLite數(shù)據(jù)庫(kù)在Android中的使用的文章就介紹到這了,更多相關(guān)Android SQLite數(shù)據(jù)庫(kù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論