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的使用说明。裡面的註解清楚,范例又简单,如果有兴趣,直接看fmdb.m,大概就会用fmdb了。

以下介绍几个常用的指令,分享给大家:

-打开/关闭资料库

使用资料库的第一件事,就是建立一个资料库。要注意的是,在iOS环境下,只有document directory 是可以进行读写的。在写程式时用的那个Resource资料夹底下的东西都是read-only。因此,建立的资料库要放在document 资料夹下。方法如下:

1 NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
2 NSString *documentDirectory = [paths objectAtIndex:0];
3 NSString *dbPath = [documentDirectory stringByAppendingPathComponent:@"MyDatabase.db"];
4 FMDatabase *db = [FMDatabase databaseWithPath:dbPath] ;
5 if (![db open]) {
6    NSLog(@“Could not open db.”);
7    return ;
8 }

建立table

如果是新建的资料库档,一开始是没有table的。建立table的方式很简单:

1 [db executeUpdate:@"CREATE TABLE PersonList (Name text, Age integer, Sex integer, Phone text, Address text, Photo blob)"];

这是FMDB裡很常用的指令,[FMDatabase_object executeUpdate:]后面用NSString塞入SQLite语法,就解决了。因為这篇主要是在讲FMDB,所以SQLite的语法就不多说了,上述程式码建立了一个名為PersonList的table,裡面有姓名、年龄、性别、电话、地址和照片。(嗯….很范例的一个table)

-插入资料

插入资料跟前面一样,用executeUpdate后面加语法就可以了。比较不同的是,因為插入的资料会跟Objective-C的变数有关,所以在string裡使用?号来代表这些变数。

1 [db executeUpdate:@"INSERT INTO PersonList (Name, Age, Sex, Phone, Address, Photo) VALUES (?,?,?,?,?,?)",
2  
3 @"Jone", [NSNumber numberWithInt:20], [NSNumber numberWithInt:0], @“091234567”, @“Taiwan, R.O.C”, [NSData dataWithContentsOfFile: filepath]];

其中,在SQLite中的text对应到的是NSString,integer对应NSNumber,blob则是NSData。该做的转换FMDB都做好了,只要了解SQLite语法,应该没有什麼问题才是。

-更新资料

太简单了,不想讲,请看范例:

1 [db executeUpdate:@"UPDATE PersonList SET Age = ? WHERE Name = ?",[NSNumber numberWithInt:30],@“John”];

-取得资料

取得特定的资料,则需使用FMResultSet物件接收传回的内容:

01 FMResultSet *rs = [db executeQuery:@"SELECT Name, Age, FROM PersonList"];
02  
03 while ([rs next]) {
04  
05 NSString *name = [rs stringForColumn:@"Name"];
06  
07 int age = [rs intForColumn:@"Age"];
08  
09 }
10  
11 [rs close];

用[rs next]可以轮询query回来的资料,每一次的next可以得到一个row裡对应的数值,并用[rs stringForColumn:]或[rs intForColumn:]等方法把值转成Object-C的型态。取用完资料后则用[rs close]把结果关闭。

-快速取得资料

在有些时候,只会query某一个row裡特定的一个数值(比方只是要找John的年龄),FMDB提供了几个比较简便的方法。这些方法定义在FMDatabaseAdditions.h,如果要使用,记得先import进来。

view source

print

1 //找地址
2  
3 NSString *address = [db stringForQuery:@"SELECT Address FROM PersonList WHERE Name = ?",@"John”];
4  
5 //找年齡
6  
7 int age = [db intForQuery:@"SELECT Age FROM PersonList WHERE Name = ?",@"John”];
时间: 2024-10-21 02:33:37

sqlite第三方类库:FMDB使用(转载)的相关文章

sqlite第三方类库fmdb的使用

FMDB是ios平台下解析sqlite的第三方数据库管理框架,使用非常方便,而且提供了多线程安全的数据库操作,相比coredata来说更加灵活和轻量级. fmdb主要有三个类别: fmdatabase:用来执行sql语句: fmresultset:用来使用fmdatabase执行查询后的结果集合 fmdatabasequeue:用来在多线程中查询和更新数据,它是线程安全的. fmdb的使用 1.在新建的项目中,导入libsqlite3的动态数据库: 注:(在Building Phases中的Li

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到工程目录里面,然后一编译就出现这样错误(并不是一定会出这样错误),开始以为是网上下载的类库本身问题,所以重新找类库或者其他方式将它添加进去

iOS第三方库汇总[转载]

iOS第三方库汇总[转载] 字数2179 阅读334 评论0 喜欢29 简介 此文用于总结,本人使用过或者收藏过的Github第三方类库,以便日后查阅,也便他人借鉴. 资料整理中不定期更新... 开源项目 CodeHub browse and maintain your GitHub repositories on any iOS device! Open-Source iOS Apps 开源iOS apps列表 APP相关 iVersion 提示版本更新 BonMot 字体相关的库,设置字体样

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

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

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

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

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; {