数据库类库FMDB

Gaia ·
更新时间:2024-11-14
· 713 次阅读

  前言   SQLite (http://www.sqlite.org/docs.html) 是一个轻量级的关系数据库。iOS SDK很早支持了SQLite,在使用时,只需要加入 libsqlite3.dylib 依赖以及引入 sqlite3.h 头文件即可。但是,原生的SQLite API在使用上相当不友好,在使用时,非常不便。于是,开源社区中出现了一系列将SQLite API进行封装的库,而FMDB (https://github.com/tryingx/fmdb-master) 则是开源社区中的者。   第一步 引入:sqlite3的类库   第二步 引入:FMDB的类库   主要包括以下几方面   引入文件结束以后可以使用了,使用很简单   第一步 建立一个数据库类

 

1 NSString *docPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0]; // 获取document文件的路径 2 /** 3  *  强调一点是对于数据库的名:我们可以用"" 或用 NULL 4  * 5  *  An empty string (@""). An empty database is created at a temporary location. This database is deleted with the FMDatabase connection is closed. 6  也是说如果我们使用(@""),会创建一个临时数据库,当我们数据库关闭后会自动删除 7  NULL. An in-memory database is created. This database will be destroyed with the FMDatabase connection is closed. 8  在内存中给你创建一个数据库 9  */ 10 NSString *dbPath = [docPath stringByAppendingPathComponent:@"student.sqlite"]; 11 NSLog(@"%@", dbPath); // 拼接字符串 12 FMDatabase *dataBase = [FMDatabase databaseWithPath:dbPath]; 13 [dataBase open]; 14 // 用来判断数据库打开是否成功 15 if (![dataBase open]) { 16     NSLog(@"error"); 17 }

 

  第二步 是执行一些常用的操作   常用操作:   1.创建一个表   NSString *sql = @"CREATE TABLE student(_id Integer primary key, name text, password text, email text)";   BOOL isCreateTable = [dataBase executeStatements:sql];   NSLog(@"%d", isCreateTable );   2.插入数据   NSString *sqlInsert = @"INSERT INTO student (name, password, email) values ('宝贝', '1232', '3343243')";   BOOL isInsertOK = [dataBase executeStatements:sqlInsert];   NSLog(@"%d", isInsertOK );

  3.批量的创建表和插入数据

NSString *sql1 = @"create table bulktest1 (id integer primary key autoincrement, x text);" "create table bulktest2 (id integer primary key autoincrement, y text);" "create table bulktest3 (id integer primary key autoincrement, z text);" "insert into bulktest1 (x) values ('XXX');" "insert into bulktest2 (y) values ('YYY');" "insert into bulktest3 (z) values ('ZZZ');"; [dataBase executeStatements:sql1];

  当然也可以通过数组的方式插入数据   NSArray *stuentInfo = [NSArray arrayWithObjects:@"大傻瓜",@"213",@"123456@qq.com", nil nil];   [dataBase executeUpdate:@"insert into student (name, password, email) values (?,?,?)" withArgumentsInArray:stuentInfo];   4.匹配的方式插入数据   NSString *sqlInsert = @"INSERT INTO student (name, password, email) values (?,?,?)";   BOOL flag = [dataBase executeUpdate:sqlInsert, @"大宝贝", @"123", @"654321@qq.com"];   NSLog(@"%d", flag);   5.1.查询所有数据   FMResultSet *result = [dataBase executeQuery:@"SELECT * FROM student"];   [self showInfo:result];   [result close];

 

- (void)showInfo:(FMResultSet *)result { while ([result next]) { int _id = [result intForColumnIndex:0]; NSLog(@"id : %d", _id); NSString *name = [result stringForColumnIndex:1]; NSLog(@"name : %@", name); NSString *password = [result stringForColumnIndex:2]; NSLog(@"password : %@", password); NSString *email = [result stringForColumnIndex:3]; NSLog(@"email : %@", email); } }

   5.2.查询指定信息   NSString *sqlInsert = @"SELECT * from  student where name = %@";   FMResultSet *result = [dataBase executeQueryWithFormat:sqlInsert, @"宝贝"];   NSLog(@"%@", result);   [self showInfo:result];   6.执行删除操作   NSString *sql = @"delete from student where name = ?";   [dataBase executeUpdate:sql,@"宝贝"];   执行更新操作的步骤和删除操作一样,只不过sql语句不同而已   重要注意事项是:1 使用完数据库后记得关闭   2 查询结果完场后result也得记得关闭



fmdb 数据 数据库

需要 登录 后方可回复, 如果你还没有账号请 注册新账号