在移動應用開發中,由于需要處理大量的數據,因此使用本地數據庫來存儲數據是非常常見的。本地數據庫與遠程數據庫不同,它是存儲在設備本地的一種數據存儲方式。本地數據庫有很多種,其中 SQLite 是一種非常受歡迎的本地數據庫,它是一種輕量級的數據庫,支持跨平臺操作,可以在 iOS、Android 和 Windows 上運行。
一、SQLite 數據庫的使用方法
1. 引入 SQLite 庫
在應用程序的 build.gradle 文件中加入以下代碼:
“`
dependencies {
compile ‘com.facebook.steAPPtho:stetho:1.5.0′
compile ‘com.facebook.stetho:stetho-okhttp3:1.5.0’
compile ‘com.squareup.okhttp3:okhttp:3.5.0’
compile ‘com.squareup.okhttp3:logging-interceptor:3.5.0’
compile ‘com.facebook.stetho:stetho-js-rhino:1.5.0’
compile ‘com.facebook.stetho:stetho-js:1.5.0’
compile ‘com.facebook.stetho:stetho-common:1.5.0’
compile ‘com.squareup.retrofit2:retrofit:2.3.0’
compile ‘com.squareup.retrofit2:converter-gson:2.3.0’
compile ‘net.zetetic:android-database-sqlcipher:3.5.9@aar’
}
“`
2. 創建數據庫
首先要創建 DBhelper 類,DBhelper 繼承自 SQLiteOpenHelper:
“`
public class DBhelper extends SQLiteOpenHelper {
public DBhelper(Context context, String name, CursorFactory factory, int version) {
super(context, name, factory, version);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(“create table if not exists user(id integer primary key autoincrement,name varchar(10),age varchar(10))”);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
//升級數據庫
}
}
“`
創建好 DBhelper 后,在 Activity 中創建一個 DBhelper 的實例:
“`
mDbhelper = new DBhelper(this, “test.db”, null, 1);
“`
3. 數據庫插入數APP開發據
插入數據可以通過 ContentValues 的方式實現:
“`
ContentValues values = new ContentValues();
values.put(“name”, “Java”);
values.put(“age”, “10”);
mDbhelper.getWritableDatabase().insert(“user”, null, values);
“`
或者通過 SQL 語句的方式實現:
“`
mDbhelper.getWritableDatabase().execSQL(“insert into user(name,age) values(‘Java’,10)”);
“`
4. 數據庫查詢數據
查詢數據可以通過 Cursor 對象實現:
“`
String sql = “select * from user”;
Cursor cursor = mDbhelper.getWritableDatabase().rawQuery(sql, null);
while (cursor.moveToNext()) {
int id = cursor.getInt(cursor.getColumnIndex(“id”));
String name = cursor.getString(cursor.getColumnIndex(“name”));
String age = cursor.getString(cursor.getColumnIndex(“age”));
Log.i(TAG, “id=” + id + “,name=” + name + “,age=” + age);
}
cursor.close();
“`
5. 數據庫更新數據
更新數據可以通過 ContentValues 的方式實現:
“`
ContentValues values = new ContentValues();
values.put(“age”, 20);
mDbhelper.getWritableDatabase().update(“user”, values, “name=?”, new String[]{“Java”});
“`
或者通過 SQL 語句的方式實現:
“`
String sql=”update user set age=20 where name=’Java'”;
mDbhelper.getWritableDatabase().execSQL(sql);
“`
6. 數據庫刪除數據
刪除數據可以通過 SQL 語句的方式實現:
“`
St
ring sql=”delete from user where name=’Java'”;
mDbhelper.getWritableDatabase().execSQL(sql);
“`
二、SQLite 數據庫的原理
SQLite 是一個輕量級的數據庫,跟其他的數據庫相比,它的設計體系更加緊湊。它的數據庫引擎是以 C 語言實現的,整個數據庫可以存儲在一個文件里面,不需要一個額外的服務器程序來協助存儲管理。SQLite 的設計目標是使得移動設備和嵌入式設備能夠高效地存儲數據和查詢數據,因此,SQLite 的主要應用場景是移動應用和嵌入式設備。
SQLite 數據庫的文件結構非常簡潔,包含 5 種文件結構:
1. 文件頭
2. 數據庫頁
3. 數據頁
4. 索引頁
5. 跟蹤頁
SQLite 的查詢語言采用的是 SQL92 標準,但是 SQLite 支持的 SQL 語法的一部分是是與 SQL92 不兼容的。SQLite 具有正確的、無鎖的并發操作,能夠確保多個進程和線程同時訪問數據庫而不出現數據損壞的情況。
在 SQLite 數據庫中,表達數據模型的是查詢計劃,查詢計劃是一顆查詢樹,它表示了查詢過程中所需的數據流。每個節點都有一個輸入和一個輸出,輸入數據會處理產生輸出, 最終的節點會把所需的數據輸入到查詢結果里面。
總結
本文介紹了使用 SQLite 數據庫的方法和 SQLite 數據庫的原理,SQLite 作為一個輕量級的數據庫,非常適合在移動應用和嵌入式設備中使用。使用 SQLite 數據庫可以非常方便地存儲處理數據,并且保證了數據的穩定性和安全性。相信通過本文的介紹,讀者對 SQLite 數據庫的使用和原理有了更深入的了解,可以更加熟練地在開發中使用這個工具。