Android SQLite 数据库是一个轻量级的关系型数据库,它非常适合在移动设备上存储结构化数据。下面将详细介绍如何在 Android 应用中使用 SQLite 数据库进行数据存储,包括创建数据库、升级数据库、添加、更新、删除、查询数据以及使用事务的 Java 实现。
1. 创建数据库
在 Android 中,SQLite 数据库通常是通过继承 SQLiteOpenHelper
类来创建的。SQLiteOpenHelper
类提供了管理数据库创建和版本管理的方法。
import android.content.Context; | |
import android.database.sqlite.SQLiteDatabase; | |
import android.database.sqlite.SQLiteOpenHelper; | |
public class MyDatabaseHelper extends SQLiteOpenHelper { | |
private static final String DATABASE_NAME = "my_database.db"; | |
private static final int DATABASE_VERSION = 1; | |
public MyDatabaseHelper(Context context) { | |
super(context, DATABASE_NAME, null, DATABASE_VERSION); | |
} | |
@Override | |
public void onCreate(SQLiteDatabase db) { | |
// 创建表等操作 | |
db.execSQL("CREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT, age INTEGER)"); | |
} | |
@Override | |
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { | |
// 数据库升级时的操作 | |
} | |
} |
2. 升级数据库
当需要升级数据库时,可以通过修改 DATABASE_VERSION
的值来触发 onUpgrade
方法。在这个方法中,你可以执行表结构的修改、数据的迁移等操作。
@Override | |
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { | |
// 例如,从版本1升级到版本2时,添加一个新列 | |
if (oldVersion < 2) { | |
db.execSQL("ALTER TABLE users ADD COLUMN email TEXT"); | |
} | |
// 可以继续添加更多版本升级的逻辑 | |
} |
3. 添加数据
使用 SQLiteDatabase
的 insert
方法来添加数据。
SQLiteDatabase db = dbHelper.getWritableDatabase(); | |
ContentValues values = new ContentValues(); | |
values.put("name", "John Doe"); | |
values.put("age", 30); | |
long newRowId = db.insert("users", null, values); |
4. 更新数据
使用 update
方法来更新数据。
SQLiteDatabase db = dbHelper.getWritableDatabase(); | |
ContentValues values = new ContentValues(); | |
values.put("age", 31); // 更新年龄为31 | |
String whereClause = "id = ?"; // 更新条件为id等于某个值 | |
String[] whereArgs = {String.valueOf(newRowId)}; // id的值 | |
int count = db.update("users", values, whereClause, whereArgs); |
5. 删除数据
使用 delete
方法来删除数据。
SQLiteDatabase db = dbHelper.getWritableDatabase(); | |
String whereClause = "id = ?"; // 删除条件为id等于某个值 | |
String[] whereArgs = {String.valueOf(newRowId)}; // id的值 | |
int count = db.delete("users", whereClause, whereArgs); |
6. 查询数据
使用 query
方法来查询数据。
SQLiteDatabase db = dbHelper.getReadableDatabase(); | |
String[] projection = {"id", "name", "age"}; // 需要查询的列名 | |
String selection = "age > ?"; // 查询条件,例如年龄大于某个值 | |
String[] selectionArgs = {"25"}; // 查询条件的值 | |
Cursor cursor = db.query("users", projection, selection, selectionArgs, null, null, null); | |
while (cursor.moveToNext()) { | |
int id = cursor.getInt(cursor.getColumnIndex("id")); | |
String name = cursor.getString(cursor.getColumnIndex("name")); | |
int age = cursor.getInt(cursor.getColumnIndex("age")); | |
// 处理查询结果... | |
} | |
cursor.close(); // 记得关闭Cursor |
7. 使用事务
SQLite 支持事务处理,可以确保一系列数据库操作要么全部成功,要么全部失败。
SQLiteDatabase db = dbHelper.getWritableDatabase(); | |
db.beginTransaction(); // 开始事务 | |
try { | |
// 执行一系列数据库操作... | |
db.setTransactionSuccessful(); // 如果所有操作都成功,则标记事务为成功 | |
} catch (Exception e) { | |
// 处理异常... | |
} finally { | |
db.endTransaction(); // 结束事务,如果标记为成功,则提交事务,否则回滚事务 | |
} |