这里写了一个单例处理基本的数据库操作,包含查询数据库表名、查询表字段名、查询表数据、开关数据库等操作
#import <Foundation/Foundation.h>@H_502_8@@H_502_8@
#import <sqlite3.h>@H_502_8@@H_502_8@
@interface@H_502_8@ FMsqliteManager@H_502_8@ : NSObject@H_502_8@{@H_502_8@
sqlite3* db;
}
+ (FMsqliteManager *)sharedManager;
- (BOOL@H_502_8@) opensqliteDBWithPath:(NSString@H_502_8@ *) filePath;
- (void@H_502_8@) closesqliteDB;
- (NSArray@H_502_8@ *) queryTableFromDB;
- (NSArray@H_502_8@ *) queryWithsql:(NSString@H_502_8@ *) sqlStr;
- (NSArray@H_502_8@ *) queryPragmaFromTable:(NSString@H_502_8@ *) table;
@end@H_502_8@
#import "FMsqliteManager.h"@H_502_8@@H_502_8@
@implementation@H_502_8@ FMsqliteManager@H_502_8@@H_502_8@
+ (FMsqliteManager *)sharedManager
{
static@H_502_8@ FMsqliteManager *sharedsqliteManagerInstance = nil@H_502_8@;
static@H_502_8@ dispatch_once_t@H_502_8@ predicate;
dispatch_once@H_502_8@(&predicate,^{
sharedsqliteManagerInstance = [[self@H_502_8@ alloc] init];
});
return@H_502_8@ sharedsqliteManagerInstance;
}
- (BOOL@H_502_8@) opensqliteDBWithPath:(NSString@H_502_8@ *) filePath {
if@H_502_8@ (sqlite3_open([filePath UTF8String],&db)==sqlITE_OK) {
return@H_502_8@ YES@H_502_8@;
}
return@H_502_8@ NO@H_502_8@;
}
- (void@H_502_8@) closesqliteDB {
sqlite3_close(db);
}
// 查询数据库所有表名@H_502_8@
- (NSArray@H_502_8@ *) queryTableFromDB {
sqlite3_stmt *statement;
NSString@H_502_8@* sqlStr = [NSString@H_502_8@ stringWithFormat:@"select * from sqlite_master where type='table' order by name"@H_502_8@];
const@H_502_8@ char@H_502_8@* sql = [sqlStr UTF8String];
if@H_502_8@ (sqlite3_prepare_v2(db,sql,-1@H_502_8@,&statement,nil@H_502_8@)==sqlITE_OK) {
NSLog@H_502_8@(@"select ok."@H_502_8@);
}
NSMutableArray@H_502_8@* results = [NSMutableArray@H_502_8@ array];
while@H_502_8@ (sqlite3_step(statement)==sqlITE_ROW) {
int@H_502_8@ _id@H_502_8@=sqlite3_column_int(statement,0@H_502_8@);
char@H_502_8@ *name=(char@H_502_8@ *)sqlite3_column_text(statement,1@H_502_8@);
NSLog@H_502_8@(@"row>>id %i,name %s"@H_502_8@,_id@H_502_8@,name);
[results addObject:[NSString@H_502_8@ stringWithCString:name encoding:NSUTF8StringEncoding]];
}
sqlite3_finalize(statement);
return@H_502_8@ results;
}
// 查询表所有属性字段名@H_502_8@
- (NSArray@H_502_8@ *) queryPragmaFromTable:(NSString@H_502_8@ *) table {
sqlite3_stmt *statement;
NSString@H_502_8@* sqlStr = [NSString@H_502_8@ stringWithFormat:@"PRAGMA table_info(%@)"@H_502_8@,table];
const@H_502_8@ char@H_502_8@* sql = [sqlStr UTF8String];
if@H_502_8@ (sqlite3_prepare_v2(db,nil@H_502_8@)==sqlITE_OK) {
NSLog@H_502_8@(@"select ok."@H_502_8@);
}
NSMutableArray@H_502_8@* results = [NSMutableArray@H_502_8@ array];
while@H_502_8@ (sqlite3_step(statement)==sqlITE_ROW) {
char@H_502_8@ *nameData = (char@H_502_8@ *)sqlite3_column_text(statement,1@H_502_8@);
NSLog@H_502_8@(@"columnName:%s"@H_502_8@,nameData);
[results addObject:[NSString@H_502_8@ stringWithCString:nameData encoding:NSUTF8StringEncoding]];
}
sqlite3_finalize(statement);
return@H_502_8@ results;
}
// 查询表数据@H_502_8@
- (NSArray@H_502_8@ *) queryWithsql:(NSString@H_502_8@ *) sqlStr {
sqlite3_stmt *statement;
const@H_502_8@ char@H_502_8@* sql = [sqlStr UTF8String];
if@H_502_8@ (sqlite3_prepare_v2(db,nil@H_502_8@)==sqlITE_OK) {
NSLog@H_502_8@(@"select ok."@H_502_8@);
}
NSMutableArray@H_502_8@* results = [NSMutableArray@H_502_8@ array];
while@H_502_8@ (sqlite3_step(statement)==sqlITE_ROW) {
int@H_502_8@ count = sqlite3_column_count(statement);
NSMutableDictionary@H_502_8@* info = [NSMutableDictionary@H_502_8@ dictionary];
for@H_502_8@ (int@H_502_8@ i = 0@H_502_8@; i < count; i ++) {
char@H_502_8@ *result =(char@H_502_8@ *)sqlite3_column_text(statement,i);
NSString@H_502_8@* value = nil@H_502_8@;
if@H_502_8@ (result != NULL@H_502_8@) {
value = [NSString@H_502_8@ stringWithCString:result encoding:NSUTF8StringEncoding];
}
const@H_502_8@ char@H_502_8@ *columnName = sqlite3_column_name(statement,i);
NSString@H_502_8@* key = [NSString@H_502_8@ stringWithUTF8String:columnName];
if@H_502_8@ (value == nil@H_502_8@) {
value = @""@H_502_8@;
}
[info setObject:value forKey:key];
}
[results addObject:info];
}
sqlite3_finalize(statement);
return@H_502_8@ results;
}
@end@H_502_8@