• Sqlite数据库基本使用


    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(); // 结束事务,如果标记为成功,则提交事务,否则回滚事务
    }
  • 相关阅读:
    Linux redict 输入输出重定向 详细使用方法 文件描述符
    进程的状态与转换以及组织方式
    MYSQL的建表语句
    vue 甘特图(三):甘特图右侧内容拖动展示
    黑客帝国代码雨
    小程序AI智能名片S2B2C商城系统:四大主流商业模式深度解析与实战案例分享
    el-menu使用递归组件实现多级菜单组件
    JavaScript基于时间的动画算法
    Java基础面试题突击系列6
    数据库存储过程和触发器
  • 原文地址:https://blog.csdn.net/VitorLiu/article/details/139638578