
掌握Android SQLite数据库操作技巧
下载需积分: 10 | 48KB |
更新于2025-01-30
| 172 浏览量 | 举报
收藏
Android SQLite操作是Android平台中存储和管理数据的核心机制之一。SQLite是一个轻量级的数据库,它以一个库的形式存在,可以嵌入到应用程序中,允许用户在没有服务器后台的情况下进行数据库操作。Android内置了SQLite数据库,通过Android SDK提供的API可以方便地实现对SQLite数据库的创建、查询、更新和删除(CRUD)操作。
### SQLite数据库的创建与打开
在Android应用中创建一个新的SQLite数据库通常涉及继承SQLiteOpenHelper类。SQLiteOpenHelper是一个抽象类,提供帮助管理数据库创建和版本管理的便捷方法。在创建数据库时,重写`onCreate()`和`onUpgrade()`方法至关重要。
- `onCreate(SQLiteDatabase db)`: 当数据库第一次被访问时会被调用,通常在这里创建表结构。
- `onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)`: 当数据库版本发生变化时会被调用,用于处理数据库的升级逻辑,比如增加表字段、删除旧表等。
数据库的操作是在Context对象(例如Activity或Service)中进行的。
```java
public class DatabaseHelper extends SQLiteOpenHelper {
private static final String DATABASE_NAME = "example.db";
private static final int DATABASE_VERSION = 1;
private static final String TABLE_NAME = "example_table";
private static final String COLUMN_ID = "_id";
private static final String COLUMN_NAME = "name";
private static final String COLUMN_AGE = "age";
public DatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
String createTableSQL = "CREATE TABLE " + TABLE_NAME + "("
+ COLUMN_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, "
+ COLUMN_NAME + " TEXT, "
+ COLUMN_AGE + " INTEGER);";
db.execSQL(createTableSQL);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// 根据版本号的递增逻辑,添加删除表或者修改表结构的SQL语句
}
}
```
### 数据库的CRUD操作
创建了数据库和表后,我们就可以执行CRUD操作了。CRUD操作通常使用SQL语句或者封装好的数据库帮助类提供的方法来完成。
#### 查询(Retrieve)
查询数据使用`SQLiteDatabase.query()`方法。你可以指定查询的表名、列、条件等参数。例如:
```java
public Cursor fetchData() {
SQLiteDatabase db = this.getReadableDatabase();
String[] columns = new String[]{COLUMN_ID, COLUMN_NAME, COLUMN_AGE};
Cursor cursor = db.query(TABLE_NAME, columns, null, null, null, null, null);
return cursor;
}
```
#### 新增(Create)
向数据库插入新数据一般使用`SQLiteDatabase.insert()`方法,或者直接执行INSERT INTO语句。
```java
public long insertData(String name, int age) {
SQLiteDatabase db = this.getWritableDatabase();
ContentValues values = new ContentValues();
values.put(COLUMN_NAME, name);
values.put(COLUMN_AGE, age);
long newRowId = db.insert(TABLE_NAME, null, values);
return newRowId;
}
```
#### 更新(Update)
更新记录使用`SQLiteDatabase.update()`方法,或者执行UPDATE SQL语句。
```java
public int updateData(long id, String newName) {
SQLiteDatabase db = this.getWritableDatabase();
ContentValues values = new ContentValues();
values.put(COLUMN_NAME, newName);
String selection = COLUMN_ID + " = ?";
String[] selectionArgs = { String.valueOf(id) };
int count = db.update(TABLE_NAME, values, selection, selectionArgs);
return count;
}
```
#### 删除(Delete)
删除记录使用`SQLiteDatabase.delete()`方法,或者执行DELETE SQL语句。
```java
public int deleteData(long id) {
SQLiteDatabase db = this.getWritableDatabase();
String selection = COLUMN_ID + " = ?";
String[] selectionArgs = { String.valueOf(id) };
int count = db.delete(TABLE_NAME, selection, selectionArgs);
return count;
}
```
### 事务处理
为了确保数据的一致性和完整性,操作多个数据库操作时,应该使用事务。在SQLite中,事务可以通过调用`SQLiteDatabase.setTransactionSuccessful()`和`SQLiteDatabase.endTransaction()`来管理。
```java
public void updateMultipleData() {
SQLiteDatabase db = this.getWritableDatabase();
db.beginTransaction();
try {
updateData(1, "New Name");
updateData(2, "Another New Name");
db.setTransactionSuccessful();
} catch(Exception e) {
e.printStackTrace();
} finally {
db.endTransaction();
}
}
```
### 数据库适配器(Adapter)
通常我们会用CursorAdapter或者SQLiteCursorAdapter来将查询结果绑定到ListView或者其他视图上。这是在Android中显示数据库数据的一种高效方式。
```java
public class ExampleAdapter extends CursorAdapter {
// 构造函数和视图的绑定逻辑
}
```
### 数据库性能优化
对于频繁使用的数据库,性能的优化很重要。优化手段包括但不限于:
- 使用索引来加快查询速度。
- 使用事务来减少磁盘I/O操作。
- 限制查询返回的数据量,使用LIMIT语句。
- 避免在主线程中做耗时的数据库操作,使用AsyncTask或其他后台线程。
- 在不需要时及时关闭Cursor和Database实例。
综上所述,Android SQLite操作是一套完整的从创建数据库到管理数据的机制。开发者通过上述知识,可以高效地在Android应用中集成和使用SQLite数据库来存储和管理数据。
相关推荐








~青花瓷
- 粉丝: 0
最新资源
- 掌握Oracle PLSQL编程技巧,提升数据库管理效率
- Java编写的简易ATM操作程序教程
- jQuery开发包:最新源码、中文手册及两实用插件
- 三菱PLC FLASH学习软件:4小时快速上手
- MATLAB程序实例解析:87个经典案例分析
- 清华大学数字电路课件及作业全解
- 出租车计费系统实例详解与研究
- 掌握CIW安全专业技能的中文培训教材
- 常用JavaScript代码集锦:直接复制使用指南
- 北大青鸟游戏点卡在线销售系统详解
- 桌面天气与日期工具:实时更新农历及节日提醒
- 计算机组成原理习题解析全集(白中英版)
- 30分钟掌握正则表达式入门教程
- 初学者指南:编写最小操作系统的源代码
- 全面增强的GridView控件功能介绍
- Webex屏幕录像软件:高效录制与后期编辑
- 构建简易新闻系统:Struts2+Spring+Hibernate教程
- 深入浅出Ajax核心技术及入门指南
- pyRmchart:Python程序员必备的免费图形绘制工具包
- JSP与Struts学习案例源代码大放送
- C#开发的超市商品管理系统教程
- FastReport版本251 DEMOS和SOURCE文件学习指南
- C++多线程技术深度解析与实践指南
- Java企业进销存管理系统的操作指南