您的位置:首页 > 其它

FMDB 使用方法(学习笔记)

2014-10-15 14:02 260 查看
内容主要是从别人的文章中摘取,并进行总结。这里,我把所有方法放在一个函数里,使用时根据需要进行分离。

引入头文件:

#import "FMDatabase.h"

#import "FMDatabaseAdditions.h"
函数:
-(void)initFMDB{

// 0.path

NSArray *paths =
NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
NSUserDomainMask, YES);

NSString *documentDirectory = [paths
objectAtIndex:0];

NSString *dbPath = [documentDirectory
stringByAppendingPathComponent:@"MyDatabase.db"];

// 1.首先,你要使用一个数据库文件的路径来构造一个FMDB对象:

FMDatabase *db = [FMDatabase
databaseWithPath:dbPath];//这里要给一个完整的doc路径.如果没有这个数据库,FMDB将会自动创建

// 2.然后我们要打开数据库,这样才能进行后续的相关操作:

if ([db open] ==
YES) {

NSLog(@"open success.");
}else {

NSLog(@"open fail.");

return;
}

// 3.CREATE TABLE

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

// 4.两种操作:1。更新操作(插入、更新、删除)2。请求操作(select)

/**

在SQLite中的,“text对应:NSString”,“integer对应NSNumber”,“blob则是NSData”。该做的转换FMDB都做好了,只要了解SQLite语法

*/

//---------------4.1------------------------

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

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

// 4.1.2
更新数据库

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

//---------------4.2------------------------

// 4.2.1
获取数据库资料

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

FMResultSet *rs = [db
executeQuery:@"SELECT Name, Age, FROM PersonList"];

while ([rs next]) {

NSString *name = [rs
stringForColumn:@"Name"];

int age = [rs intForColumn:@"Age"];

}

[rs
close];

// 4.2.2
快速取得资料

/**

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

*/

//找地址

NSString *address = [db
stringForQuery:@"SELECT Address FROM PersonList WHERE Name = ?",@"John"];

//找年龄

int age = [db
intForQuery:@"SELECT Age FROM PersonList WHERE Name = ?",@"John"];

[db
close];//使用完
要关闭!

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