1.创建数据库
NSString *filePath = [[NSSearchPathForDirectoriesInDomains(NSLibraryDirectory,NSUserDomainMask, YES)firstObject]stringByAppendingPathComponent:@"db.sqlite"];
FMDatabase *db = [FMDatabase databaseWithPath:filePath];
2.创建表
if ([db open]) {
BOOL result = [db executeUpdate:@"CREATE TABLE IF NOT EXISTS Person (pid integer PRIMARY KEY AUTOINCREMENT,name TEXT NOT NULL,age integer NOT NULL)"];
if (result) {
NSLog(@"table create success");
}else{
NSLog(@"table create fail");
}
}else{
NSLog(@"fail");
}
3.增
-(void)insertWithdb:(FMDatabase *)db table:(NSString *)table
{
NSString *name = [NSString stringWithFormat:@"jack-%d", arc4random_uniform(100)];
NSString *sql = [NSString stringWithFormat:@"INSERT INTO %@ (name, age) VALUES ('%@', %d);",table,name,arc4random_uniform(40)];
BOOL result = [db executeUpdate:sql];
if (result) {
NSLog(@"table insert success");
}else{
NSLog(@"table insert fail");
}
[db close];
}
4.删
-(void)deleteWithdb:(FMDatabase *)db table:(NSString *)table
{
NSString *sql = [NSString stringWithFormat:@"DELETE FROM %@ WHERE pid = 1",table];
BOOL result = [db executeUpdate:sql];
if (result) {
NSLog(@"table delete success");
}else{
NSLog(@"table delete fail");
}
[db close];
}
5.改
-(void)updateWithdb:(FMDatabase *)db table:(NSString *)table
{
NSString *sql = [NSString stringWithFormat:@"UPDATE %@ SET name = 'ZHANG' WHERE pid = 3",table];
BOOL result = [db executeUpdate:sql];
if (result) {
NSLog(@"table update success");
}else{
NSLog(@"table update fail");
}
[db close];
}
6.查
-(void)queryWithdb:(FMDatabase *)db table:(NSString *)table
{
NSString *sql = [NSString stringWithFormat:@"SELECT * FROM %@",table];
FMResultSet *set = [db executeQuery:sql];
while ([set next]) {
NSLog(@"%@ %@",[set stringForColumn:@"name"],[set stringForColumn:@"age"]);
}
[db close];
}
7.FMDatabaseQueue
//1.事物队列
FMDatabaseQueue *dbQueue = [FMDatabaseQueue databaseQueueWithPath:filePath];
[dbQueue inTransaction:^(FMDatabase * _Nonnull db, BOOL * _Nonnull rollback) {
for (int i = 0; i<100; i++) {
[db open];
[self insertWithdb:db table:@"Person"];
}
}];
//2.非事物队列
[dbQueue inDatabase:^(FMDatabase * _Nonnull db) {
NSLog(@"%@",db);
for (int i = 0; i<100; i++) {
[db open];
[self insertWithdb:db table:@"Person"];
}
}];