可将数据库操作写入一个类,这样用起来也很方便。例如:
#import <Foundation/Foundation.h>
#import <sqlite3.h>
@interface DBOperation : NSObject {
sqlite3 *readableDB;
sqlite3 *writableDB;
NSString *dbName;
}
- (void)openDB;
- (void)closeDB;
@end
@implementation DBOperation
static sqlite3_stmt *insert_statement=nil;
static sqlite3_stmt *select_statement=nil;
static sqlite3_stmt *delete_statement=nil;
-(void) openDB {//打开DB
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *writableDBPath= [documentsDirectory stringByAppendingPathComponent:dbName];
if (sqlite3_open([writableDBPath UTF8String], &writableDB) != SQLITE_OK) {
sqlite3_close(writableDB);
NSAssert1(0, @"Failed to open database with message '%s'.", sqlite3_errmsg(writableDB));
}
else
{
NSLog(@"DB Opened");
}
}
- (void)closeDB {//关闭DB
if (select_statement)
sqlite3_finalize(select_statement);
if (insert_statement)
sqlite3_finalize(insert_statement);
if (delete_statement)
sqlite3_finalize(delete_statement);
if(sqlite3_close(writableDB) != SQLITE_OK)
NSAssert1(0, @"Error while closing the connection to the writableDB. %s", sqlite3_errmsg(writableDB));
}
- (void)dealloc
{
[self closeDB];
[super dealloc];
}