Android SQLite 数据库介绍与使用

引言

在移动应用开发中,数据的存储与管理是非常重要的一部分。而移动设备的存储空间相对较小,因此需要一种轻量级的数据库来存储和管理数据。Android平台提供了一个内置的SQLite数据库,它是一个基于文件的关系型数据库,被广泛用于Android应用的数据存储。

本文将详细介绍Android SQLite数据库的基本概念,以及如何在Android应用中使用SQLite数据库进行数据存储和管理。

SQLite 简介

SQLite是一种嵌入式的关系型数据库,它不需要独立的服务器进程,而是将整个数据库作为一个文件存储在设备上。SQLite数据库的特点如下:

  • 轻量级:SQLite数据库非常小巧,不需要额外的配置和管理。它只是一个库文件,可以直接嵌入到应用中。
  • 高效:SQLite数据库的查询和操作速度非常快,适用于移动设备的资源受限环境。
  • 支持标准的SQL语言:SQLite数据库支持标准的SQL语法,包括创建表、插入数据、查询数据等功能。

Android 中使用 SQLite

在Android中使用SQLite数据库需要借助于android.database.sqlite包中的类,这些类提供了对SQLite数据库的操作和管理。下面是一个使用SQLite数据库的示例代码:

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

public class DBHelper extends SQLiteOpenHelper {

    private static final String DATABASE_NAME = "mydatabase.db";
    private static final int DATABASE_VERSION = 1;

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

    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL("CREATE TABLE IF NOT EXISTS 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);
    }
}

上述代码示例中定义了一个DBHelper类,它继承自SQLiteOpenHelper类。SQLiteOpenHelper是一个辅助类,用于管理数据库的创建和版本升级。

DBHelper类中,我们重写了onCreate方法和onUpgrade方法。onCreate方法用于创建数据库和初始表格,而onUpgrade方法用于更新数据库结构。

onCreate方法中,通过db.execSQL方法执行SQL语句创建表格。上述代码示例中创建了一个名为"users"的表格,包含id、name和age三个字段。

onUpgrade方法中,我们首先删除原有的表格(如果存在),然后调用onCreate方法重新创建新的表格。

使用 SQLite 数据库

在应用中使用SQLite数据库需要进行一系列的操作,包括创建数据库、创建表格、插入数据、查询数据等。下面是一些常用的代码示例:

创建数据库

DBHelper dbHelper = new DBHelper(context);
SQLiteDatabase db = dbHelper.getWritableDatabase();

上述代码中,我们创建了一个DBHelper对象,并调用getWritableDatabase方法获取可写的数据库实例。

创建表格

db.execSQL("CREATE TABLE IF NOT EXISTS users " +
        "(id INTEGER PRIMARY KEY AUTOINCREMENT, " +
        "name TEXT, " +
        "age INTEGER)");

上述代码中使用execSQL方法执行SQL语句,创建一个名为"users"的表格。

插入数据

ContentValues values = new ContentValues();
values.put("name", "John");
values.put("age", 25);
long rowId = db.insert("users", null, values);

上述代码中,我们首先创建一个ContentValues对象,用于存储要插入的数据。然后使用insert方法将数据插入到表格中,并返回插入的行号。

查询数据

String[] projection = {"id", "name", "age"};
String selection = "name = ?";
String[] selectionArgs = {"John"};
Cursor cursor = db.query("users", projection, selection, selectionArgs, null, null, null);

上述代码中,我们定义了要查询的字段(