SQLite-轻量级关系型数据库

SQLite介绍

SQLite 是一种轻量级的关系型数据库管理系统,它被设计为嵌入式数据库,不需要独立的服务器进程,可以直接访问存储在文件中的数据库。

SQLite 在移动设备、嵌入式系统以及小型应用程序中被广泛使用,它具有简单、快速、可靠的特点。

SQLite 使用 SQL 语言进行数据库操作,支持大部分标准的 SQL 语法。

图片[1]-SQLite-轻量级关系型数据库-不念博客

在使用 SQLite 时,可以通过 SQL 语句来创建、查询、更新和删除数据库中的数据。同时,SQLite 也支持事务处理、触发器、视图等数据库特性,使得它在小型应用程序中也能满足一定的复杂需求。

Android中的SQLite是一种轻量级的关系型数据库管理系统,它被广泛用于Android应用程序中存储和管理数据。SQLite数据库以单个文件的形式存储在设备的内部存储器上,可以通过SQL语句进行数据的增删改查操作。

SQLite使用

SQLite是一种轻量级的关系型数据库管理系统,它被设计为嵌入式数据库,可以在各种操作系统上运行。SQLite的特点包括零配置、无服务器、支持事务等。它通常用于移动设备、嵌入式系统以及小型应用程序中。

通常要使用SQLite,需要通过以下步骤操作:

  1. 下载SQLite:可以从官方网站下载SQLite的最新版本,也可以通过包管理工具安装SQLite。
  2. 创建数据库:使用SQLite命令行工具或者SQLite的API来创建一个数据库文件。
  3. 连接数据库:通过命令行工具或者编程语言的API来连接到数据库。
  4. 执行SQL语句:使用SQL语句来创建表、插入数据、查询数据等操作。
  5. 断开连接:在完成操作后,记得断开与数据库的连接。

SQLite的SQL语句和常规的关系型数据库类似,但也有一些特有的语法和功能。在使用SQLite时,需要注意其特有的限制和特性,比如数据类型的灵活性和事务处理的支持等。

在Android开发中,可以使用SQLite作为本地数据库存储数据。以下是使用SQLite的基本步骤:

  1. 创建数据库:在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 mytable (_id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT);");
        // 初始化数据
        db.execSQL("INSERT INTO mytable (name) VALUES ('John');");
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        // 升级数据库时的操作
    }
}
  1. 执行数据库操作:使用SQLiteDatabase类执行数据库操作,如插入、更新、删除和查询数据。
DBHelper dbHelper = new DBHelper(context);
SQLiteDatabase db = dbHelper.getWritableDatabase();

// 插入数据
ContentValues values = new ContentValues();
values.put("name", "Alice");
db.insert("mytable", null, values);

// 查询数据
Cursor cursor = db.query("mytable", new String[]{"_id", "name"}, null, null, null, null, null);
while (cursor.moveToNext()) {
    int id = cursor.getInt(cursor.getColumnIndex("_id"));
    String name = cursor.getString(cursor.getColumnIndex("name"));
    // 处理数据
}

// 关闭数据库连接
db.close();
  1. 注意事项:在使用SQLite时,需要注意线程安全、数据类型、SQL注入等安全性问题,以及数据库版本升级时的处理。

SQLite数据库升级

public class DBHelper extends SQLiteOpenHelper {
    private static final String DATABASE_NAME = "mydatabase.db";
    private static final int DATABASE_VERSION = 2;

    // 构造函数
    public DBHelper(Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
    }

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

    // 升级数据库
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        if (oldVersion < 2) {
            // 添加新表
            String createNewTableQuery = "CREATE TABLE newtable (id INTEGER PRIMARY KEY, age INTEGER)";
            db.execSQL(createNewTableQuery);
        }
        if (oldVersion < 3) {
            // 添加新字段
            String addNewColumnQuery = "ALTER TABLE mytable ADD COLUMN email TEXT";
            db.execSQL(addNewColumnQuery);
        }
    }
}

在上面的示例中,我们创建了一个名为mydatabase.db的数据库,并指定版本号为2。

onCreate方法中,我们创建了一个名为mytable的表。

onUpgrade方法中,我们检查旧版本号,如果旧版本号小于2,则添加一个名为newtable的新表;

如果旧版本号小于3,则向mytable表中添加一个名为email的新字段。

当你的应用程序升级时,数据库结构也会相应地进行升级。

SQLite事务操作

数据库事务是指作为单个逻辑工作单元执行的一系列操作,要么全部成功执行,要么全部不执行。

在数据库中,事务具有以下四个特性,通常称为ACID特性:

  1. 原子性(Atomicity):事务中的所有操作要么全部执行成功,要么全部不执行,不存在部分执行的情况。
  2. 一致性(Consistency):事务执行前后,数据库的完整性约束没有被破坏,数据库从一个一致性状态转换到另一个一致性状态。
  3. 隔离性(Isolation):多个事务并发执行时,每个事务的操作对其他事务是隔离的,一个事务的中间结果不会被其他事务看到。
  4. 持久性(Durability):一旦事务提交,其所做的修改将会永久保存在数据库中,即使系统发生故障也不会丢失。

在数据库中,事务可以使用以下语法来控制:

BEGIN TRANSACTION; -- 开始事务
-- 执行一系列数据库操作
COMMIT; -- 提交事务
ROLLBACK; -- 回滚事务

在SQLite中,事务是一组数据库操作,这些操作要么全部成功执行,要么全部失败回滚。

SQLite使用以下语句来控制事务:

  • BEGIN TRANSACTION: 开始一个新的事务
  • COMMIT: 提交事务,将所有操作永久保存到数据库
  • ROLLBACK: 回滚事务,撤销自上次BEGIN TRANSACTION以来的所有操作

在SQLite中,默认情况下,每个SQL语句都被视为一个事务。如果要在一个事务中执行多个操作,可以使用BEGIN TRANSACTION开始事务,然后使用COMMIT提交事务,或者使用ROLLBACK回滚事务。

例如,要在SQLite中执行一个事务,可以按照以下格式编写SQL语句:

BEGIN TRANSACTION;
-- 执行一系列数据库操作
COMMIT;

在Android开发中,SQLite对于事物的操作如下:

// 开始事务
db.beginTransaction();
try {
    // 执行数据库操作
    // 插入数据
    db.insert(TABLE_NAME, null, values);
    // 更新数据
    db.update(TABLE_NAME, values, whereClause, whereArgs);
    // 删除数据
    db.delete(TABLE_NAME, whereClause, whereArgs);
    // 标记事务成功
    db.setTransactionSuccessful();
} finally {
    // 结束事务
    db.endTransaction();
}

这样,如果在BEGIN TRANSACTIONCOMMIT之间的操作中发生错误,整个事务将被回滚,数据库将不会受到影响。

© 版权声明
THE END
喜欢就支持一下吧
点赞55赞赏 分享
评论 抢沙发
头像
欢迎光临不念博客,留下您的想法和建议,祝您有愉快的一天~
提交
头像

昵称

取消
昵称代码图片

    暂无评论内容