欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

一,SQLite簡介

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

二,SQLIte在Android中的使用

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

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

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

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

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:在此處指定一個列名,當(dāng)數(shù)據(jù)為空時,會向該列插入一個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ù),形式為字符串?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類來實現(xiàn)的,當(dāng)我們使用SQLiteDatabase.query()方法時,會得到一個Cursor對象,Cursor指向的就是每一條數(shù)據(jù)。

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

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ù)庫。主要負(fù)責(zé)數(shù)據(jù)庫的創(chuàng)建、版本更新,一般情況通過創(chuàng)建它的子類并擴展onCreate()onUpgrade()方法來實現(xiàn)。 

SQLiteOpenHelper類常用方法:

  • abstract void onCreate():第一次創(chuàng)建數(shù)據(jù)庫時回調(diào);
  • abstract void onUpgrade():數(shù)據(jù)庫版本更新時回調(diào);
  • SQLiteDatabase  getWritableDatabase():獲得可讀/寫的數(shù)據(jù)庫;
  • SQLiteDatabase  getReadableDatabase():獲得可讀的數(shù)據(jù)庫;
  • 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ù)庫:

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

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

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

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

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

相關(guān)文章

  • Android中傳值Intent與Bundle的區(qū)別小結(jié)

    Android中傳值Intent與Bundle的區(qū)別小結(jié)

    這篇文章主要給大家總結(jié)介紹了關(guān)于Android中傳值Intent與Bundle的區(qū)別,文中通過示例代碼以及圖文介紹的非常詳細(xì),對各位Android開發(fā)者們具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • Android自定義view實現(xiàn)水波進(jìn)度條控件

    Android自定義view實現(xiàn)水波進(jìn)度條控件

    這篇文章主要為大家詳細(xì)介紹了Android自定義view實現(xiàn)水波進(jìn)度條控件,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-05-05
  • Android側(cè)滑菜單控件DrawerLayout使用詳解

    Android側(cè)滑菜單控件DrawerLayout使用詳解

    這篇文章主要為大家詳細(xì)介紹了Android側(cè)滑菜單控件DrawerLayout的使用,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-12-12
  • Android Studio導(dǎo)入jar包過程詳解

    Android Studio導(dǎo)入jar包過程詳解

    這篇文章主要介紹了Android Studio導(dǎo)入jar包過程詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-11-11
  • 模仿美團(tuán)點評的Android應(yīng)用中價格和購買欄懸浮固定的效果

    模仿美團(tuán)點評的Android應(yīng)用中價格和購買欄懸浮固定的效果

    這篇文章主要介紹了模仿美團(tuán)點評的Android應(yīng)用中價格和購買欄懸浮固定的效果,文章后半還針對快速滑動操作給出了一個響應(yīng)優(yōu)化的方法,需要的朋友可以參考下
    2016-04-04
  • 利用Android實現(xiàn)比較炫酷的自定義View

    利用Android實現(xiàn)比較炫酷的自定義View

    自定義View、多線程、網(wǎng)絡(luò),被認(rèn)為是Android開發(fā)者必須牢固掌握的最基礎(chǔ)的三大基本功,這篇文章主要給大家介紹了關(guān)于如何利用Android實現(xiàn)比較炫酷的自定義View的相關(guān)資料,需要的朋友可以參考下
    2021-07-07
  • 詳解Android的OkHttp包編寫異步HTTP請求調(diào)用的方法

    詳解Android的OkHttp包編寫異步HTTP請求調(diào)用的方法

    OkHttp支持Callback異步回調(diào)來實現(xiàn)線程的非阻塞,下面我們就來詳解Android的OkHttp包編寫異步HTTP請求調(diào)用的方法,需要的朋友可以參考下
    2016-07-07
  • Android 自定義View實現(xiàn)抽屜效果

    Android 自定義View實現(xiàn)抽屜效果

    這篇文章主要介紹了Android 自定義View實現(xiàn)抽屜效果的相關(guān)資料,需要的朋友可以參考下
    2017-05-05
  • 一文帶你深入理解Android Window系統(tǒng)

    一文帶你深入理解Android Window系統(tǒng)

    Android中的窗口系統(tǒng)是應(yīng)用程序用戶界面的核心組件之一,它負(fù)責(zé)管理可視化區(qū)域、處理用戶輸入事件以及與系統(tǒng)UI交互,本文將深入介紹與Android窗口系統(tǒng)相關(guān)的重要概念,需要的朋友可以參考下
    2023-10-10
  • Android開發(fā)使用json實現(xiàn)服務(wù)器與客戶端數(shù)據(jù)的交互功能示例

    Android開發(fā)使用json實現(xiàn)服務(wù)器與客戶端數(shù)據(jù)的交互功能示例

    這篇文章主要介紹了Android開發(fā)使用json實現(xiàn)服務(wù)器與客戶端數(shù)據(jù)的交互功能,結(jié)合具體實例形式分析了Android使用json格式數(shù)據(jù)在服務(wù)器與客戶端傳遞實現(xiàn)數(shù)據(jù)庫查詢功能的步驟與相關(guān)操作技巧,需要的朋友可以參考下
    2017-10-10

最新評論