当前位置: 首页 > 工具软件 > FMDB > 使用案例 >

[iOS开发]FMDB基本使用

田博易
2023-12-01

FMDB:

FMDB是一款简洁、易用的封装库。因此,在这里推荐使用第三方框架FMDB,它是对libsqlite3框架的封装,用起来的步骤与SQLite使用类似,并且它对于多线程的并发操作进行了处理,所以是线程安全的。

优点:

对多线程的并发操作进行处理,所以是线程安全的;
以OC的方式封装了SQLite的C语言API,使用起来更加的方便;
FMDB是轻量级的框架,使用灵活。

缺点:

因为它是OC的语言封装的,只能在ios开发的时候使用,所以在实现跨平台操作的时候存在局限性。

使用:

打开数据库:

NSArray *documents=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsPath = [documents firstObject];
NSString *dbPath = [documentsPath stringByAppendingPathComponent:@"test.db"];
NSLog(@"%@", dbPath);
_dataBase = [FMDatabase databaseWithPath:dbPath];
if ([_dataBase open]) {
    NSLog(@"打开成功");
} else {
    NSLog(@"打开失败");
}

关闭数据库:

[_dataBase close];

创建表:

NSString *createTableSql = @"create table if not exists Person(id integer primary key autoincrement,name text,age integer)";
BOOL success = [_dataBase executeUpdate:createTableSql];
if (success) {
    NSLog(@"创建表成功");
} else {
    NSLog(@"创建表失败");
}

插入数据:

- (void)insert {
    if ([_dataBase open]) {
        NSString *insertSQL = @"insert into Person (name,age) values (?,?)";
        BOOL success = [_dataBase executeUpdate:insertSQL,@"王五",@19];
        if (success) {
            NSLog(@"插入成功");
        } else {
            NSLog(@"插入失败");
        }
        [_dataBase close];
    }
}

修改数据:

- (void)update {
    if ([_dataBase open]) {
        NSString *updateSQL = @"update Person set name=?,age=? where id=?";
        BOOL success = [_dataBase executeUpdate:updateSQL, @"王五", @20, @1];
        if (success) {
            NSLog(@"更新成功");
        } else {
            NSLog(@"更新失败");
        }
        [_dataBase close];
    }
}

删除数据:

- (void)delete {
    if ([_dataBase open]) {
        NSString *deleteSQL = @"delete from Person where age=?";
        BOOL success = [_dataBase executeUpdate:deleteSQL, @20];
        if (success) {
            NSLog(@"删除成功");
        } else {
            NSLog(@"删除失败");
        }
        [_dataBase close];
    }
}
//若想删除全部数据:
- (void)deleteAll {
    if ([_dataBase open]) {
        NSString *deleteAllSQL = @"delete from Person where 1";
        BOOL success = [_dataBase executeUpdate:deleteAllSQL];
        if (success) {
            NSLog(@"删除成功");
        } else {
            NSLog(@"删除失败");
        }
        [_dataBase close];
    }
}

查询数据:

- (void)select {
	if ([_dataBase open]) {
    	NSString *selectSQL = @"select * from Person";
    	//查询返回的为一个结果集
    	FMResultSet *set = [_dataBase executeQuery:selectSQL, @0];
    	//需要对结果集进行遍历操作
   		while ([set next]) {
    		//获取下一条记录,如果没有下一条,返回NO,跳出循环
    		//取数据
        	NSString *name = [set stringForColumn:@"name"];
        	NSInteger age = [set intForColumn:@"age"];
       	 	NSInteger ID = [set intForColumn:@"id"];
        	NSLog(@"%@, %ld, ID=%ld", name, age, ID);
    	}
    	[_dataBase close];
    }
}

其他:

FMDB存储图片类型的数据(二进制)

 类似资料: