sqlite第三方类库fmdb的使用

FMDB是ios平台下解析sqlite的第三方数据库管理框架,使用非常方便,而且提供了多线程安全的数据库操作,相比coredata来说更加灵活和轻量级。

fmdb主要有三个类别:

fmdatabase:用来执行sql语句;

fmresultset:用来使用fmdatabase执行查询后的结果集合

fmdatabasequeue:用来在多线程中查询和更新数据,它是线程安全的。

fmdb的使用

1.在新建的项目中,导入libsqlite3的动态数据库:

注:(在Building Phases中的Link Binary WithLibraries中添加)

2.加入第三方框架fmdb中的这些主要文件:

  

3.在代码中建立一个数据库,并指定文件路径:

 1     //指定沙盒路径
 2     NSString *path = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
 3     //在指定沙盒路径下添加sqlite文件
 4     NSString *filepath = [path stringByAppendingPathComponent:@"moxue.sqlite"];
 5     //在指定path路径下创建数据库
 6     FMDatabase *db = [FMDatabase databaseWithPath:filepath];
 7     //查看是否打开成功
 8     if (![db open]) {
 9         return;
10     }else{
11         NSLog(@"打开成功");
12     }

4.在代码中添加列表和列表属性:

1 //在数据库中创建一个列表,并添加列表属性
2     BOOL result = [db executeUpdate:@"CREATE TABLE IF NOT EXISTS data(id INTEGER PRIMARY KEY AUTOINCREMENT,Title TEXT,date TEXT,Context TEXT,Url TEXT)"];
3     if (result) {
4         NSLog(@"创建data表成功");
5     }else{
6         NSLog(@"创建data表失败");
7     }

5.在列表中插入数据:

1   //插入数据
2     BOOL res = [db executeUpdate:@"INSERT INTO data (Title,date,Context,Url) VALUES(?,?,?,?)",@"墨雪",@"2015-10-11",@"我的表格",@"我的Url"];
3     BOOL res1 = [db executeUpdate:@"INSERT INTO data (Title,date,Context,Url) VALUES(?,?,?,?)",@"刘庆",@"2015-10-10",@"刘庆的表格",@"刘庆的Url"];
4     if (res1) {
5         NSLog(@"插入data成功");
6     }else{
7         NSLog(@"插入data表失败");
8     }

6.在类表中删除数据或者列表:

1 BOOL dele = [db executeUpdate:@"DROP TABLE IF EXISTS data"];
2     BOOL dele1 = [db executeUpdate:@"delete from data where Title = ‘墨雪‘"];
3     if (dele) {
4         NSLog(@"删除数据成功");
5     }else{
6         NSLog(@"删除数据失败");
7     }

7.在列表中修改数据:

1  //修改数据
2     BOOL UPDATE = [db executeUpdate:@"update data SET Title = ‘哈哈‘ WHERE id = 1" ];
3     if (UPDATE) {
4         NSLog(@"修改成功");
5     }else{
6         NSLog(@"修改失败");
7     }

8.在列表中查询数据:

1  //查询数据
2     FMResultSet *RS = [db executeQuery:@"SELECT Title from data"];
3     while ([RS next]) {
4         NSString *name = [RS stringForColumn:@"Title"];
5         NSLog(@"%@",name);
6     }

9. 如果应用中使用了多线程操作数据库,那么就需要使用FMDatabaseQueue来保证线程安全了。 应用中不可在多个线程中共同使用一个FMDatabase对象操作数据库,这样会引起数据库数据混乱。 为了多线程操作数据库安全,FMDB使用了FMDatabaseQueue,使用FMDatabaseQueue很简单,首先用一个数据库文件地址来初使化FMDatabaseQueue,然后就可以将一个闭包(block)传入inDatabase方法中。 在闭包中操作数据库,而不直接参与FMDatabase的管理。

 1  FMDatabaseQueue *queue = [FMDatabaseQueue databaseQueueWithPath:filepath];
 2     dispatch_queue_t myq1 = dispatch_queue_create("myqueue1", nil);
 3     dispatch_async(myq1, ^{
 4        [queue inDatabase:^(FMDatabase *db) {
 5            FMResultSet *RS = [db executeQuery:@"SELECT Title from data"];
 6            while ([RS next]) {
 7                NSString *name = [RS stringForColumn:@"Title"];
 8                NSLog(@"%@",name);
 9            }
10
11        }];
12     });

10.关闭数据库

1 [db close];

11.另外 FMResultSet 还提供了很多方法来获得所需的格式的值:

intForColumn:

longForColumn:

longLongIntForColumn:

