利用Android中的SQLite进行CRUD
在Android应用开发中,SQLite是一个重要的组成部分,它是一个轻量级的数据库系统,允许开发者在移动设备上存储和管理数据。这篇博客“利用Android中的SQLite进行CRUD”将深入探讨如何在Android应用中使用SQLite进行基本的数据操作,包括创建(Create)、读取(Read)、更新(Update)和删除(Delete)。 我们需要了解Android是如何集成SQLite的。Android系统提供了一个SQLiteOpenHelper类,它是处理SQLite数据库的主要入口点。这个类包含两个关键方法:`onCreate()` 和 `onUpgrade()`。`onCreate()` 在数据库首次创建时被调用,用于构建数据库结构;`onUpgrade()` 当数据库版本升级时执行,可以用来修改数据库表结构或执行其他升级任务。 创建数据库和表结构通常在SQLiteOpenHelper的子类中完成。例如: ```java public class DatabaseHelper extends SQLiteOpenHelper { public static final String DATABASE_NAME = "MyDatabase.db"; public static final String TABLE_NAME = "Student"; public static final String COL_1 = "ID"; public static final String COL_2 = "NAME"; public static final String COL_3 = "MARKS"; // 创建数据库 @Override public void onCreate(SQLiteDatabase db) { String createTable = "CREATE TABLE " + TABLE_NAME + " (ID INTEGER PRIMARY KEY AUTOINCREMENT, " + "NAME TEXT, MARKS INTEGER)"; db.execSQL(createTable); } // 数据库版本升级 @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME); onCreate(db); } } ``` 接下来是CRUD操作: 1. **创建(Create)**:使用SQL的`INSERT INTO`语句向表中添加数据。在Android中,这通常通过SQLiteOpenHelper的子类的实例和SQLiteDatabase对象来完成。 ```java public boolean insertData(String name, String marks) { SQLiteDatabase db = this.getWritableDatabase(); ContentValues contentValues = new ContentValues(); contentValues.put(COL_2, name); contentValues.put(COL_3, marks); long result = db.insert(TABLE_NAME, null, contentValues); if (result == -1) return false; else return true; } ``` 2. **读取(Read)**:使用`SELECT`语句从数据库中检索数据。可以使用`query()`方法来执行查询,并通过Cursor对象遍历结果。 ```java public Cursor getAllData() { SQLiteDatabase db = this.getWritableDatabase(); Cursor res = db.rawQuery("select * from " + TABLE_NAME, null); return res; } ``` 3. **更新(Update)**:使用`UPDATE`语句更新现有记录。这需要指定一个或多个条件来确定要更新的行。 ```java public boolean updateData(String id, String name, String marks) { SQLiteDatabase db = this.getWritableDatabase(); ContentValues contentValues = new ContentValues(); contentValues.put(COL_1, id); contentValues.put(COL_2, name); contentValues.put(COL_3, marks); db.update(TABLE_NAME, contentValues, "ID = ?", new String[]{id}); return true; } ``` 4. **删除(Delete)**:使用`DELETE`语句从数据库中移除数据。同样,可能需要提供一个或多个条件来确定要删除的行。 ```java public Integer deleteData(String id) { SQLiteDatabase db = this.getWritableDatabase(); return db.delete(TABLE_NAME, "ID = ?", new String[]{id}); } ``` 此外,为了在UI层面上与数据库交互,可以使用ContentProvider,它提供了标准的接口供其他应用组件访问数据。另外,LoaderManager可以帮助管理数据加载过程,确保在UI线程之外执行查询,从而避免阻塞用户界面。 记得在应用不再需要数据库连接时关闭它,以节省资源。在Android应用中,通常在Activity或Fragment的生命周期方法中管理这些操作。 Android的SQLite支持为开发者提供了高效、灵活的数据存储解决方案,通过SQLiteOpenHelper和相关的SQLite命令,可以轻松地进行CRUD操作,实现数据的持久化存储。通过阅读这篇博客,你可以深入了解如何在Android应用中有效地使用SQLite数据库。
- 1
- 粉丝: 387
- 资源: 6万+
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- CC2530无线zigbee裸机代码实现液晶LCD显示.zip
- CC2530无线zigbee裸机代码实现中断唤醒系统.zip
- 车辆、飞机、船检测24-YOLO(v5至v11)、COCO、CreateML、Paligemma、TFRecord、VOC数据集合集.rar
- 基于51单片机的火灾烟雾红外人体检测声光报警系统(protues仿真)-毕业设计
- 高仿抖音滑动H5随机短视频源码带打赏带后台 网站引流必备源码
- 车辆、飞机、船检测25-YOLO(v5至v11)、COCO、CreateML、Paligemma、TFRecord、VOC数据集合集.rar
- 四足机器人示例代码pupper-example-master.zip
- Python人工智能基于深度学习的农作物病虫害识别项目源码.zip
- 基于MIT mini-cheetah 的四足机器人控制quadruped-robot-master.zip
- 菠萝狗四足机器人py-apple-bldc-quadruped-robot-main.zip
- 基于51单片机的篮球足球球类比赛计分器设计(protues仿真)-毕业设计
- 第3天实训任务--电子22级.pdf
- 基于FPGA 的4位密码锁矩阵键盘 数码管显示 报警仿真
- 车辆、飞机、船检测5-YOLO(v5至v11)、COCO、CreateML、Paligemma、VOC数据集合集.rar
- 河南大学(软工免浪费时间)
- NOIP-学习建议-C++