您的位置:首页 > 数据库

iOS 数据库开源框架FMDB的快速入门与使用

2013-11-13 12:56 603 查看
之前也用过原生的Sql,但是确实FMDB更加的轻便好用,现在,就用最简单的语言记录一下FMDB的用法。



准备

1)首先下载FMDB开源框架,https://github.com/ccgus/fmdb

2)解压得到fmdb-master文件夹,我们只需要拷贝src文件夹的文件到项目就可以了。



3)删除src文件夹中fmdb.m这个文件,不要担心,这只是一些例子,如果不删会报duplicate symbol_main错误。

4)添加库

添加libsqlite3,因为FMDB也是基于Sqlite的。







基本语法

1)创建数据库

第一步就是定义数据库存放的位置,这里存到应用沙盒的document文件夹下。

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentDirectory = [paths objectAtIndex:0];
NSLog(@"%@",documentDirectory);
NSString *dbPath = [documentDirectory stringByAppendingPathComponent:@"MyDataBase.db"];
FMDatabase *db = [FMDatabase databaseWithPath:dbPath] ;
if (![db open]) {
NSLog(@"打开数据库失败");
assert(NO);
}


dbPath就是数据库的路径了

,这里我们给数据库取名为MyDataBase.db,然后发送databaseWithPath消息来创建一个数据库。



如上图,我们成功在沙盒的Document文件夹下创建了MyDataBase.db数据库。
【注】:很多新手不知道怎么定位到沙盒下的某个文件夹,我的方法是可以先把需要的文件夹路径用NSLog打出来(因为运行的时候会产生一个UUID码,为程序命名,我们可不知道这个名字是什么。。)。上面我打出了documentDirectory路径,然后点击Finder,菜单栏选择“前往”,然后“前往文件夹。。”,把之前的路径复进去就OK了。

2)创建表

[db executeUpdate:@"CREATE TABLE Person (Name text,Age integer)"];


executeUpdate后面跟sql语句就行,sql基本语句忘了的话,查查就知道了。

3)增

[db executeUpdate:@"INSERT INTO Person (Name,Age) VALUES (?,?)",@"Atany",[NSNumber numberWithInt:22]];
[db executeUpdate:@"INSERT INTO Person (Name,Age) VALUES (?,?)",@"Mary",[NSNumber numberWithInt:20]];
[db executeUpdate:@"INSERT INTO Person (Name,Age) VALUES (?,?)",@"Peter",[NSNumber numberWithInt:38]];
[db executeUpdate:@"INSERT INTO Person (Name,Age) VALUES (?,?)",@"Henry",[NSNumber numberWithInt:15]];


增加了四条数据,同样是使用executeUpdate方法+sql语句来实现的。
我们使用SQLiteManager工具来查看结果,添加已经成功了。



4)删

[db executeUpdate:@"DELETE FROM Person WHERE Name = ?",@"Mary"];


结果:



5)改

[db executeUpdate:@"UPDATE Person SET Age = ? WHERE Name = ? ",[NSNumber numberWithInt:100],@"Henry"];
结果:



6)查
NSLog(@"-----------------------------------");
NSInteger i = 1;
FMResultSet *rs = [db executeQuery:@"SELECT * FROM Person"];
while ([rs next]) {
NSString *name = [rs stringForColumn:@"Name"];
NSString *age = [rs stringForColumn:@"Age"];
NSLog(@"第[%d]条数据",i++);
NSLog(@"Name:%@",name);
NSLog(@"age:%@",age);
}
NSLog(@"-----------------------------------");


先用executeQuery得到结果集,然后通过next消息遍历结果集,使用stringForColumn方法取对应的值。
结果:
2013-11-13 11:19:24.930testFMDB[6875:c07] -----------------------------------
2013-11-13 11:19:24.931testFMDB[6875:c07]第[1]条数据
2013-11-13 11:19:24.931 testFMDB[6875:c07] Name:Atany
2013-11-13 11:19:24.931 testFMDB[6875:c07] age:22
2013-11-13 11:19:24.931 testFMDB[6875:c07]第[2]条数据
2013-11-13 11:19:24.932 testFMDB[6875:c07] Name:Peter
2013-11-13 11:19:24.932 testFMDB[6875:c07] age:38
2013-11-13 11:19:24.932 testFMDB[6875:c07]第[3]条数据
2013-11-13 11:19:24.932 testFMDB[6875:c07] Name:Henry

2013-11-13 11:19:24.932 testFMDB[6875:c07] age:100

FMDB的使用确实挺方便的,如果进行开发的话,我比较喜欢使用FMDB~


杨光(atany)原创,转载请注明博主与博文链接,未经博主允许,禁止任何商业用途。

博文地址:/article/7601647.html

博客地址:http://blog.csdn.net/yang8456211
本文遵循“署名-非商业用途-保持一致”创作公用协议
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: