服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|数据库技术|

服务器之家 - 数据库 - Sqlite - 聊聊SQLite-轻量级关系型数据库

聊聊SQLite-轻量级关系型数据库

2023-12-13 14:18沐雨花飞蝶 Sqlite

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

SQLite介绍

SQLite 是一种轻量级的关系型数据库管理系统,它被设计为嵌入式数据库,不需要独立的服务器进程,可以直接访问存储在文件中的数据库。SQLite 在移动设备、嵌入式系统以及小型应用程序中被广泛使用,它具有简单、快速、可靠的特点。SQLite 使用 SQL 语言进行数据库操作,支持大部分标准的 SQL 语法。

在使用 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 TRANSACTION和COMMIT之间的操作中发生错误,整个事务将被回滚,数据库将不会受到影响。

原文地址:https://mp.weixin.qq.com/s/VBEqC3iA5O6SQmOZ53Ew2g

延伸 · 阅读

精彩推荐
  • Sqlite将sqlite3中数据导入到mysql中的实战教程

    将sqlite3中数据导入到mysql中的实战教程

    最近因为工作的需求,需要将sqlite3中的数据导入到mysql中去,发现网上的一些教程都不够详细,索性自己写一篇,下面这篇文章主要给大家介绍了关于将...

    小子12852021-11-01
  • SqliteSQLite3 API 编程手册

    SQLite3 API 编程手册

    Sqlite3 的确很好用。小巧、速度快。但是因为非微软的产品,帮助文档总觉得不够。这些天再次研究它,又有一些收获,这里把我对 sqlite3 的研究列出来,...

    SQLite教程网1682020-06-06
  • SqliteSQLite3中的日期时间函数使用小结

    SQLite3中的日期时间函数使用小结

    这篇文章主要介绍了SQLite3中的日期时间函数使用小结,同时介绍了一些SQLite数据库的基本知识,需要的朋友可以参考下 ...

    SQLite教程网5512020-06-06
  • Sqlite知其然更要知其所以然,聊聊SQLite软件架构

    知其然更要知其所以然,聊聊SQLite软件架构

    SQLite虽然非常小巧,但功能却非常丰富,正所谓“麻雀虽小,五脏俱全”。SQLite不仅具备基本的SQL特性,还具备索引、触发器、视图和事务等特性。 ...

    今日头条5812020-10-27
  • SqliteLinux sqlite3 基本命令

    Linux sqlite3 基本命令

    sqlite3一款主要用于嵌入式的轻量级数据库,本文旨在为熟悉sqlite3基本命令提供技术文档 ...

    sqlite数据库教程网7402020-06-04
  • SqliteSQLite与MySQL区别及优缺点介绍

    SQLite与MySQL区别及优缺点介绍

    这篇文章介绍了SQLite与MySQL的区别及优缺点,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...

    Tw!light7762022-10-27
  • SqlitesQlite常用语句以及sQlite developer的使用与注册

    sQlite常用语句以及sQlite developer的使用与注册

    sQlite数据库对大家来说应该都不陌生,下面这篇文章主要给大家介绍了关于sQlite常用语句以及sQlite developer使用与注册的相关资料,文中通过示例代码与图片...

    秀逼3612020-06-11
  • SqliteSQLite教程(十三):C语言编程实例代码(1)

    SQLite教程(十三):C语言编程实例代码(1)

    这篇文章主要介绍了SQLite教程(十三):C语言编程实例代码(1),本文讲解了获取表的Schema信息、动态创建表、删除该表、常规数据插入、创建测试数据表...

    服务器之家2772020-06-10