Skip to content

706412584/sqlcipherManager

Repository files navigation

一行代码配置,即可为你的 Android App 提供具备企业级安全(SQLCipher)、自动表结构管理、无缝多线程支持的数据库能力。

Table of Contents

高效、安全、强扩展性的 Android 数据库解决方案。
开箱即用,支持 SQLCipher 加密,适用于游戏数据存储、本地缓存、敏感信息保护等场景。

作者:QQ706412584-橙子小神


📚 开发文档

详细使用说明请参考:游戏核心数据库框架开发文档
常见问题几乎都能在文档中找到答案。


🚀 快速安装

Gradle 集成:
在项目 build.gradle 中添加依赖:

dependencies {
    implementation 'com.github.706412584:sqlcipherManager:v1.0.6'
    implementation 'net.zetetic:android-database-sqlcipher:4.5.0'
}

在项目 build.gradle OR setting.gradle 中添加仓库:

repositories {
    maven{url 'https://jitpack.io'}
}

手动集成:
下载源码后,将 core 包复制到您的 Android 项目中。


🌟 核心特性

  • 多数据库支持:线程安全连接池,可同时管理多个数据库实例。
  • 自动连接管理:DBCipherManager 自动维护数据库连接,支持线程安全的连接池,无需手动 open/close,避免因连接泄漏或资源冲突导致的崩溃和性能问题,极大简化多线程和高并发场景下的数据库访问。
  • 自动表结构管理:支持表结构的自动检测和动态维护。表结构变更时会自动校验字段并补齐缺失字段(如新增字段、类型变更等),无需手动升级 SQL,大幅降低维护和扩展成本,适合频繁迭代的业务和游戏数据模型。
  • SQLCipher 加密:内置 PBKDF2 密钥派生,支持安全密码管理。
  • 动态表结构管理:随时添加/修改字段,检查表结构。
  • 强大数据操作:支持事务、批量操作、数据导出为 JSON。
  • 自动数据库优化:WAL 模式、缓存调整、VACUUM、健康检查。
  • 丰富日志系统:多级别日志和自定义回调。

详细优点说明

自动表结构管理优势

  • 表结构自适应:初始化或连接时自动检测表结构,缺失字段自动补齐,不影响已有数据。
  • 动态扩展:支持运行时动态添加字段和批量字段管理,适合游戏或业务功能快速扩展。
  • 升级无忧:无需编写复杂的升级 SQL,自动处理表结构变更,降低版本迁移风险。
  • 兼容性强:支持外键、主键、默认值等常见约束,自动处理 SQLite 特性。

自动连接管理优势

  • 线程安全:所有数据库连接由连接池自动管理,适合多线程并发访问场景。
  • 资源优化:自动释放和复用连接,避免资源泄漏和性能瓶颈。
  • 开发无感知:调用数据操作接口时自动管理连接,无需开发者关心 open/close,减少易错点。
  • 高性能:支持批量事务、异步执行,适合大数据量操作和高频读写需求。

🔧 主要组件 & 用法示例

1. DatabaseConfig - 数据库配置

DatabaseConfig config = new DatabaseConfig.Builder()
    .setDatabaseName("game.db")
    .setPassword("secure_password")
    .setVersion(1)
    .setAutoOptimize(true)
    .addTableSchema("user", "id INTEGER PRIMARY KEY, name TEXT, level INTEGER")
    .build();

2. DBCipherManager - 数据库管理器

DBCipherManager dbManager = DBCipherManager.getInstance(context, config);

if (dbManager.testConnection()) {
    Log.i("Database", "数据库连接成功");
}

3. TableManager - 表结构管理

TableManager tableManager = dbManager.getTableManager();
tableManager.createTableIfNotExists("user", "id INTEGER PRIMARY KEY, name TEXT");

4. 基础数据操作

插入数据:

ContentValues values = new ContentValues();
values.put("name", "玩家1");
values.put("level", 1);
long id = dbManager.insertData("user", values);

查询数据:

List<ContentValues> users = dbManager.query("user", null, null, null, null, null, "level DESC");

更新数据:

ContentValues updateValues = new ContentValues();
updateValues.put("level", 2);
int affected = dbManager.updateDataById("user", 1, updateValues);

删除数据:

int deleted = dbManager.deleteData("user", "level < ?", new String[]{"10"});

事务操作:

dbManager.executeTransaction(db -> {
    dbManager.insertData("table1", values1);
    dbManager.updateData("table2", values2, where, args);
});

🏗️ 项目架构

game.core/
├── DatabaseConfig        # 数据库配置(建造者模式)
├── DBCipherManager       # 数据库核心管理器
├── DBCipherHelper        # 数据库帮助类(SQLiteOpenHelper)
├── TableManager          # 表结构管理器
├── SqlUtilManager        # SQL工具/数据导出
└── DatabaseOptimizer     # 数据库优化器

⚡ 高级功能

  • 动态添加字段
  • 批量字段管理
  • 数据库健康检查与优化
  • 数据 JSON 导出/导入
  • 安全加密/密钥派生

🔒 安全特性

  • SQLCipher 数据库加密
  • PBKDF2 密钥派生算法
  • 安全密码管理(推荐使用 char[] 类型)
  • 自动清理敏感数据

📝 日志系统

支持多级别日志输出,可自定义日志回调。

dbManager.setLogLevel(DBCipherManager.LogLevel.DEBUG);

DBCipherManager.setLogCallback(new DBCipherManager.LogCallback() {
    @Override
    public void onLog(DBCipherManager.LogLevel level, String tag, String message, Throwable throwable) {
        // 自定义日志处理
    }
});

日志级别:VERBOSE, DEBUG, INFO, WARN, ERROR, NONE


🧩 扩展生态

工具类 功能描述
SqlUtilManager JSON与ContentValues转换、数据导出
TableManager 动态表结构管理、字段操作
DatabaseOptimizer 性能优化、健康检查

🎮 推荐使用场景

  • 游戏玩家数据、进度、装备等存储
  • 应用本地缓存、离线数据管理
  • 敏感数据加密存储
  • 极速多数据库应用

📄 DBCipherManager类-核心管理器

查看详细用法

📄 TableManager类-表格管理插件

查看详细用法

📄 SqlUtilManager类-工具类插件

查看详细用法

📄 DatabaseConfig类-数据库连接配置

查看详细用法

📄 DBCipherHelper类-数据库帮助

查看详细用法

📄 PropertyManager类-属性操作管理器(支持数值安全操作以及常见数据库操作)

查看详细用法


下载 apkdemo(Android Demo 应用)

你可以通过以下链接下载本项目的 Android 演示 APK:

点击下载 apkdemo.apk

❓ 有问题怎么办?

如有疑问或发现 Bug,欢迎提交 Issue!
喜欢请点个 Star ⭐


📄 许可协议

Apache 2.0
自由修改、商用,尊重原作者著作权。


由橙子游戏开发团队荣誉出品并持续维护。

如需更多帮助,请查阅开发文档或联系作者 QQ706412584。


About

SQLCipherManager  - 更安全、更智能的 Android数据库加密解决方案

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages