返回

Android 原生数据库插入和批量删除数据详解

Android

在 Android 开发中,原生数据库 SQLite 提供了灵活而强大的数据存储和管理功能。本文将深入探讨原生数据库中插入数据和批量删除数据的最佳实践,通过翔实的代码示例和清晰的解释,帮助您充分掌握这一关键技术。

创建数据库

首先,让我们创建一个名为 "product.db" 的数据库。使用以下代码创建一个新的 SQLiteOpenHelper 子类:

public class DatabaseHelper extends SQLiteOpenHelper {

    // 数据库版本
    private static final int DATABASE_VERSION = 1;

    // 数据库名称
    private static final String DATABASE_NAME = "product.db";

    // 创建产品的表
    private static final String SQL_CREATE_ENTRIES =
            "CREATE TABLE IF NOT EXISTS products (id INTEGER PRIMARY KEY, name TEXT, price REAL)";

    public DatabaseHelper(Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL(SQL_CREATE_ENTRIES);
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        // 此处处理数据库升级逻辑
    }
}

向数据库插入数据

接下来,让我们向名为 "products" 的表中插入一些数据。使用以下步骤:

  1. 获取 SQLiteDatabase 对象:
SQLiteDatabase db = helper.getWritableDatabase();
  1. 创建 ContentValues 对象以存储要插入的数据:
ContentValues values = new ContentValues();
values.put("name", "Product 1");
values.put("price", 10.99);
  1. 使用 insert() 方法插入数据:
long rowId = db.insert("products", null, values);
  1. 关闭数据库连接:
db.close();

获取数据库总条数

有时,您可能需要获取数据库中的总条数。使用以下步骤:

  1. 获取 SQLiteDatabase 对象:
SQLiteDatabase db = helper.getReadableDatabase();
  1. 执行查询以获取总条数:
Cursor cursor = db.rawQuery("SELECT COUNT(*) FROM products", null);
cursor.moveToFirst();
int count = cursor.getInt(0);
cursor.close();
  1. 关闭数据库连接:
db.close();

批量删除数据

最后,让我们讨论如何批量删除数据。使用以下步骤:

  1. 获取 SQLiteDatabase 对象:
SQLiteDatabase db = helper.getWritableDatabase();
  1. 开始事务:
db.beginTransaction();
  1. 遍历要删除的行 ID,并使用 delete() 方法删除每行:
for (long rowId : rowIdsToDelete) {
    db.delete("products", "id=?", new String[]{String.valueOf(rowId)});
}
  1. 提交事务:
db.setTransactionSuccessful();
  1. 关闭数据库连接:
db.close();

总结

通过遵循本文中的步骤,您将能够熟练地使用 Android 原生数据库 SQLite 插入数据和批量删除数据。这些技术对于管理本地数据存储和维护数据完整性至关重要。无论您是构建复杂应用程序还是简单数据存储解决方案,本文提供的知识都将成为您宝贵的财富。