sqlite3数据库操作

在iOS中使用SQLite3首先要添加库文件libsqlite3.dylib并引入头文件
1、打开数据库sqlite3_open(<#const char *filename#>, <#sqlite3 **ppDb#>)
(1)作用:把一个文件名称传递给他,它会自动检测这个文件是否存在,如果不存在的话,会自动创建相应的文件(这里为数据库文件,刚创建为空)。
(2)参数:它的第一个参数为文件的名称(需转换为C语言的),第二个参数是数据库的实例,sqlite3 *db;
说明:sqlite3是一种类型,db是数据库的句柄,就是数据库的象征,如果要进行增删改查,就得操作db这个实例。
(3)返回值:它的返回值为int型的,根据函数的返回值可以知道,打开数据库文件是成功还是失败,如果返回值是SQLITE_OK则说明成功,否则为失败。

//设置数据库路径

NSString *dbPath = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)lastObject] stringByAppendingString:@"/text.sqlite"];
if (sqlite3_open(dbPath.UTF8String, &_db) == SQLITE_OK) {
    NSLog(@"打开数据库成功");
    //打开数据库成功后创建一个表
    //操作命令的字符串
    //注意字符串的结束处有 ; 号
    NSString *newListSQL = @"create table if not exists t_text(id integer primary key autoincrement,name text);";
    char *errMsg;
    sqlite3_exec(_db, newListSQL.UTF8String, NULL, NULL, &errMsg);
    if (errMsg) {
        NSLog(@"建表失败 -- %s",errMsg);
    }else{
        NSLog(@"建表成功");
    }
}else{
    NSLog(@"打开数据库失败");
}
//2、增
NSString *addQSL = [NSString stringWithFormat:@"insert into t_text('%@') values('%@');",@"name",@"33"];
char *errMsg;
sqlite3_exec(_db, addQSL.UTF8String, NULL, NULL, &errMsg);
if (errMsg == SQLITE_OK) {
    NSLog(@"添加成功!");
}else{
    NSLog(@"添加失败!%s",errMsg);
}
//3、删
NSString *deleteSQL = [NSString stringWithFormat:@"delete from t_text where id == 2"];
sqlite3_exec(_db, deleteSQL.UTF8String, NULL, NULL, &errMsg);
if (errMsg == SQLITE_OK) {
    NSLog(@"删除成功!");
}else{
    NSLog(@"删除失败!%s",errMsg);
}
//4、改
NSString * updateSQL = @"update t_text set name = 'hello-world' where id = 1;";
sqlite3_exec(_db, updateSQL.UTF8String, NULL, NULL, &errMsg);
if (errMsg) {
    NSLog(@"修改失败--%s",errMsg);
}else{
    NSLog(@"修改成功");
}
//5、查
NSString * searchSQL = @"select * from t_text;";
//查询的句柄,游标
sqlite3_stmt * stmt;
if (sqlite3_prepare(_db, searchSQL.UTF8String, -1, &stmt, NULL) == SQLITE_OK) {
    //查询数据
    while (sqlite3_step(stmt) == SQLITE_ROW) {
        //获取表数据的内容
        //sqlite3_column_text('句柄',字段索引值)
        NSString * name = [NSString stringWithCString:(const char *)sqlite3_column_text(stmt, 1) encoding:NSUTF8StringEncoding];
        NSLog(@"name = %@",name);
    }
    
}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 使用的过程根据使用的函数大致分为如下几个过程: sqlite3_open() sqlite3_prepare() ...
    随风飘荡的小逗逼阅读 11,721评论 0 3
  • 什么是SQLite?数据库存储数据的步骤 ●SQLite是一款轻型的嵌入式数据库,它占用资源非常的低,在嵌入式设备...
    飞行的猫阅读 7,276评论 1 7
  • 国家电网公司企业标准(Q/GDW)- 面向对象的用电信息数据交换协议 - 报批稿:20170802 前言: 排版 ...
    庭说阅读 13,898评论 6 13
  • 一、数据库 在项目开发中,通常都需要对数据进行离线缓存的处理,如新闻数据的离线缓存等。离线缓存一般都是把数据保存到...
    CoderSC阅读 5,349评论 0 2
  • 走过百里路不敢 觉辛苦 苍山在望仍是远 观景途 辉映枝条随风摇 像招呼 你在远处仿眺望 抿唇笑 人来人往多殊途 不...
    意莫安阅读 1,352评论 0 0