Android SQLite数据库存储

在Android应用程序中,持久化是一个关键的功能,而SQLite数据库则是最常用的本地数据库之一。SQLite是一个轻量级的关系数据库,适合在移动设备上使用。本文将介绍如何在Android中使用SQLite进行数据存储,并提供示例代码。

SQLite数据库简介

SQLite是一个自给自足的、无需配置的、零客户端的数据库引擎。它的优点包括:

  1. 小巧:只需要少量存储空间。
  2. 高效:具有较快的读取和写入性能。
  3. 简单:易于使用和集成。

创建SQLite数据库

在Android中,使用SQLite数据库通常采用以下几个步骤:

  1. 创建一个继承自SQLiteOpenHelper的类。
  2. onCreate()方法中创建表。
  3. onUpgrade()方法中处理数据库的版本升级。
  4. 使用getWritableDatabase()getReadableDatabase()方法获取数据库实例。

示例代码

下面是一个简单的示例,演示如何创建和管理SQLite数据库。

public class DatabaseHelper extends SQLiteOpenHelper {
    private static final String DATABASE_NAME = "example.db";
    private static final int DATABASE_VERSION = 1;

    public static final String TABLE_NAME = "user";
    public static final String COLUMN_ID = "id";
    public static final String COLUMN_NAME = "name";
    
    private static final String TABLE_CREATE =
            "CREATE TABLE " + TABLE_NAME + " (" +
            COLUMN_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
            COLUMN_NAME + " TEXT);";

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

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

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME);
        onCreate(db);
    }
}

插入数据

插入数据非常简单。我们可以通过ContentValues类来封装数据,并使用insert方法将其存入数据库。

public void insertUser(String name) {
    SQLiteDatabase db = this.getWritableDatabase();
    ContentValues values = new ContentValues();
    values.put(COLUMN_NAME, name);
    db.insert(TABLE_NAME, null, values);
    db.close();
}

查询数据

要查询数据,我们可以使用Cursor类来遍历结果集。

public List<String> getAllUsers() {
    List<String> userList = new ArrayList<>();
    SQLiteDatabase db = this.getReadableDatabase();
    
    Cursor cursor = db.query(TABLE_NAME, new String[]{COLUMN_ID, COLUMN_NAME}, null, null, null, null, null);
    if (cursor.moveToFirst()) {
        do {
            userList.add(cursor.getString(1)); // 1是COLUMN_NAME的索引
        } while (cursor.moveToNext());
    }
    cursor.close();
    db.close();
    return userList;
}

删除数据

如果需要删除某条数据,可以根据ID进行删除:

public void deleteUser(int id) {
    SQLiteDatabase db = this.getWritableDatabase();
    db.delete(TABLE_NAME, COLUMN_ID + " = ?", new String[]{String.valueOf(id)});
    db.close();
}

更新数据

更新数据和插入数据类似,只需要使用update方法:

public void updateUser(int id, String name) {
    SQLiteDatabase db = this.getWritableDatabase();
    ContentValues values = new ContentValues();
    values.put(COLUMN_NAME, name);
    db.update(TABLE_NAME, values, COLUMN_ID + " = ?", new String[]{String.valueOf(id)});
    db.close();
}

类图

以下是DatabaseHelper类的类图示例:

classDiagram
    class DatabaseHelper {
        - static final String DATABASE_NAME
        - static final int DATABASE_VERSION
        - static final String TABLE_NAME
        - static final String COLUMN_ID
        - static final String COLUMN_NAME
        + DatabaseHelper(Context context)
        + void onCreate(SQLiteDatabase db)
        + void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)
        + void insertUser(String name)
        + List<String> getAllUsers()
        + void deleteUser(int id)
        + void updateUser(int id, String name)
    }

结论

SQLite数据库是Android开发中的重要组成部分。使用SQLite,开发者可以轻松管理本地数据,实现持久化存储。本文通过示例代码演示了SQLite数据库的创建、数据插入、查询、更新和删除等基本操作。

掌握SQLite的使用,可以为您的Android应用提供更强大的数据管理能力。希望这篇文章能帮助您更好地理解SQLite的应用场景,并在以后的开发过程中加以应用。