加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

FMDB

发布时间:2020-12-13 00:06:42 所属栏目:百科 来源:网络整理
导读:在iPhone上是采用sqlite进行数据存储是我一种比较习惯性的做法。一般在其他平台也比较习惯用sqlite,比如android。 而iphone上有一些封装好的第三方框架提供使用,更节省了许多时间。如:Sqlitepersistentobjects ,FMDB。今天查找了这个两个框架,感觉FMDB


在iPhone上是采用sqlite进行数据存储是我一种比较习惯性的做法。一般在其他平台也比较习惯用sqlite,比如android。

而iphone上有一些封装好的第三方框架提供使用,更节省了许多时间。如:Sqlitepersistentobjects ,FMDB。今天查找了这个两个框架,感觉FMDB的风格更符合我的使用,其实两者是各有优点的,只是看个人喜好而已。

以下是FMDB的一些基本使用,FMDB框架其实只是一层很薄的封装,主要的类也就两个:FMDatabase和FMResultSet;

其中的FMResultSet对象让我想起了android中sqlite的cursor集合啊。

FMDB的github地址是,https://github.com/ccgus/fmdb。

补充:是导入FMDB之后,还要记得导入iOS的sqlite3Framework,libsqlite3.0.dylib,PS:我发现网上有些转载我的博文的,我很欢迎,毕竟我的一些博文也是总结别人的经验的。但是有个网站,51CTO,我觉得是让人又爱又恨的,它引用的文章从来没有过注明出处。都是佚名。这让人很无语,这是我偶然之间发现我写的东西竟然被标为佚名?

1、首先得实例化一个FMDatabase对象,这跟Sqlitepersistentobjects 派生一个子类进行操作是不同。接着打开一个数据库(如果没有会创建一个数据库)

//paths: ios下Document路径,Document为中ios可读写的文件夹

//创建数据库实例 db 这里说明下:如果路径中不存在”Test.db”的文件,sqlite会自动创建”Test.db”

 
 
  1. NSArray*paths=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES);
  2. NSString*documentDirectory=[pathsobjectAtIndex:0];
  3. //dbPath:数据库路径,在Document中。
  4. NSString*dbPath=[documentDirectorystringByAppendingPathComponent:@"Test.db"];
  5. FMDatabase*db=[FMDatabasedatabaseWithPath:dbPath];
  6. if(![dbopen]){
  7. NSLog(@“Couldnotopendb.”);
  8. return;
  9. }

接下来,我们可以通过这个数据库对象进行操作了。操作主要是update和queries。

首先是创建表。

//创建一个名为User的表,有两个字段分别为string类型的Name,integer类型的 Age

  
  
  • [dbexecuteUpdate:@"CREATETABLEUser(Nametext,Ageinteger)"];
  • 这样我们就有了一张表了。接下我们对表进行操作。插入数据!注意插入的数据使用了通配符,这跟iphone直接使用sqlite借口的绑定变量是一样的,后面的通配符匹配的数据。

    //插入数据使用OC中的类型 text对应为NSString integer对应为NSNumber的整形

      
      
  • [dbexecuteUpdate:@"INSERTINTOUser(Name,Age)VALUES(?,?)",@"老婆",[NSNumbernumberWithInt:20]];
  • 接下来是更新数据。

      
      
  • //更新数据将“老婆”更改为“宝贝”
  • [dbexecuteUpdate:@"UPDATEUserSETName=?WHEREName=?",@"宝贝"];
  • 再接下来,就是删除数据啦。

      
      
  • //删除数据
  • [dbexecuteUpdate:@"DELETEFROMUserWHEREName=?",@"老婆"];
  • update的基本操作就这几个,接下来是queries!

      
      
  • //返回数据库中第一条满足条件的结果
  • NSString*aa=[dbstringForQuery:@"SELECTNameFROMUserWHEREAge=?",@"20"];
  • 这样我们就查询返回了一条数据,那当我们想要查询放返回多条数据怎么办呢?不用愁,之前我就提到了FMDB中的另外一个主要的类,FMResultSet,这是一个结果集!返回多条数据时FMDB会将数据放在这个结果集中,然后我们在对这个结果集进行查询操作!很简单。

      
      
  • FMResultSet*rs=[dbexecuteQuery:@"SELECT*FROMUser"];
  • rs=[dbexecuteQuery:@"SELECT*FROMUserWHEREAge=?",@"20"];
  • while([rsnext]){
  • NSLog(@“%@%@”,[rsstringForColumn:@"Name"],[rsstringForColumn:@"Age"]);
  • }
  • 更多的FMResultSet方法有:

    intForColumn:

    longForColumn:

    longLongIntForColumn:

    boolForColumn:

    doubleForColumn:

    stringForColumn:

    dateForColumn:

    dataForColumn:

    dataNoCopyForColumn:

    UTF8StringForColumnIndex:

    objectForColumn:

    具体查看一下类就行了!好了,对于FMDB的使用就这样,是不是很简单呢,其实这个些封装sqlite的框架都是万变不离其宗的,只要你掌握了sql就行了!

    (编辑:李大同)

    【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

      推荐文章
        热点阅读