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];//使用完
要关闭!
}
引入头文件:
#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];//使用完
要关闭!
}
相关文章推荐
- Mcad学习笔记之异步编程(AsyncCallback委托,IAsyncResult接口,BeginInvoke方法,EndInvoke方法的使用小总结)(转载)
- Web Service学习笔记:天气预报Web服务的使用方法
- 正则表达式入门经典(学习笔记二)——使用正则表达式的分析方法
- jQuery学习笔记--jqGrid的使用方法(编辑,删除,更新,新增)
- android学习序列笔记之Intent使用方法
- [ASP.NET学习笔记之四]数据集的使用方法和技巧
- 我的嵌入式学习笔记(2)--scanf使用常见问题及解决方法
- 【Android】学习笔记(10)——adb使用方法
- selenium学习笔记- selnium.RunScript(string script) 方法的使用 及有关自动化测试文本编辑器未解决的问题
- Struts2.0学习笔记--Struts2.0标签及其使用方法
- [ASP.NET学习笔记之四]数据集的使用方法和技巧
- Mars Android视频学习笔记——01_16_SQLite使用方法
- Domino学习笔记之@for和@elements的使用方法
- 【Android】学习笔记(11)——Animation使用方法(上)
- java学习笔记(四)----对象、数组作为参数传递,静态变量、静态方法的使用,内部类,使用文档注释
- JS OO 学习笔记 ——JS封装使用prototype添加方法
- APIDemo学习笔记——Android上几种简单的Animation使用方法(二)
- APIDemo学习笔记——Android上几种简单的Animation使用方法(三)——3D Transition
- OK6410 Linux开发环境搭建--编译以及ubuntu的使用方法学习笔记
- 【Android】学习笔记(12)——Animation使用方法(下)