ios 本地数据库搭建方案

1.新建一个数据库管理类DBManager用于数据库的新建、打开、关闭。

#import <Foundation/Foundation.h>
#import <sqlite3.h>

#define DBNAME    @"projectxxxxx.sqlite"

@interface DBManager : NSObject{
    
    sqlite3 *database;
}
@property (nonatomic) sqlite3 *database;

+(DBManager *) shareInstance;
-(void)openDB;
-(void)closeDB;

@end

static DBManager *instance;

+ (DBManager *)shareInstance {
    @synchronized(self) {
        if (instance == nil) {
            instance = [[self alloc] init];
        }
    }
    return instance;
}

-(void)closeDB {
    sqlite3_close(database);
}

//获取数据库文件夹目录
-(void)openDB {
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documents = [paths objectAtIndex:0];
    NSString *database_path = [documents stringByAppendingPathComponent:DBNAME];
    if (sqlite3_open([database_path UTF8String], &database) != SQLITE_OK) {
        sqlite3_close(database);
        DebugLog(@"Sqlite Open Failed");
    }else{
        //创建一张表
        NSString *sqlTable = @"CREATE TABLE IF NOT EXISTS USER_TABLE (id INTEGER PRIMARY KEY AUTOINCREMENT, passport VARCHAR, Id INTEGER, name VARCHAR)";
        [self initCreateTable:sqlTable];
    }
}


-(void)initCreateTable:(NSString *)sql
{
    char *err;
    if (sqlite3_exec(database, [sql UTF8String], NULL, NULL, &err) != SQLITE_OK) {
        sqlite3_close(database);
        DebugLog(@"Sqlite Operation Failed");
    }
}

2.对每一个表创建一个相应的类用于对该表进行增删改查的常规操作。

如:UserInfoDB 类开放一些接口对用户信息这张表进行操作。

@interface UserInfoDB : NSObject{
    sqlite3 *database;
}
//获得实例
+(UserInfoDB *) GetInstance;

//插入一条用户信息
-(void)insertOneUser:(nsstring *)name GroupId:(int)GroupId;

//根据id,查询信息
-(NSMutableArray *)selectByGroupId:(int)GroupId;
//获取表情组数量
-(int)getGroupCount;

//查询所有用户
-(NSMutableArray *)selectAllUser;
//删除该表
-(void)clear;


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值