Android开发-数据库SQLite

发布于:2025-05-15 ⋅ 阅读:(70) ⋅ 点赞:(0)

在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);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        // 创建表
        db.execSQL("CREATE TABLE users (id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, age INTEGER)");
    }

    @Override
    public 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对象以释放资源。

(三)异常处理

在进行数据库操作时,务必做好异常处理,以防程序崩溃。

六、结语

感谢您的阅读!如果你有任何疑问或想要分享的经验,请在评论区留言交流!


网站公告

今日签到

点亮在社区的每一天
去签到