ios数据库

本文介绍了一个用于操作SQLite数据库的Objective-C类库,包括创建、插入、查询和删除等基本操作,并提供了一个具体的使用示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#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



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值