3.Sqlite3使用—IOS

1.0 SQlite3数据库

1.1 终端的命令行使用

    //进入SQlite3模式
    sqlite3 name;

    //创建名为name的数据库文件
    .database;

    //查询当前所有列表
    .table;

    //创建数据列表(autoincretment为自动为ID计算(可去掉),varchar(20)限制20个字符,smamllint短整型)
    create table name(id integer primary key autoincretment, name varchar(20), age smallint);

    //查询name列表中的所有数据
    select * from name;

    //查询列表中name列表中的age、name属性
    select name,age from name;

    //根据条件来查询name列表中的数据
    select * from name where id >= 4;

    //插入name列表中的数据(需要对应数据)
    insert into name(1, 'name', 20);

    //删除name列表中的数据(where后面加条件)
    delete from name where id = 0;

    //更新name列表中的数据(set后加修改的内容,where后加条件)
    update name set id = 10 where id = 0;

1.2代码

  • 需要导入libsqlite3.0.tbd文件
@interface Sqlite3ViewController ()

@property (nonatomic) sqlite3 *dataBase;

@end

@implementation Sqlite3ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.

    [self.view setBackgroundColor:[UIColor whiteColor]];

    NSArray *nameArr = @[@"创建数据列表", @"插入数据", @"查询数据", @"删除数据", @"修改数据"];
    for(int i=0; i<nameArr.count; i++){
        UIButton *btn = [UIButton buttonWithType:UIButtonTypeSystem];
        btn.frame = CGRectMake((10 + 100 * (i % 4)), (80 + i / 4 * 40), 50, 40);
        [btn setTitle:nameArr[i] forState:UIControlStateNormal];
        [btn addTarget:self action:@selector(btnAction:) forControlEvents:UIControlEventTouchDown];
        [btn sizeToFit];
        btn.tag = 1000+i;
        [self.view addSubview: btn];
    }
}

- (void)btnAction: (UIButton *)btn{
    switch (btn.tag) {
        case 1000:  //创建数据列表
            [self createTable];
            break;
        case 1001:  //插入数据
            [self inserData];
            break;
        case 1002:  //查询数据
            [self queryData];
            break;
        case 1003:  //删除数据
            [self deleteData];
            break;
        case 1004:  //修改数据
            [self updata];
        default:
            break;
    }
}


/**
 创建数据列表
 */
-(void)createTable{
    if(sqlite3_open([[self path] UTF8String], &(_dataBase)) != SQLITE_OK){
        NSLog(@"创建数据数据库失败");
        return;
    }

    char *error;
    const char *createSQL = "create table if not exists list(id integer primary key autoincrement,name text,sex text)";

//    第一个参数: 需要执行SQL语句的数据库对象
//    第二个参数: 需要执行的SQL语句
//    第三个参数: 回调函数
//    第四个参数: 第三个参数的参数
//    第五个参数: 接收错误信息
    int tabelResult = sqlite3_exec(self.dataBase, createSQL, NULL, NULL, &error);

    if(tabelResult != SQLITE_OK){
        NSLog(@"创建列表失败 %i", tabelResult);
    }
    else{
        NSLog(@"成功创建数据列表");
    }

    sqlite3_close(self.dataBase);
}


/**
 插入数据
 */
- (void)inserData{

    if(sqlite3_open([[self path] UTF8String], &(_dataBase)) != SQLITE_OK){
        NSLog(@"创建数据数据库失败");
        return;
    }

    const char *insertSQL = "insert into list (name,sex) values ('iosRunner','male')";

    sqlite3_stmt *stmt;

    int insertResult = sqlite3_prepare_v2(self.dataBase, insertSQL, -1, &stmt, nil);
    if(insertResult != SQLITE_OK){
        NSLog(@"插入数据失败 %i", insertResult);
    }
    else{
        NSLog(@"插入数据成功 %i", insertResult);
        sqlite3_step(stmt);
    }

    //销毁
    sqlite3_finalize(stmt);

    //关闭数据库
    sqlite3_close(self.dataBase);
}


/**
 查询数据
 */
-(void)queryData{

    if(sqlite3_open([[self path] UTF8String], &(_dataBase)) != SQLITE_OK){
        NSLog(@"创建数据数据库失败");
        return;
    }

    const char *querySQL = "select * from list";

    sqlite3_stmt *stmt;
    int queryResult = sqlite3_prepare_v2(self.dataBase, querySQL, -1, &stmt, nil);
    if(queryResult != SQLITE_OK){
        NSLog(@"查询数据失败 %i", queryResult);
    }
    else{
        NSLog(@"查询数据中 %i", queryResult);
        while (sqlite3_step(stmt) == SQLITE_ROW) {
            NSLog(@"%i %s %s", sqlite3_column_int(stmt, 0), sqlite3_column_text(stmt, 1), sqlite3_column_text(stmt, 2));
        }
    }

    sqlite3_finalize(stmt);
    sqlite3_close(self.dataBase);
}


/**
 修改数据
 */
-(void)updata{

    if(sqlite3_open([[self path] UTF8String], &(_dataBase)) != SQLITE_OK){
        NSLog(@"创建数据数据库失败");
        return;
    }

    const char *updateSQL = "update list set name = 'buhui' where name = 'iosRunner'";

    sqlite3_stmt *stmt;
    int updateResult = sqlite3_prepare_v2(self.dataBase, updateSQL, -1, &stmt, nil);
    if(updateResult != SQLITE_OK){
        NSLog(@"修改数据失败 %i", updateResult);
    }
    else{
        NSLog(@"修改成功");
        sqlite3_step(stmt);
    }

    sqlite3_finalize(stmt);
    sqlite3_close(self.dataBase);
}

/**
 删除数据库的数据
 */
-(void)deleteData{

    if(sqlite3_open([[self path] UTF8String], &(_dataBase)) != SQLITE_OK){
        NSLog(@"创建数据数据库失败");
        return;
    }

    const char *deleteSQL = "delete from list where name = 'iosRunner'";

    sqlite3_stmt *stmt;
    int deleteResult = sqlite3_prepare_v2(self.dataBase, deleteSQL, -1, &stmt, nil);
    if(deleteResult != SQLITE_OK){
        NSLog(@"删除数据失败 %i", deleteResult);
    }
    else{
        NSLog(@"删除数据成功");
        sqlite3_step(stmt);
    }

    sqlite3_finalize(stmt);
    sqlite3_close(self.dataBase);
}


- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}


/**
 生成路径

 @return 数据库地址
 */
-(NSString *)path{
    //取得数据库的地址,保存在沙盒中
    NSString *documentStr = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject];

    NSString *path = [NSString stringWithFormat:@"%@/crylown.db", documentStr];

    return path;
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值