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

来源:互联网 发布:java细粒度数据级权限 编辑:程序博客网 时间:2024/06/06 04:29

之前也用过原生的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文件夹下。

[cpp] view plaincopy在CODE上查看代码片派生到我的代码片
  1. NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);  
  2. NSString *documentDirectory = [paths objectAtIndex:0];  
  3. NSLog(@"%@",documentDirectory);  
  4. NSString *dbPath = [documentDirectory stringByAppendingPathComponent:@"MyDataBase.db"];  
  5. FMDatabase *db = [FMDatabase databaseWithPath:dbPath] ;  
  6. if (![db open]) {  
  7.     NSLog(@"打开数据库失败");  
  8.     assert(NO);  
  9. }  

dbPath就是数据库的路径了大笑,这里我们给数据库取名为MyDataBase.db,然后发送databaseWithPath消息来创建一个数据库。

如上图,我们成功在沙盒的Document文件夹下创建了MyDataBase.db数据库。

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


2)创建表

[cpp] view plaincopy在CODE上查看代码片派生到我的代码片
  1. [db executeUpdate:@"CREATE TABLE Person (Name text,Age integer)"];  

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


3)增

[cpp] view plaincopy在CODE上查看代码片派生到我的代码片
  1. [db executeUpdate:@"INSERT INTO Person (Name,Age) VALUES (?,?)",@"Atany",[NSNumber numberWithInt:22]];  
  2. [db executeUpdate:@"INSERT INTO Person (Name,Age) VALUES (?,?)",@"Mary",[NSNumber numberWithInt:20]];  
  3. [db executeUpdate:@"INSERT INTO Person (Name,Age) VALUES (?,?)",@"Peter",[NSNumber numberWithInt:38]];  
  4. [db executeUpdate:@"INSERT INTO Person (Name,Age) VALUES (?,?)",@"Henry",[NSNumber numberWithInt:15]];  

增加了四条数据,同样是使用executeUpdate方法+sql语句来实现的。

我们使用SQLiteManager工具来查看结果,添加已经成功了。

4)删

[cpp] view plaincopy在CODE上查看代码片派生到我的代码片
  1. [db executeUpdate:@"DELETE FROM Person WHERE Name = ?",@"Mary"];  

结果:


5)改

[cpp] view plaincopy在CODE上查看代码片派生到我的代码片
  1. [db executeUpdate:@"UPDATE Person SET Age = ? WHERE Name = ? ",[NSNumber numberWithInt:100],@"Henry"];  
 结果:



6)查

[cpp] view plaincopy在CODE上查看代码片派生到我的代码片
  1. NSLog(@"-----------------------------------");  
  2.     NSInteger i = 1;  
  3.     FMResultSet *rs = [db executeQuery:@"SELECT * FROM Person"];  
  4.     while ([rs next]) {  
  5.         NSString *name = [rs stringForColumn:@"Name"];  
  6.         NSString *age = [rs stringForColumn:@"Age"];  
  7.         NSLog(@"第[%d]条数据",i++);  
  8.         NSLog(@"Name:%@",name);  
  9.         NSLog(@"age:%@",age);  
  10. }  
  11. 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~得意


原blog地址:http://blog.csdn.net/yang8456211/article/details/15811375

0 0
原创粉丝点击