並且加入libsqlite3.0.dylib的framework
然後按照我的習慣會做成一個DB的singleton方便使用
首先是.h檔
#import <Foundation/Foundation.h> #import "FMDatabase.h" @interface DBData : NSObject @property (nonatomic) FMDatabase* db; +(DBData *)getInstance; -(FMDatabase *)loadDB:(NSString *)dbName; @end接著是.m檔
#import "DBData.h"
@implementation DBData
@synthesize db;
static DBData *instance = nil;
+(DBData *)getInstance
{
@synchronized(self)
{
if (instance == nil)
{
instance = [[self alloc] init];
}
}
return instance;
}
-(FMDatabase* )loadDB:(NSString *)dbName
{
NSURL *appUrl = [[[NSFileManager defaultManager]
URLsForDirectory:NSDocumentDirectory
inDomains:NSUserDomainMask] lastObject];
NSString *dbPath = [[appUrl path] stringByAppendingPathComponent:@"MyDatabase.db"];
db = [FMDatabase databaseWithPath:dbPath];
if (![db open]) {
NSLog(@"Could not open db");
}
else
{
NSLog(@"open db Success");
}
return db;
}
@end
都準備好了之後,就可以在程式的各處使用了在要使用DB的.h加上這兩行
#import "DBData.h"
@interface Search : UIViewController
{
DBData *instance;
FMDatabase *db;
}
要使用的.m檔如下,這是新增的範例
instance = [DBData getInstance];
db = [instance loadDB:@"MyDatabase.db"];
FMResultSet *rs = [db executeQuery:@"SELECT name, description from MyDB WHERE name = ?",name];
if ([rs next])
{
NSString *name = [rs stringForColumn:@"name"];
NSString *description = [rs stringForColumn:@"description"];
}
else
{
if(![db executeUpdate:@"INSERT INTO MyInfo (name, description) VALUES (?,?)", name, @"strong"])
{
[self displayAlertViewMsg:@"新增我的最愛失敗" andTitle:nil];
}
else
{
[self displayAlertViewMsg:@"新增我的最愛成功" andTitle:nil];
}
}
沒有留言:
張貼留言