並且加入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]; } }
沒有留言:
張貼留言