数据库 Database
包含 CJFMDBFileManager 和 CommonSqliteUtil,您可以选择其中一种来操作数据库。
附录:编辑 CommonSqliteUtil.podspec 时,不要忘了添加 s.libraries = "sqlite3"
前言
增加 CJFMDBFileManager 库的目的是:在操作数据时,我们每次都必须先打开对应的数据库才能对其进行增删改查等操作。为了避免每次操作都要重复打开和关闭数据库,这里专门写了一个用于操作数据库的 Manager 文件类。该 CJFMDBFileManager 类不仅可以方便地实现增删改查等操作,还可以方便地操作数据库文件。
CJFile/CJFileModel
文件模型的基类
CJFile/CJFMDBFileManager
这个库不仅可以方便地操作数据库文件中的内容(通常是增删改查),还可以方便地操作数据库文件(如创建、删除、重建)。 易被忽视的需求:在每次登录(例如切换账号)时,我们要操作的数据库可能因为用户的变化而变化。因此,我们必须在每次登录时重新设置当前库要操作的数据是哪个数据库。由于我们已经将每次打开和关闭数据库的操作集成到了 CJFMDBFileManager 中,所以我们每次登录时必须通过 CJFMDBFileManager 的 createDatabaseInFileRelativePath...
方法来重新设置要操作的数据库,该方法中的 CJFileExistActionType
值需要根据实际情况填写。
附录:当您需要管理多个不同类型的数据库时,您可以使用不同的 CJFMDBFileManager 子类来管理不同的数据库。当然,如果您需要在现有数据库中通过添加新表来扩展也是可以的。
示例
0、创建数据库
NSString *directoryRelativePath = [CJFileManager getLocalDirectoryPathType:CJLocalPathTypeRelative
bySubDirectoryPath:@"DB/Account"
inSearchPathDirectory:NSDocumentDirectory
createIfNoExist:YES];
NSString *fileRelativePath = [directoryRelativePath stringByAppendingPathComponent:databaseName];
NSArray *createTableSqls = [self allCreateTableSqls];
[[FirstFMDBFileManager sharedInstance] createDatabaseInFileRelativePath:fileRelativePath
byCreateTableSqls:createTableSqls
ifExistDoAction:CJFileExistActionRerecertIt];
1、插入记录
+ (BOOL)insertAccountInfos:(NSArray<AccountInfo *> *)infos {
NSMutableArray *sqls = [[NSMutableArray alloc] init];
for (AccountInfo *info in infos) {
NSString *sql = [AccountTableSQL sqlForInsertInfo:info];
[sqls addObject:sql];
}
return [[FirstFMDBFileManager sharedInstance] cjExecuteUpdate:sqls useTransaction:YES];
}
2、删除
+ (BOOL)removeAccountInfoWhereName:(NSString *)name {
NSString *sql = [AccountTableSQL sqlForRemoveInfoWhereName:name];
return [[FirstFMDBFileManager sharedInstance] cjExecuteUpdate:@[sql]];
}
3、修改
+ (BOOL)updateAccountInfoExceptUID:(AccountInfo *)info whereUID:(NSString *)uid {
NSString *sql = [AccountTableSQL sqlForUpdateInfoExceptUID:info whereUID:uid];
return [[FirstFMDBFileManager sharedInstance] cjExecuteUpdate:@[sql]];
}
4、查找querey
+ (NSDictionary *)selectAccountInfoWhereUID:(NSString *)uid {
NSString *sql = [AccountTableSQL sqlForSelectInfoWhereUID:uid];
NSArray *result = [[FirstFMDBFileManager sharedInstance] query:sql];
return result.count > 0 ? result[0] : nil;
}
更多使用参考测试案例。
注意
不支持模型集合,例如 NSArray<User>* users;
作者
许可协议
MIT