美文网首页
iOS SqliteDemo

iOS SqliteDemo

作者: 不说谎的匹诺曹Y | 来源:发表于2017-06-30 11:32 被阅读0次

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

    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

          本文链接:https://www.haomeiwen.com/subject/ngmbcxtx.html