SQLite介绍
SQLite 是一种轻量级的关系型数据库管理系统,它被设计为嵌入式数据库,不需要独立的服务器进程,可以直接访问存储在文件中的数据库。
SQLite 在移动设备、嵌入式系统以及小型应用程序中被广泛使用,它具有简单、快速、可靠的特点。
SQLite 使用 SQL 语言进行数据库操作,支持大部分标准的 SQL 语法。
在使用 SQLite 时,可以通过 SQL 语句来创建、查询、更新和删除数据库中的数据。同时,SQLite 也支持事务处理、触发器、视图等数据库特性,使得它在小型应用程序中也能满足一定的复杂需求。
Android中的SQLite是一种轻量级的关系型数据库管理系统,它被广泛用于Android应用程序中存储和管理数据。SQLite数据库以单个文件的形式存储在设备的内部存储器上,可以通过SQL语句进行数据的增删改查操作。
SQLite使用
SQLite是一种轻量级的关系型数据库管理系统,它被设计为嵌入式数据库,可以在各种操作系统上运行。SQLite的特点包括零配置、无服务器、支持事务等。它通常用于移动设备、嵌入式系统以及小型应用程序中。
通常要使用SQLite,需要通过以下步骤操作:
SQLite的SQL语句和常规的关系型数据库类似,但也有一些特有的语法和功能。在使用SQLite时,需要注意其特有的限制和特性,比如数据类型的灵活性和事务处理的支持等。
在Android开发中,可以使用SQLite作为本地数据库存储数据。以下是使用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 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) {
// 升级数据库时的操作
}
}
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();
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特性:
在数据库中,事务可以使用以下语法来控制:
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
之间的操作中发生错误,整个事务将被回滚,数据库将不会受到影响。