[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"$fjZh6CDiJo0JcEAvLRqr3SXM-LnYLujJSTOuoN7T3Tlo":3},{"code":4,"message":5,"data":6},200,"成功",{"id":7,"createdAt":8,"title":9,"content":10,"summary":11,"image":12,"uid":13,"user":14,"categoryId":21,"category":22,"subCategoryId":24,"subCategory":25,"comments":27,"status":17,"reason":12,"notice":12,"visitCount":28,"commentCount":29,"keywords":30},77,"2024-02-02T11:28:06.163Z","iOS中FMDB数据库框架使用示例","iOS中如何方便快捷的使用数据库存储数据，FMDB是一个不错的选择，这里给出具体使用方法。\n\n具体的数据库操作语句如下：\n\n```\n// 建表\n\n// 数据库路径\nNSString *path = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES).firstObject stringByAppendingPathComponent:dbExtention];\n// 建数据库\nFMDatabaseQueue *dbQueue = [FMDatabaseQueue databaseQueueWithPath:path];\n    \n [dbQueue inDatabase:^(FMDatabase *db) {\n        // 建表\n        NSString * sql = [NSString stringWithFormat:@\"CREATE TABLE '%@' ('id' INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL , 'fileName' text, 'timeStamp' INTEGER, 'duration' INTEGER, 'noNum' INTEGER, 'score' text, 'hasPlayed' INTEGER)\", tableName];\n\n        BOOL res = [db executeUpdate:sql];\n        NSLog(@\"建表%@\", (res ? @\"成功\" : @\"失败\"));\n    }];\n\n// 删表    \n    [dbQueue inDatabase:^(FMDatabase *db) {\n        \n        NSString * sql = [NSString stringWithFormat:@\"DROP TABLE '%@'\", tableName];\n        BOOL res = [db executeUpdate:sql];\n        \n        NSLog(@\"删表%@\", (res ? @\"成功\" : @\"失败\"));\n    }];\n\n// 判断表是否存在\n[dbQueue inDatabase:^(FMDatabase *db) {\n        \n        NSString *existsSql = [NSString stringWithFormat:@\"select count(name) as countNum from sqlite_master where type = 'table' and name = '%@'\", tableName];\n        FMResultSet *res = [db executeQuery:existsSql];\n        \n        NSLog(@\"表存在%@\", (res ? @\"成功\" : @\"失败\"));\n    }];\n\n// 插入数据\n[dbQueue inDatabase:^(FMDatabase *db) {\n        \n        NSString *fileName = record.fileName;\n        NSInteger timeStamp = record.timeStamp;\n        NSInteger duration = record.duration;\n        NSInteger noNum = record.noNum;\n        NSString *score = record.score;\n        NSInteger hasPlayed = record.hasPlayed;\n        \n        NSString * sql = [NSString stringWithFormat:@\"INSERT INTO '%@' ('fileName', 'timeStamp', 'duration', 'noNum', 'score', 'hasPlayed') VALUES ('%@', '%ld', '%ld', '%ld', '%@', '%ld')\", tableName, fileName, timeStamp, duration, noNum, score, hasPlayed];\n        \n        BOOL res = [db executeUpdate:sql];\n        NSLog(@\"插入%@\", (res ? @\"成功\" : @\"失败\"));\n        \n        if(callBack) {\n            \n            callBack(res);\n        }\n    }];\n\n// 更新数据\nNSString * sql1 = [NSString stringWithFormat:@\"update '%@' set 'noNum' = '%ld' where timeStamp = %ld\", tableName, noNum, timeStamp];\nNSString * sql2 = [NSString stringWithFormat:@\"update '%@' set 'score' = '%@' where timeStamp = %ld\", tableName, score, timeStamp];\nNSString * sql3 = [NSString stringWithFormat:@\"update '%@' set 'hasPlayed' = '%ld' where timeStamp = %ld\", tableName, hasPlayed, timeStamp];\n        \n        BOOL res1 = [db executeUpdate:sql1];\n        BOOL res2 = [db executeUpdate:sql2];\n        BOOL res3 = [db executeUpdate:sql3];\n        \n        NSLog(@\"插入%@\", ((res1 && res2 && res3) ? @\"成功\" : @\"失败\"));\n\n// 查询\nNSMutableArray *recordArr = [NSMutableArray array];\nNSString * sql = [NSString stringWithFormat:@\"SELECT * FROM '%@' ORDER BY timeStamp ASC\", tableName];\nFMResultSet * rs = [db executeQuery:sql];\n\n        while ([rs next]) {\n            \n            NSString *filePath = [rs stringForColumn:@\"fileName\"];\n            NSInteger timeStamp = [rs longForColumn:@\"timeStamp\"];\n            NSInteger duration = [rs intForColumn:@\"duration\"];\n            NSInteger noNum = [rs intForColumn:@\"noNum\"];\n            NSString *score = [rs stringForColumn:@\"score\"];\n            NSInteger hasPlayed = [rs intForColumn:@\"hasPlayed\"];\n            \n            CYUserRecord *record = [[CYUserRecord alloc] init];\n            record.fileName = filePath;\n            record.timeStamp = timeStamp;\n            record.duration = duration;\n            record.noNum = noNum;\n            record.score = score;\n            record.hasPlayed = hasPlayed;\n            \n            [recordArr addObject:record];\n        }\n\nNSString * sql1 = [NSString stringWithFormat:@\"SELECT * FROM '%@' WHERE patched = 0 ORDER BY timeStamp ASC\", tableName];\n\n删除某一条数据：\nNSString * sqlDelete = [NSString stringWithFormat:@\"DELETE FROM '%@' WHERE fileName = '%@'\", tableName, fileName];\n[db executeUpdate:sqlDelete];\n\n从一个表直接往另一个表添加数据：\ninsert into table1 select  * from table2\n```","iOS中如何方便快捷的使用数据库存储数据，FMDB是一个不错的选择，这里给出具体使用方法。","",499668042977349,{"phone":15,"userId":13,"nickName":16,"vipType":17,"avatar":18,"sign":19,"createdAt":20},"13121171998","全栈老韩",1,"https://image.xinwei.ltd/images/IMG_5430.JPG","全栈工程师，擅长iOS App开发、前端（vue、react、nuxt、小程序&Taro）开发、Flutter、React Native、后端（midwayjs、golang、express、koa）开发、docker容器、seo优化等。","2024-01-01T16:14:30.305Z",2,{"id":21,"name":23},"IT技术",3,{"id":24,"name":26,"parentId":21},"iOS",[],265,0,"ios,ios fmdb,ios sqlite,ios mysql,ios数据库,数据库"]