iOS原生sqlite的使用

iOS原生sqlite的使用

首先导入数据库使用到的包

#import

声明一个数据库

sqlite3 *db;



使用单例来管理数据库

+ (instancetype)shareDataBaseTool{

static DataBaseTool *tool;

static dispatch_once_t onceToken;

dispatch_once(&onceToken, ^{

tool = [[DataBaseTool alloc] init];

});

return tool;

}

打开数据库

- (void)openDB{

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);

NSString *database = [paths objectAtIndex:0];

NSString *database_path = [database stringByAppendingPathComponent:@"manager.sqlite"];

if (sqlite3_open([database_path UTF8String], &db) != SQLITE_OK) {

sqlite3_close(db);

DLog(@"数据库打开失败");

}else{

DLog(@"打开成功");

}

}

打开数据库表

- (void)creatRepaireTable{

char *errmsg;

NSString *sqlStr = @"create table if not exists home(logId integer primary key autoincrement,managerId integer,name text,operation text,recordTime text)";

if (sqlite3_exec(db,[sqlStr UTF8String], nil, nil, &errmsg) == SQLITE_OK) {

DLog(@"创建表成功");

}else{

DLog(@"表创建失败");

}

}

插入数据

- (void)insertRepaire:(KCLogsModel *)repairModel{

NSString *sqlStr = [NSString stringWithFormat:@"insert into home(logId,managerId,name,operation,recordTime)values('%tu','%tu','%@','%@','%@')",repairModel.logId,repairModel.managerId,repairModel.name,repairModel.operation,repairModel.recordTime];

if (sqlite3_exec(db, [sqlStr UTF8String], nil, nil, nil) == SQLITE_OK) {

DLog(@"添加成功");

}else{

DLog(@"添加失败");

}

}

查询数据

- (void)select{

NSString *sqlStr = @"select name,operation,recordTime from home where operation like '%添加%' order by logId asc";

NSMutableArray *modelArray = [NSMutableArray arrayWithCapacity:0];

sqlite3_stmt *stmt = NULL;

if (sqlite3_prepare_v2(db, [sqlStr UTF8String], -1, &stmt, NULL) == SQLITE_OK) {

while (sqlite3_step(stmt) == SQLITE_ROW) {

char *name = (char *)sqlite3_column_text(stmt, 0);

char *operation = (char *)sqlite3_column_text(stmt, 1);

char *recordTime = (char *)sqlite3_column_text(stmt, 2);

KCLogsModel *model = [[KCLogsModel alloc] init];

model.name = [NSString stringWithUTF8String:(char *)name];

model.operation = [NSString stringWithUTF8String:(char *)operation];

model.recordTime = [NSString stringWithUTF8String:(char *)recordTime];

DLog(@"%@ %@ %@",model.name,model.operation,model.recordTime);

}

}

}

关闭数据库

- (void)closeDB{

sqlite3_close(db);

}

你可能感兴趣的:(iOS原生sqlite的使用)