iOS SqliteDemo

 导入依赖库      随时关闭数据库

iOS SqliteDemo_第1张图片

1..创建业务处理层类    

2..创建一个单例类 

3..创建sqlite表格方法

4..打开数据库

5..增加数据方法

6..删除方法

7..查询数据

8..关闭数据库

{

// 定义指针

sqlite3 *sqliteDB;

}

// 单例

+(instancetype)sharedData;

// 创建表

-(void)createData;

// 打开数据库

-(void)openData;

// 增加数据

-(void)insertData:(Car *)car;

// 删除数据

-(void)deleteData:(Car *)car;

// 查找数据

-(NSArray *)seleteData;

// 关闭数据库

-(void)closeData;

----------------------     实现业务处理方法    ---------------------


#import "Data.h"

// 静态标示符

static Data *data=nil;

@implementation Data

// 单例

+(instancetype)sharedData

{

if (!data)

{

data=[[Data alloc] init];

}

 return data;

}

+(instancetype)allocWithZone:(struct _NSZone *)zone

{

if (!data)

{

data = [super allocWithZone:zone];

}

return data;

}

// 打开数据库

-(void)openData

{

NSString *str = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)[0];

NSString *path = [str stringByAppendingPathComponent:@"car.db"];

// 打开

if (sqlite3_open([path UTF8String], &sqliteDB) == SQLITE_OK)

{

NSLog(@"open success!");

// 创建表格

[self createData];

}

else

{

NSLog(@"open fail!");

}

}

// 创建表

-(void)createData

{

// 创建sql语句

const char *sql="create table if not exists car (CarID integer primary key,Name text,Brand text)";

// 创建预编译指针

sqlite3_stmt *stmt;

// 准备预编译指针

sqlite3_prepare_v2(sqliteDB, sql, -1, &stmt, nil);

// 执行预编译指针

if (sqlite3_step(stmt) == SQLITE_DONE)

{

NSLog(@"create table ok!");

}

else

{

NSLog(@"create tablefail!");

}

// 销毁预编译指针

sqlite3_finalize(stmt);

}

// 增加数据

-(void)insertData:(Car *)car

{

// 创建sql语句

const char *sql = "insert into car values (null,?,?) ";

// 创建预编译指针

sqlite3_stmt *stmt;

// 准备预编译指针

sqlite3_prepare_v2(sqliteDB, sql, -1, &stmt, nil);

// 解决占位符

sqlite3_bind_text(stmt, 1, [car.Name UTF8String], -1, SQLITE_TRANSIENT);

sqlite3_bind_text(stmt, 2, [car.Brand UTF8String], -1, SQLITE_TRANSIENT);

// 执行预编译指针

if (sqlite3_step(stmt) == SQLITE_DONE)

{

NSLog(@"insert ok!");

}

else

{

NSLog(@"insrt fail!");

}

// 销毁预编译指针

sqlite3_finalize(stmt);

}

// 删除数据

-(void)deleteData:(Car *)car

{

// 创建sql语句

const char *sql = "delete from car where CarID = ?";

// 创建预编译指针

sqlite3_stmt *stmt;

// 准备预编译指针

sqlite3_prepare_v2(sqliteDB, sql, -1, &stmt, nil);

// 解决占位符

sqlite3_bind_int(stmt, 1, (int) car.CarID);

// 执行预编译指针

if (sqlite3_step(stmt) == SQLITE_DONE)

{

NSLog(@"delete ok!");

}

else

{

NSLog(@"delete fail!");

}

// 销毁预编译指针

sqlite3_finalize(stmt);

}

// 查找数据

-(NSArray *)seleteData

{

// 创建sql语句

const char *sql = "select * from car";

// 创建预编译指针

sqlite3_stmt *stmt;

// 准备预编译指针

sqlite3_prepare_v2(sqliteDB, sql, -1, &stmt, nil);

// 创建空数组

NSMutableArray *arr = [NSMutableArray array];

// 执行预编译指针

while (sqlite3_step(stmt) == SQLITE_ROW)

{

Car *car = [[Car alloc] init];

car.Name = [NSString stringWithUTF8String:(const char *)sqlite3_column_text(stmt, 1)];

car.Brand = [NSString stringWithUTF8String:(const char *)sqlite3_column_text(stmt, 2)];

car.CarID = sqlite3_column_int(stmt, 0);

[arr addObject:car];

}

// 销毁预编译指针

sqlite3_finalize(stmt);

return [NSArray arrayWithArray:arr];

}

// 关闭数据库

-(void)closeData

{

sqlite3_close(sqliteDB);

}

----------------------   查询数据还有删除方法   ------------------

-(void)viewWillAppear:(BOOL)animated

{

[super viewWillAppear:animated];

// 打开数据库

[[Data sharedData] openData];

// 查询数据

arr = [[Data sharedData] seleteData];

// 关闭数据库

[[Data sharedData] closeData];

// 刷新表格

[self.table reloadData];

}

-(void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath

{

// 打开数据库(1.业务处理类类名  2.单例名  3.打开数据库方法名)

[[Data sharedData] openData];

// 删除(删除数组里的数据)

[[Data sharedData] deleteData:arr[indexPath.row]];

// 查询

arr = [[Data sharedData] seleteData];

// 关闭

[[Data sharedData] closeData];

// 刷新表格

[self.table reloadData];

}

你可能感兴趣的:(iOS SqliteDemo)