在Android應用開發中,當需要存儲結構化數據時,SQLite是一個非常強大的工具。SQLite是一款輕量級的關系型數據庫管理系統,它內嵌于Android系統中,支持SQL語法,并且不需要單獨的服務器進程或系統配置。本文將介紹如何在Android應用中使用SQLite進行數據的存儲、查詢、更新和刪除。
一、SQLite簡介
SQLite是無服務器、零配置、事務性的SQL數據庫引擎。它非常適合移動設備上的應用,因為它占用資源少,性能高效,并且可以直接與應用程序代碼集成。Android提供了一個名為SQLiteOpenHelper
的幫助類,用于管理數據庫的創建和版本管理。
二、準備工作
首先,在你的項目中添加對SQLite的支持。實際上,由于SQLite是Android的一部分,所以無需額外添加依賴項。
三、創建數據庫
(一)繼承SQLiteOpenHelper
要使用SQLite數據庫,你需要創建一個類繼承自SQLiteOpenHelper
,并重寫以下方法:
onCreate(SQLiteDatabase db)
:首次創建數據庫時調用。onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)
:當數據庫版本升級時調用。
public class MyDatabaseHelper extends SQLiteOpenHelper {private static final String DATABASE_NAME = "example.db";private static final int DATABASE_VERSION = 1;public MyDatabaseHelper(Context context) {super(context, DATABASE_NAME, null, DATABASE_VERSION);}@Overridepublic void onCreate(SQLiteDatabase db) {// 創建表db.execSQL("CREATE TABLE users (id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, age INTEGER)");}@Overridepublic void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {// 當數據庫版本更新時執行的操作db.execSQL("DROP TABLE IF EXISTS users");onCreate(db);}
}
四、基本操作
(一)插入數據
MyDatabaseHelper dbHelper = new MyDatabaseHelper(context);
SQLiteDatabase db = dbHelper.getWritableDatabase();
ContentValues values = new ContentValues();
values.put("name", "Alice");
values.put("age", 25);
long newRowId = db.insert("users", null, values);
db.close();
(二)查詢數據
SQLiteDatabase db = dbHelper.getReadableDatabase();
String[] projection = {"id", "name", "age"};
Cursor cursor = db.query("users", projection, null, null, null, null, null);while (cursor.moveToNext()) {long id = cursor.getLong(cursor.getColumnIndexOrThrow("id"));String name = cursor.getString(cursor.getColumnIndexOrThrow("name"));int age = cursor.getInt(cursor.getColumnIndexOrThrow("age"));Log.d("User", "ID: " + id + ", Name: " + name + ", Age: " + age);
}
cursor.close();
db.close();
(三)更新數據
SQLiteDatabase db = dbHelper.getWritableDatabase();
ContentValues values = new ContentValues();
values.put("age", 26);
String selection = "name LIKE ?";
String[] selectionArgs = { "Alice" };
int count = db.update("users", values, selection, selectionArgs);
db.close();
(四)刪除數據
SQLiteDatabase db = dbHelper.getWritableDatabase();
String selection = "age > ?";
String[] selectionArgs = { "30" };
int deletedRows = db.delete("users", selection, selectionArgs);
db.close();
五、優化與注意事項
(一)事務處理
對于批量插入等操作,可以使用事務來提高效率:
db.beginTransaction();
try {// 插入多條記錄db.setTransactionSuccessful();
} finally {db.endTransaction();
}
(二)關閉數據庫連接
確保每次完成數據庫操作后都關閉SQLiteDatabase
對象以釋放資源。
(三)異常處理
在進行數據庫操作時,務必做好異常處理,以防程序崩潰。
六、結語
感謝您的閱讀!如果你有任何疑問或想要分享的經驗,請在評論區留言交流!