Android SQLite的增刪改查操作詳解

什麼是Android SQLite

SQLite是一個關係型數據庫管理系統,這個庫是在用戶空間運行的,因此,不像MySQL等需要在程序中安裝對應的服務來進行通訊。SQLite雖然是個很小巧的數據庫,但是在Android平台上面,使用得卻是異常廣泛。因為SQLite的輕便性能特別適合在移動設備上面承載一些小型的數據管理,並且它的設計很符合Android系統的設計。

Android SQLite的應用場景

針對儲存半結構化或非結構化數據,如配置文件、用戶數據、環境變量等信息。

非常適用於本地APP運行數據的存儲。如果需要將數據共享,可以使用SQL、Web API等技術。

Android SQLite基礎操作

創建SQLiteOpenHelper類

SQLiteOpenHelper類是Android提供的一個幫助類,它提供了一個獲取數據庫實例的方法,並且它可以讓我們很方便的打開數據連接。創建SQLiteOpenHelper 類,我們需要繼承它並且實現其抽象方法,如下:

public class MyDatabaseHelper extends SQLiteOpenHelper {
    private static final String DB_NAME = "test.db"; // 數據庫名稱
    private static final int DB_VERSION = 1; // 數據庫版本號

    public MyDatabaseHelper(Context context) {
        super(context, DB_NAME, null, DB_VERSION);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL("CREATE TABLE IF NOT EXISTS t_user (_id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT NOT NULL, age INTEGER DEFAULT 0);");
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        db.execSQL("DROP TABLE IF EXISTS t_user;");
        onCreate(db);
    }
}

在上述代碼中,我們創建了一個繼承自SQLiteOpenHelper的自定義幫助類MyDatabaseHelper,實現了其兩個方法onCreate和onUpgrade,其中,onCreate方法會在首次創建數據庫時被調用,用於在數據庫中創建相關的表和列。onUpgrade方法會在當前數據庫版本較低時,被SQLiteOpenHelper調用。

打開或創建數據庫

通過繼承自SQLiteOpenHelper並實現部分方法,我們可以打開或創建數據庫,並進行相應的操作,如下:

MyDatabaseHelper dbHelper = new MyDatabaseHelper(context);
SQLiteDatabase db = dbHelper.getWritableDatabase();

在上述代碼中,我們創建一個MyDatabaseHelper實例,並調用其getWritableDatabase方法,獲取可寫的數據庫連接(如若只讀請改用getReadableDatabase)。如果數據庫不存在就會自動創建,否則直接打開該數據庫,並返回一個SQLiteDatabase實例。

插入數據

SQLite提供了insert()方法可以插入數據,當然,在插入數據之前我們還需要創建對應的表和列。

SQLiteDatabase db = dbHelper.getWritableDatabase();
ContentValues values = new ContentValues();
values.put("name", "張三");
values.put("age", "25");
db.insert("t_user", null , values);

在上述代碼中,我們首先獲取到一個SQLiteDatabase對象,然後創建ContentValues對象,將要插入的數據封裝進去。最後,我們調用insert方法把數據插入到表t_user中。

查詢數據

SQLite提供了query()方法來查詢數據,該方法有多個重載方法來滿足不同的查詢需求。在這裡我們看下最常用的兩種查詢方式:

查詢所有數據:

SQLiteDatabase db = dbHelper.getWritableDatabase();
Cursor cursor = db.query("t_user", null, null, null, null, null, null);
if (cursor.moveToFirst()) {
    do {
        String name = cursor.getString(cursor.getColumnIndex("name"));
        int age= cursor.getInt(cursor.getColumnIndex("age"));
        Log.d(TAG, "name: " + name + ", age: " + age);
    } while (cursor.moveToNext());
}
cursor.close();

在上述代碼中,我們調用了query()方法來查詢t_user表中所有的數據,並使用Cursor對象遍歷結果,從每行中提取所有數據的name和age字段。查詢完成後,需要記得調用close()方法來關閉Cursor對象。

按條件查詢數據:

SQLiteDatabase db = dbHelper.getWritableDatabase();
Cursor cursor = db.query("t_user", null, "age>?", new String[]{"18"}, null, null, null);
if (cursor.moveToFirst()) {
    do {
        String name = cursor.getString(cursor.getColumnIndex("name"));
        int age= cursor.getInt(cursor.getColumnIndex("age"));
        Log.d(TAG, "name: " + name + ", age: " + age);
    } while (cursor.moveToNext());
}
cursor.close();