boolForColumn:

doubleForColumn:

stringForColumn:

dataForColumn:

dataNoCopyForColumn:

UTF8StringForColumnIndex:

objectForColumn:

时间: 2024-12-29 09:07:37

sqlite第三方类库fmdb的使用的相关文章

sqlite第三方类库:FMDB使用(转载)

本文转自一位台湾ios开发者的blog,由于blog地址被墙掉,转发过来,供大家参考原文地址:https://github.com/ccgus/fmdb更多的使用,大家可以看看source中的README.markdown 首先到这裡下载FMDB的source code,接著在解开的档案裡,把src资料夹下除了fmdb.m的档案加入到自己的iOS专案,最后在专案中加入libsqlite3.dylib这个函式库就可以了.啥?有人问為什麼不用加入fmdb.m?简单讲,这个档案是fmdb的使用说明.裡

sqlite第三方类库:FMDB使用

转自:http://www.cnblogs.com/wuhenke/archive/2012/02/07/2341656.html 本文转自一位台湾ios开发者的blog,由于blog地址被墙掉,转发过来,供大家参考原文地址:https://github.com/ccgus/fmdb更多的使用,大家可以看看source中的README.markdown 首先到这裡下载FMDB的source code,接著在解开的档案裡,把src资料夹下除了fmdb.m的档案加入到自己的iOS专案,最后在专案中加

【iOS开发-105】SQLite第三方框架FMDB的使用,以及使用FMDatabaseQueue保证线程安全

(1)下载地址:https://github.com/ccgus/fmdb (2)注意点 --语句可以带分号":",也可以省略分号. --同样需要添加"libsqlite3.dylib"库才能使用. --移动端的开发中,一般不关闭数据库,即不怎么使用[self.db close];,因为每次重新打开比较耗性能,且每次程序关闭时数据库自然会同时关闭. (3)用法 #import "ViewController.h" #import "FM

添加第三方类库造成的linker command failed with exit code 1 (use -v to see invocation)的错误调试

本文转载至 http://blog.csdn.net/duxinfeng2010/article/details/8265273 linker command failed with exit code 1 (use -v to see invocation)这个错误貌似遇见并不止一次,当我想用某个第三方类库的时候(如SBJson),我直接把类库文件copy到工程目录里面,然后一编译就出现这样错误(并不是一定会出这样错误),开始以为是网上下载的类库本身问题,所以重新找类库或者其他方式将它添加进去

0519.使用CocoaPods管理第三方类库[效率]

项目目录 添加第三方框架后的项目目录如下图 为什么要用Cocoapods? iOS开发中常用的第三方库,比如: 1.FMDB:在使用SQLite是只需要加入libsqlite3.dylib依赖以及sqlite3.h头文件即可.但是原生的SQLiteAPI使用相当不友好,而FMDB是对一系列的SQLiteAPI进行封装的库. 2.AFNetworking:网络层框架,构建于NSURLConnection.NSOperation和其他Foundation技术之上. 3.JSONKit:仅次于系统提供

iOS第三方类库之FMDatabase

FMDatabase 的使用方法 - (NSString*) getPath { NSArray* paths =NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES) ; return [[pathsobjectAtIndex:0]stringByAppendingPathComponent:@"MyTable"] ; } 1.创建数据库 -(void)CreateTable; {

[iOS]数据库第三方框架FMDB详细讲解

[iOS]数据库第三方框架FMDB详细讲解 初识FMDB iOS中原生的SQLite API在进行数据存储的时候,需要使用C语言中的函数,操作比较麻烦.于是,就出现了一系列将SQLite API进行封装的库,例如FMDB.PlausibleDatabase.sqlitepersistentobjects等. FMDB是一款简洁.易用的封装库.因此,在这里推荐使用第三方框架FMDB,它是对libsqlite3框架的封装,用起来的步骤与SQLite使用类似,并且它对于多线程的并发操作进行了处理,所以

iOS常用第三方类库 Xcode插件

第三方类库(github地址): 1.AFNetworking 网络数据     https://github.com/AFNetworking/AFNetworking 2.SDWebImage 图片缓存 https://github.com/rs/SDWebImage 3.MBProgressHUD 提示框  https://github.com/jdg/MBProgressHUD 4.FMDB 数据库 https://github.com/ccgus/fmdb 5.MJExtension

程序开发常用第三方类库一览表(VendorLib)

以下是自己开发过程中用到的第三方类库,记录下来方便查阅 ---------------------------------------------------------------------------------------------------///////////////////////////////////////////////////JAVA第三方类库///////////////////////////////////////////////----------------