Android开发:SQLite数据库中的数据操作详解
141 浏览量
更新于2024-08-29
收藏 248KB PDF 举报
"这篇Android学习笔记主要讲解如何将数据保存到SQL数据库中,包括使用SQLHelper创建数据库以及数据的增删查改操作。"
在Android应用开发中,存储数据的方式多种多样,而SQL数据库是一个常用的选择,尤其适用于处理结构化、需要高效检索的数据。SQLite是Android系统内置的关系型数据库,它轻量级且易于使用,能满足大多数应用的需求。本篇笔记将通过一个联系人管理的示例来深入理解这一过程。
首先,我们来看如何使用SQLHelper创建数据库。SQLHelper是一个自定义的辅助类,通常继承自SQLiteOpenHelper。这个类的主要职责是创建和升级数据库。以下是一个简单的SQLHelper类的实现:
```java
public class DatabaseHelper extends SQLiteOpenHelper {
private static final String DATABASE_NAME = "ContactDB";
private static final int DATABASE_VERSION = 1;
// 创建数据库时执行的SQL语句
private static final String CREATE_TABLE = "CREATE TABLE " + ContactContract.ContactEntry.TABLE_NAME + " ("
+ ContactContract.ContactEntry._ID + " INTEGER PRIMARY KEY AUTOINCREMENT,"
+ ContactContract.ContactEntry.COLUMN_NAME + " TEXT,"
+ ContactContract.ContactEntry.COLUMN_PHONE_NUMBER + " TEXT)";
public DatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(CREATE_TABLE);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// 当数据库版本升级时,可以在此删除旧表并创建新表
db.execSQL("DROP TABLE IF EXISTS " + ContactContract.ContactEntry.TABLE_NAME);
onCreate(db);
}
}
```
在上面的代码中,`onCreate()`方法用于首次创建数据库时执行的SQL语句,创建了一个名为"ContactDB"的表,包含_id(主键)、_name和_phone_number三列。`onUpgrade()`方法则在数据库版本升级时被调用,通常会先删除旧表,然后重新创建新表。
接下来,我们要了解数据的增删查改(PRDU)操作:
1. 插入数据(Put/Insert):使用SQLHelper的`getWritableDatabase()`或`getReadableDatabase()`获取可读写的数据对象,然后调用`SQLiteDatabase`的`insert()`方法进行数据插入。
2. 读取数据(Read/Select):使用`SQLiteDatabase`的`query()`方法查询数据。可以传入SQL语句,或者使用`SQLiteQueryBuilder`构建更复杂的查询。
3. 更新数据(Update):使用`SQLiteDatabase`的`update()`方法更新已存在的数据,需要提供更新条件。
4. 删除数据(Delete):使用`SQLiteDatabase`的`delete()`方法删除指定条件的数据。
在实际操作中,我们通常会创建一个ContentProvider来封装这些数据库操作,使得数据能被其他应用访问,并遵循Android的权限控制。ContentProvider还与ContentResolver配合,提供了Uri方式的接口,方便进行数据操作。
定义Contract类:正如描述中提到,Contract类是一个常量容器,用来存放表名、列名等,这样在修改数据结构时只需要在一个地方修改,提高了代码的可维护性。例如:
```java
public class ContactContract {
public static abstract class ContactEntry implements BaseColumns {
public static final String TABLE_NAME = "contact";
public static final String COLUMN_NAME = "name";
public static final String COLUMN_PHONE_NUMBER = "phone_number";
}
}
```
在这个例子中,`ContactContract`定义了一个内部抽象类`ContactEntry`,实现了`BaseColumns`接口以获取`_ID`字段。`COLUMN_NAME`和`COLUMN_PHONE_NUMBER`分别表示姓名和电话号码的列名。
总结来说,Android中保存数据到SQL数据库涉及创建数据库、定义Contract类、使用ContentProvider封装操作以及执行基本的增删查改操作。通过这些步骤,我们可以高效地管理应用中的结构化数据。
2022-11-02 上传
2011-10-14 上传
2023-07-14 上传
2023-07-17 上传
2023-06-13 上传
2024-11-03 上传
2024-09-10 上传
2023-07-14 上传
2023-05-28 上传
weixin_38516040
- 粉丝: 3
- 资源: 918
最新资源
- 火炬连体网络在MNIST的2D嵌入实现示例
- Angular插件增强Application Insights JavaScript SDK功能
- 实时三维重建:InfiniTAM的ros驱动应用
- Spring与Mybatis整合的配置与实践
- Vozy前端技术测试深入体验与模板参考
- React应用实现语音转文字功能介绍
- PHPMailer-6.6.4: PHP邮件收发类库的详细介绍
- Felineboard:为猫主人设计的交互式仪表板
- PGRFileManager:功能强大的开源Ajax文件管理器
- Pytest-Html定制测试报告与源代码封装教程
- Angular开发与部署指南:从创建到测试
- BASIC-BINARY-IPC系统:进程间通信的非阻塞接口
- LTK3D: Common Lisp中的基础3D图形实现
- Timer-Counter-Lister:官方源代码及更新发布
- Galaxia REST API:面向地球问题的解决方案
- Node.js模块:随机动物实例教程与源码解析