在上述代碼中,我們傳遞了參數來獲取符合指定條件的行。query()方法的第3個參數為where子句,而第4個參數是where子句的每個參數的值。在這裡,我們只返回age字段大於18的所有人的姓名和年齡。

修改數據

SQLite provides update()方法來更新數據。在更新記錄之前,我們需要先找到將要更新的記錄。在這裡我們看下最常用的兩種更新方式:

更新一個字段:

SQLiteDatabase db = dbHelper.getWritableDatabase();
ContentValues values = new ContentValues();
values.put("name", "李四");
db.update("t_user", values, "_id=?", new String[]{"1"});

在上述代碼中,我們修改id為1的行中的name字段,並將它的值設為「李四」。

更新多個字段:

SQLiteDatabase db = dbHelper.getWritableDatabase();
ContentValues values = new ContentValues();
values.put("name", "王五");
values.put("age", "30");
db.update("t_user", values, "_id=?", new String[]{"1"});

在上述代碼中,我們修改id為1的行中的name和age字段,分別賦值為「王五」和「30」。

刪除數據

SQLite提供了delete()方法來刪除數據,該方法的第一個參數是表名,第二個參數是where子句,第三個參數是where子句的每個參數的值。在這裡我們看下最常用的方式:

SQLiteDatabase db = dbHelper.getWritableDatabase();
db.delete("t_user", "age<?", new String[]{"18"});

在上述代碼中,我們刪除t_user表中age小於18的所有行。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/232521.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-11 12:52
下一篇 2024-12-11 12:52

相關推薦

  • Python棧操作用法介紹

    如果你是一位Python開發工程師,那麼你必須掌握Python中的棧操作。在Python中,棧是一個容器,提供後進先出(LIFO)的原則。這篇文章將通過多個方面詳細地闡述Pytho…

    編程 2025-04-29
  • Python操作數組

    本文將從多個方面詳細介紹如何使用Python操作5個數組成的列表。 一、數組的定義 數組是一種用於存儲相同類型數據的數據結構。Python中的數組是通過列表來實現的,列表中可以存放…

    編程 2025-04-29
  • Python操作MySQL

    本文將從以下幾個方面對Python操作MySQL進行詳細闡述: 一、連接MySQL數據庫 在使用Python操作MySQL之前,我們需要先連接MySQL數據庫。在Python中,我…

    編程 2025-04-29
  • Python代碼實現迴文數最少操作次數

    本文將介紹如何使用Python解決一道經典的迴文數問題:給定一個數n,按照一定規則對它進行若干次操作,使得n成為迴文數,求最少的操作次數。 一、問題分析 首先,我們需要了解迴文數的…

    編程 2025-04-29
  • Python磁盤操作全方位解析

    本篇文章將從多個方面對Python磁盤操作進行詳細闡述,包括文件讀寫、文件夾創建、刪除、文件搜索與遍歷、文件重命名、移動、複製、文件權限修改等常用操作。 一、文件讀寫操作 文件讀寫…

    編程 2025-04-29
  • Python元祖操作用法介紹

    本文將從多個方面對Python元祖的操作進行詳細闡述。包括:元祖定義及初始化、元祖遍歷、元祖切片、元祖合併及比較、元祖解包等內容。 一、元祖定義及初始化 元祖在Python中屬於序…

    編程 2025-04-29
  • 如何用Python對數據進行離散化操作

    數據離散化是指將連續的數據轉化為離散的數據,一般是用於數據挖掘和數據分析中,可以幫助我們更好的理解數據,從而更好地進行決策和分析。Python作為一種高效的編程語言,在數據處理和分…

    編程 2025-04-29
  • Python列表的讀寫操作

    本文將針對Python列表的讀取與寫入操作進行詳細的闡述,包括列表的基本操作、列表的增刪改查、列表切片、列表排序、列表反轉、列表拼接、列表複製等操作。 一、列表的基本操作 列表是P…

    編程 2025-04-29
  • Python序列的常用操作

    Python序列是程序中的重要工具,在數據分析、機器學習、圖像處理等很多領域都有廣泛的應用。Python序列分為三種:列表(list)、元組(tuple)和字符串(string)。…

    編程 2025-04-28
  • Python獲取Flutter上內容的方法及操作

    本文將從以下幾個方面介紹Python如何獲取Flutter上的內容: 一、獲取Flutter應用數據 使用Flutter提供的Platform Channel API可以很容易地獲…

    編程 2025-04-28

發表回復

登錄後才能評論