最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

一,SQLite簡介

        SQLite是一個無服務器的,零配置的,事務性的SQL數(shù)據(jù)庫引擎。無服務器,意味著使用sqlite不需要聯(lián)網(wǎng);不需要配置,意味著不需要安裝和管理;同時sqlite遵循ACID原則。SQLIte是一款輕型的數(shù)據(jù)庫,占用資源非常低,在嵌入式設備中,可能只需幾百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)建路徑和一個游標工廠;

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:在此處指定一個列名,當數(shù)據(jù)為空時,會向該列插入一個null。一般設為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ù),當whereClause使用占位符時,在此處填入條件參數(shù),形式為字符串數(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)的,當我們使用SQLiteDatabase.query()方法時,會得到一個Cursor對象,Cursor指向的就是每一條數(shù)據(jù)。

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

Cursor游標類常用方法:

private void searchWord() {
    //查詢條件
    String selection = "word=?";
    //查詢條件參數(shù)
    String[] selectionArgs = { String.valueOf(word) };
    //執(zhí)行查詢,獲取游標類
    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ù)庫。主要負責數(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中事務的處理

SQLite采用如下方法來處理事務:

  • beginTransaction():開啟事務;
  • setTransactionSuccessful():標記事務成功;
  • endTransaction():提交事務,當事務執(zhí)行失敗時,可調(diào)用此方法回滾事務;
db.beginTransaction();
try {
        // 執(zhí)行事務中的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)文章

  • flutter實現(xiàn)頭部tabTop滾動欄

    flutter實現(xiàn)頭部tabTop滾動欄

    這篇文章主要為大家詳細介紹了flutter實現(xiàn)頭部tabTop滾動欄,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • Android自定義View實現(xiàn)環(huán)形進度條的思路與實例

    Android自定義View實現(xiàn)環(huán)形進度條的思路與實例

    最近看到豆瓣FM的音樂播放界面,有一個環(huán)形的進度條挺不錯的,最近有空就想著實現(xiàn)了,所以下面這篇文章主要給大家介紹了Android自定義View實現(xiàn)環(huán)形進度條的思路與實例,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-04-04
  • Android Tabhost使用方法詳解

    Android Tabhost使用方法詳解

    這篇文章主要為大家詳細介紹了Android Tabhost使用方法,如何利用TabHost 實現(xiàn)tab視圖,感興趣的小伙伴們可以參考一下
    2016-06-06
  • Android ProgressBar直線進度條的實例代碼

    Android ProgressBar直線進度條的實例代碼

    本文通過實例代碼給大家介紹了android progressbar直線進度條的實現(xiàn)方法,非常不錯,具有參考借鑒價值,需要的朋友參考下吧
    2017-06-06
  • Android多媒體之VideoView視頻播放器

    Android多媒體之VideoView視頻播放器

    這篇文章主要為大家詳細介紹了Android多媒體之VideoView視頻播放器的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-02-02
  • 如何在Android 中實現(xiàn)scp操作

    如何在Android 中實現(xiàn)scp操作

    這篇文章主要介紹了如何在Android 中實現(xiàn)scp操作,幫助大家更好的理解和學習使用Android,感興趣的朋友可以了解下
    2021-03-03
  • Flutter?fluro時報錯type?'String'?is?not?a?subtype?of?type?'Queue<Task>'

    Flutter?fluro時報錯type?'String'?is?not?a?subty

    這篇文章主要介紹了Flutter使用fluro時報錯type?'String'?is?not?a?subtype?of?type?'Queue<Task>'解決方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2023-12-12
  • 一文帶你徹底搞懂Behavior實現(xiàn)復雜的視覺聯(lián)動效果原理

    一文帶你徹底搞懂Behavior實現(xiàn)復雜的視覺聯(lián)動效果原理

    這篇文章主要為大家介紹了一文帶你徹底搞懂Behavior實現(xiàn)復雜的視覺聯(lián)動效果原理詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-04-04
  • Android音樂播放器制作 掃描本地音樂顯示在手機(一)

    Android音樂播放器制作 掃描本地音樂顯示在手機(一)

    這篇文章主要介紹了Android音樂播放器的制作方法,掃描本地音樂顯示在手機上,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-02-02
  • Android訪問assets本地json文件的方法

    Android訪問assets本地json文件的方法

    這篇文章主要介紹了Android訪問assets本地json文件的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-10-10

最新評論

常宁市| 云梦县| 海伦市| 聂拉木县| 延寿县| 洪泽县| 庄浪县| 新安县| 错那县| 临城县| 浦东新区| 博爱县| 独山县| 贵溪市| 岳阳县| 龙里县| 南投县| 舟曲县| 乐东| 合作市| 康马县| 嵩明县| 焉耆| 宁南县| 南和县| 罗平县| 资兴市| 额尔古纳市| 彰化市| 曲靖市| 文登市| 同江市| 加查县| 南溪县| 凤城市| 弥渡县| 徐闻县| 永平县| 壶关县| 罗江县| 西昌市|