sqlite3基本操作

sqlite3基本操作

一、终端操作

1.先进入项目的目录里

//找到Documents路径
NSLog(@"%@", NSHomeDirectory());

终端:

cd Documents/

2.创建数据库

sqlite3 数据库名称(后缀可以随便加)

sqlite3 db_student.sql

4.创建表(SQL语句)

create table if not exists t_student(id integer primary key autoincrement,name text,age integer);

5.删除表

drop table t_student;

6.增删改查(SQL语句)

insert into t_student(name,age) values('JianZe',11);
delete from student where id=2;
update student set name='jianze' where name='JianZe';
select * from t_student

 

注意:

.help 获取帮助

.quit 退出数据库

.schema 查看数据库

 

二、代码实现

1.创建数据库

打开数据库,如果数据库不存在就创建

NSString *path = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES).firstObject stringByAppendingPathComponent:@"db_student.sql"];
    int result = sqlite3_open([path UTF8String], &_sql);
    if (result == SQLITE_OK) {
        NSLog(@"打开数据库成功");
        
    } else {
        NSLog(@"打开数据库失败");
    }

 

2.创建表 

    //1.创建sql语句
    NSString *createSql = @"create table t_student(id integer primary key autoincrement, name text, age integer)";
    //2.执行语句 除了select之外都是通过这个执行
    int result = sqlite3_exec(_sql, [createSql UTF8String], NULL, NULL, NULL);
    if (result == SQLITE_OK) {
        NSLog(@"创建表成功");
    } else {
        NSLog(@"创建表失败");
    }

3.增加数据

已知数据源

NSString *insertSql = @"insert into t_student(name,age) values('JianZe',20)";
    
    if (sqlite3_exec(_sql, [insertSql UTF8String], NULL, NULL, NULL) == SQLITE_OK) {
        NSLog(@"插入数据成功");
    } else {
        NSLog(@"插入数据失败");
    }

需要外部传递数据

    //占位符 ?
    NSString *insertSql = @"insert into t_student(name,age,icon) values(?,?,?)";
    //预处理
    sqlite3_stmt *stmt = NULL;
    if (sqlite3_prepare(_sql, [insertSql UTF8String], -1, &stmt, NULL) == SQLITE_OK) {
        UIImage *img = [UIImage imageNamed:@"1"];
        NSData *imgData = UIImagePNGRepresentation(img);
        //绑定数据 bind 有几个问号就要绑定几个
        sqlite3_bind_text(stmt, 1, "Yill", -1, NULL);
        sqlite3_bind_int(stmt, 2, 20);
        sqlite3_bind_blob(stmt, 3, [imgData bytes], (int)imgData.length, NULL);
        
        //将绑定的数据保存到数据库
        if (sqlite3_step(stmt) == SQLITE_DONE) {
            NSLog(@"保存数据成功");
        } else {
            NSLog(@"保存数据失败");
        }
        
        //释放内存空间
        sqlite3_finalize(stmt);
    } else {
        NSLog(@"预处理失败");
    }
   

4.改动数据

NSString *updateSql = @"update t_student set age=21 where id=1";
    
    if (sqlite3_exec(_sql, [updateSql UTF8String], NULL, NULL, NULL) == SQLITE_OK) {
        NSLog(@"更新数据成功");
    } else {
        NSLog(@"更新数据失败");
    }

5.查询数据

    //关键字 limit 0,2 从哪个位置读 每次读几个
    NSString *selectSql = @"select * from t_student limit 0,2";
    
    //1.预处理 -1表示语句长度自己计算
    sqlite3_stmt *stmt = NULL;
    if (sqlite3_prepare(_sql, [selectSql UTF8String], -1, &stmt, NULL) == SQLITE_OK) {
        //2.一条一条读取数据 如果有 返回值就是SQLITE_ROW
        while (sqlite3_step(stmt) == SQLITE_ROW) {
            //一列一列地去读取每一条记录 1表示列
            char *name = (char *)sqlite3_column_text(stmt, 1);
            int age = sqlite3_column_int(stmt, 2);
            NSData *data = [NSData dataWithBytes:sqlite3_column_blob(stmt, 3) length:sqlite3_column_bytes(stmt, 3)];
            NSLog(@"%s, %d, %@", name, age, [UIImage imageWithData:data]);
        }
    } else {
        NSLog(@"预处理失败");
    }

6.在已有的表中添加字段

NSString *alterSql = @"alter table t_student add icon blob";
    if (sqlite3_exec(_sql, [alterSql UTF8String], NULL, NULL, NULL) == SQLITE_OK) {
        NSLog(@"添加字段成功");
    } else {
        NSLog(@"添加字段失败");
    }

 

帮助文档:http://www.w3school.com.cn/sql/sql_wildcards.asp

 

posted @ 2019-05-07 23:38 健泽 阅读( ...) 评论( ...) 编辑 收藏
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值