CJFile 0.0.9

CJFile 0.0.9

测试已测试
语言语言 Obj-CObjective C
许可 MIT
发布最后发布2018 年 6 月

Li Chaoqian 维护。



CJFile 0.0.9

  • 作者
  • dvlproad

数据库 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;

作者

李xx

许可协议

MIT