在Android应用开发中,数据库是存储和管理应用程序数据的关键组件。SQLite是一个轻量级的、关系型数据库管理系统,被广泛用于Android系统中。本实例将详细介绍如何在Android中使用SQLite数据库进行操作。
我们需要在Android项目中添加SQLite库。在AndroidManifest.xml文件中,确保已经添加了读写权限:
```xml
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
```
接着,创建一个SQLiteOpenHelper的子类,例如`DatabaseHelper.java`,它是与数据库交互的核心。这个类负责数据库的创建、升级以及版本管理:
```java
public class DatabaseHelper extends SQLiteOpenHelper {
// 数据库版本号
private static final int DATABASE_VERSION = 1;
// 数据库名
private static final String DATABASE_NAME = "MyDatabase.db";
public DatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
// 创建表的SQL语句
String CREATE_TABLE = "CREATE TABLE IF NOT EXISTS MyTable ("
+ "id INTEGER PRIMARY KEY AUTOINCREMENT,"
+ "name TEXT,"
+ "email TEXT)";
db.execSQL(CREATE_TABLE);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// 当数据库版本更新时,可以在此删除旧表并创建新表
db.execSQL("DROP TABLE IF EXISTS MyTable");
onCreate(db);
}
}
```
在`onCreate()`方法中,我们定义了表结构。`onUpgrade()`方法用于当数据库版本升级时处理表结构的变化。
接下来,我们需要提供数据库的基本操作方法,如插入、查询、更新和删除。这些方法可以在`DatabaseHelper`类中实现,例如:
```java
public long insertData(String name, String email) {
SQLiteDatabase db = this.getWritableDatabase();
ContentValues contentValues = new ContentValues();
contentValues.put("name", name);
contentValues.put("email", email);
long result = db.insert("MyTable", null, contentValues);
db.close();
return result;
}
public Cursor getAllData() {
SQLiteDatabase db = this.getReadableDatabase();
Cursor res = db.rawQuery("select * from MyTable", null);
return res;
}
public boolean updateData(String id, String name, String email) {
SQLiteDatabase db = this.getWritableDatabase();
ContentValues contentValues = new ContentValues();
contentValues.put("name", name);
contentValues.put("email", email);
db.update("MyTable", contentValues, "id = ?", new String[]{id});
return true;
}
public Integer deleteData(String id) {
SQLiteDatabase db = this.getWritableDatabase();
return db.delete("MyTable", "id = ?", new String[]{id});
}
```
在实际应用中,通常会创建一个单独的数据访问对象(DAO)类,将这些方法封装起来,以便于在业务逻辑层调用。
使用这些方法时,需要实例化`DatabaseHelper`,然后调用对应的方法。例如,在Activity中:
```java
DatabaseHelper dbHelper = new DatabaseHelper(this);
// 插入数据
long result = dbHelper.insertData("John Doe", "john.doe@example.com");
// 查询所有数据
Cursor cursor = dbHelper.getAllData();
// 更新数据
dbHelper.updateData(String.valueOf(result), "Jane Doe", "jane.doe@example.com");
// 删除数据
dbHelper.deleteData(String.valueOf(result));
```
以上就是Android操作SQLite数据库的基本流程。通过SQLiteOpenHelper及其子类,我们可以方便地创建、管理数据库,以及执行各种数据库操作。在实际应用中,还可以使用ORM(对象关系映射)框架如Room,它提供了更高级别的抽象,使得数据库操作更加简洁和安全。