#import <Foundation/Foundation.h>
#import <sqlite3.h>
@interface SqliteManager : NSObject
+ (sqlite3 *)getSqlite;
+ (void)closeSqlite:(sqlite3 *)sqlite;
+ (NSString *)createSql:(NSString *)tableName params:(NSArray *)params;
+ (NSString *)insertSql:(NSString *)tableName params:(NSDictionary *)params;
+ (NSString *)fetchSql:(NSString *)tableName params:(NSDictionary *)params;
+ (NSString *)deleteSql:(NSString *)tableName params:(NSDictionary *)params;
+ (NSString *)stringFromChar:(const char*)val;
@end
#import "SqliteManager.h"
#define DATABASE_NAME @"JieLi.db"
@implementation SqliteManager
+ (sqlite3 *)getSqlite
{
sqlite3 *database = nil;
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentDirectory = [paths objectAtIndex:0];
NSString *path = [documentDirectory stringByAppendingPathComponent:DATABASE_NAME];
sqlite3_open([path UTF8String], &database);
return database;
}
+ (void)closeSqlite:(sqlite3 *)sqlite
{
sqlite3_close(sqlite);
}
+ (NSString *)createSql:(NSString *)tableName params:(NSArray *)params
{
NSMutableString *sql = [[[NSMutableString alloc] init] autorelease];
[sql appendFormat:@"create table if not exists %@ (id integer primary key autoincrement,", tableName];
for (NSString *val in params) {
[sql appendFormat:@" %@ text,", val];
}
[self deleteStringLastCode:sql];
[sql appendString:@")"];
return sql;
}
+ (NSString *)insertSql:(NSString *)tableName params:(NSDictionary *)params
{
NSMutableString *sql = [[[NSMutableString alloc] init] autorelease];
[sql appendFormat:@"insert into %@ (", tableName];
for (NSString *val in [params allKeys]) {
[sql appendFormat:@" %@,", val];
}
[self deleteStringLastCode:sql];
[sql appendString:@") values ("];
for (NSString *val in [params allKeys]) {
[sql appendFormat:@"'%@',", [params objectForKey:val]];
}
[self deleteStringLastCode:sql];
[sql appendString:@")"];
return sql;
}
+ (NSString *)fetchSql:(NSString *)tableName params:(NSDictionary *)params
{
NSMutableString *sql = [[[NSMutableString alloc] init] autorelease];
[sql appendFormat:@"select * from %@ ", tableName];
if (nil != params && [params count] > 0) {
[sql appendString:@"where "];
for (NSString *key in [params allKeys]) {
[sql appendFormat:@"%@ = %@,", key, [params objectForKey:key]];
}
[self deleteStringLastCode:sql];
}
return sql;
}
+ (NSString *)deleteSql:(NSString *)tableName params:(NSDictionary *)params
{
NSMutableString *sql = [[[NSMutableString alloc] init] autorelease];
[sql appendFormat:@"delete from %@ ", tableName];
if (nil != params && [params count] > 0) {
[sql appendString:@"where "];
for (NSString *key in [params allKeys]) {
[sql appendFormat:@"%@ = %@,", key, [params objectForKey:key]];
}
[self deleteStringLastCode:sql];
}
return sql;
}
+ (NSString *)stringFromChar:(const char*)val
{
if (val != NULL) {
return [NSString stringWithUTF8String:val];
}
return nil;
}
+ (void)deleteStringLastCode:(NSMutableString *)val
{
NSRange range = NSMakeRange([val length] - 1, 1);
[val deleteCharactersInRange: range];
}
@end
用法
#define TABLE_NAME @"book"
#define TABLE_COLUMN @[@"bookId", @"thumb", @"author", @"publish", @"price", @"bookName", @"brief"]
NSString *createSql = [SqliteManager createSql:TABLE_NAME params:TABLE_COLUMN]; //获取创建数据库sql