DbCreateHelper 是一个用于简化数据库创建和初始化过程的工具类,它封装了常见的数据库操作,使开发者能够更便捷地创建、配置和管理数据库。
1.主要功能
数据库创建与初始化
表结构创建与管理
数据库版本控制
数据迁移支持
数据库连接管理
基本用法
1. 初始化 DbCreateHelper
java
// 使用默认配置初始化
DbCreateHelper dbHelper = new DbCreateHelper(context, "my_database.db", 1);
// 或使用自定义配置
DbConfig config = new DbConfig.Builder()
.setDatabaseName("custom_db.db")
.setVersion(2)
.setTables(Arrays.asList(UserTable.class, ProductTable.class))
.build();
DbCreateHelper dbHelper = new DbCreateHelper(context, config);
2. 创建数据库
java
SQLiteDatabase database = dbHelper.getWritableDatabase();
3. 定义数据表结构
创建一个类来表示表结构:
java
@Table(name = "users")
public class UserTable {
@Column(name = "id", type = "INTEGER", isPrimaryKey = true)
public long id;
@Column(name = "name", type = "TEXT")
public String name;
@Column(name = "age", type = "INTEGER")
public int age;
@Column(name = "created_at", type = "TEXT")
public String createdAt;
}
4. 数据库升级
当需要修改数据库结构时:
java
public class MyDbUpgrader implements DbUpgrader {
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
if (oldVersion < 2) {
// 版本1到版本2的迁移逻辑
db.execSQL("ALTER TABLE users ADD COLUMN email TEXT");
}
if (oldVersion < 3) {
// 版本2到版本3的迁移逻辑
db.execSQL("CREATE TABLE orders (...)");
}
}
}
// 在配置中设置升级器
config.setUpgrader(new MyDbUpgrader());
高级功能
1. 批量操作
java
dbHelper.batchOperation(database -> {
// 在此执行多个数据库操作
database.insert("users", null, userValues1);
database.insert("users", null, userValues2);
database.update("products", productValues, whereClause, whereArgs);
});
2. 事务支持
java
dbHelper.transaction(database -> {
// 事务操作
database.delete("temp_data", null, null);
database.insert("main_data", null, values);
return true; // 返回true提交事务,false回滚
});
3. 数据库导出与导入
java
// 导出数据库到文件
dbHelper.exportDatabase("/sdcard/backup/my_database_backup.db");
// 从文件导入数据库
dbHelper.importDatabase("/sdcard/backup/my_database_backup.db");
最佳实践
版本管理:每次数据库结构变更时递增版本号
迁移测试:确保升级脚本在不同版本间能正确工作
错误处理:妥善处理数据库操作可能抛出的异常
资源释放:在使用完毕后关闭数据库连接
性能优化:对大量数据操作使用事务
常见问题
Q: 如何添加新表?
A: 定义新的表结构类并在配置中添加,然后增加数据库版本号。
Q: 数据库升级失败怎么办?
A: 实现回滚逻辑或在onUpgrade中处理异常,可以考虑备份恢复策略。
Q: 如何查询数据库是否已创建?
A: 使用dbHelper.isDatabaseCreated()方法检查。
注意事项
1.主线程上的长时间数据库操作可能导致ANR
2.确保在所有数据库操作完成后关闭连接
3.生产环境中应考虑加密敏感数据
通过合理使用DbCreateHelper,可以大大简化Android应用中的数据库管理任务,提高开发效率并减少错误。