Android开发-数据库SQLite

在Android应用开发中,当需要存储结构化数据时,SQLite是一个非常强大的工具。SQLite是一款轻量级的关系型数据库管理系统,它内嵌于Android系统中,支持SQL语法,并且不需要单独的服务器进程或系统配置。本文将介绍如何在Android应用中使用SQLite进行数据的存储、查询、更新和删除。

一、SQLite简介

SQLite是无服务器、零配置、事务性的SQL数据库引擎。它非常适合移动设备上的应用,因为它占用资源少,性能高效,并且可以直接与应用程序代码集成。Android提供了一个名为SQLiteOpenHelper的帮助类,用于管理数据库的创建和版本管理。

二、准备工作

首先,在你的项目中添加对SQLite的支持。实际上,由于SQLite是Android的一部分,所以无需额外添加依赖项。

三、创建数据库

(一)继承SQLiteOpenHelper

要使用SQLite数据库,你需要创建一个类继承自SQLiteOpenHelper,并重写以下方法:

  • onCreate(SQLiteDatabase db):首次创建数据库时调用。
  • onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion):当数据库版本升级时调用。
java 复制代码
public class MyDatabaseHelper extends SQLiteOpenHelper {
    private static final String DATABASE_NAME = "example.db";
    private static final int DATABASE_VERSION = 1;

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

    @Override
    public void onCreate(SQLiteDatabase db) {
        // 创建表
        db.execSQL("CREATE TABLE 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);
    }
}

四、基本操作

(一)插入数据

java 复制代码
MyDatabaseHelper dbHelper = new MyDatabaseHelper(context);
SQLiteDatabase db = dbHelper.getWritableDatabase();
ContentValues values = new ContentValues();
values.put("name", "Alice");
values.put("age", 25);
long newRowId = db.insert("users", null, values);
db.close();

(二)查询数据

java 复制代码
SQLiteDatabase db = dbHelper.getReadableDatabase();
String[] projection = {"id", "name", "age"};
Cursor cursor = db.query("users", projection, null, null, null, null, null);

while (cursor.moveToNext()) {
    long id = cursor.getLong(cursor.getColumnIndexOrThrow("id"));
    String name = cursor.getString(cursor.getColumnIndexOrThrow("name"));
    int age = cursor.getInt(cursor.getColumnIndexOrThrow("age"));
    Log.d("User", "ID: " + id + ", Name: " + name + ", Age: " + age);
}
cursor.close();
db.close();

(三)更新数据

java 复制代码
SQLiteDatabase db = dbHelper.getWritableDatabase();
ContentValues values = new ContentValues();
values.put("age", 26);
String selection = "name LIKE ?";
String[] selectionArgs = { "Alice" };
int count = db.update("users", values, selection, selectionArgs);
db.close();

(四)删除数据

java 复制代码
SQLiteDatabase db = dbHelper.getWritableDatabase();
String selection = "age > ?";
String[] selectionArgs = { "30" };
int deletedRows = db.delete("users", selection, selectionArgs);
db.close();

五、优化与注意事项

(一)事务处理

对于批量插入等操作,可以使用事务来提高效率:

java 复制代码
db.beginTransaction();
try {
    // 插入多条记录
    db.setTransactionSuccessful();
} finally {
    db.endTransaction();
}

(二)关闭数据库连接

确保每次完成数据库操作后都关闭SQLiteDatabase对象以释放资源。

(三)异常处理

在进行数据库操作时,务必做好异常处理,以防程序崩溃。

六、结语

感谢您的阅读!如果你有任何疑问或想要分享的经验,请在评论区留言交流!

相关推荐
Smile丶凉轩21 分钟前
Qt 界面优化(绘图)
开发语言·数据库·c++·qt
昔柯的修炼日记1 小时前
使用 Navicat 将 Excel 导入数据库
数据库
进击的雷神3 小时前
数据库知识全面考查:从基础概念到实战应用
jvm·数据库·oracle
Le_ee4 小时前
sqli-labs靶场第七关——文件导出注入
数据库·sql·网络安全·php·sql注入·sqli—labs
奔跑吧 android4 小时前
【android bluetooth 案例分析 03】【PTS 测试 】【PBAP/PCE/SGSIT/SERR/BV-01-C】
android·pts·aosp·pbap·sgsit
不知几秋4 小时前
Maven
java·数据库·maven
政沅同学4 小时前
数据库实验报告 SQL SERVER 2008的基本操作 1
数据库
lyw2056194 小时前
MySQL八股(自用)
数据库·mysql
MMMMMMMMMMemory5 小时前
pgsql14自动创建表分区
数据库·pgsql
文牧之5 小时前
PostgreSQL 配置设置函数
运维·数据库·postgresql