Android 平台上操作数据库有以下几种常见方式:
1. SQLite 数据库:
- Android 内置了 SQLite 数据库,可以使用 SQLiteOpenHelper 类来创建、管理数据库。
- 通过 SQLiteDatabase 类执行 SQL 语句进行增删改查操作。
- 示例代码:
```java
// 创建 SQLiteOpenHelper 子类
class MyDbHelper extends SQLiteOpenHelper {
public MyDbHelper(Context context) {
super(context, "my_db.db", null, 1);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT)");
}
// 其他方法...
}
// 使用 MyDbHelper 进行数据库操作
MyDbHelper helper = new MyDbHelper(this);
SQLiteDatabase db = helper.getWritableDatabase();
db.insert("users", null, values);
// 其他增删改查操作...
```
2. Room 持久化库:
- Room 是 Google 推出的一个 ORM (对象关系映射) 库,提供了更高级的数据库操作抽象。
- 通过注解定义数据库实体类和 DAO (数据访问对象) 接口,Room 会自动生成相应的实现。
- 示例代码:
```java
// 定义数据库实体类
@Entity(tableName = "users")
class User {
@PrimaryKey(autoGenerate = true) public int id;
public String name;
}
// 定义 DAO 接口
@Dao
interface UserDao {
@Insert
void insert(User user);
// 其他 CRUD 操作方法...
}
// 使用 Room 进行数据库操作
@Database(entities = {User.class}, version = 1)
abstract class AppDatabase extends RoomDatabase {
abstract UserDao userDao();
}
AppDatabase db = Room.databaseBuilder(
this, AppDatabase.class, "database-name").build();
db.userDao().insert(user);
// 其他 DAO 方法调用...
```
3. Content Provider:
- Content Provider 是 Android 提供的一种跨应用共享数据的机制。
- 可以将自己的数据库暴露给其他应用程序访问和操作。
- 示例代码:
```java
// 定义 Content Provider 子类
public class MyProvider extends ContentProvider {
private SQLiteDatabase db;
@Override
public boolean onCreate() {
db = new MyDbHelper(getContext()).getWritableDatabase();
return true;
}
@Override
public Cursor query(Uri uri, String[] projection, String selection,
String[] selectionArgs, String sortOrder) {
return db.query("users", projection, selection, selectionArgs, null, null, sortOrder);
}
// 其他 CRUD 方法...
}
```
总的来说,Android 平台上操作数据库的主要方式包括原生的 SQLite 数据库、Google 推出的 Room 持久化库,以及 Content Provider 跨应用数据共享机制。根据具体需求选择合适的方式来实现数据存储和管理。