博客> ios sqlite 数据库简单用法
ios sqlite 数据库简单用法
2017-08-21 14:12 评论:0 阅读:147 可爱的单身狗
ios sqlite

ios sqlite 数据库的简单用法

工程地址(https://github.com/LovelySingleDog/ASimpleSqliteDatabaseProject.git)

导入sqlite库 Build Phases -> Link Binary With Libraries 点击+号 输入 sqlite查询sqlite库 并添加

sqlite数据库中的数据类型 数据类型 blob(二进制) integer(整形) real(浮点型) text(文本类型)

常用的sqlite语句

//创建表 table CREATE TABLE IF NOT EXISTS 表名称 (参数 参数类型, 参数 参数类型 ...)

//添加数据 INSERT INTO 表名 (参数,参数,参数) VALUES (值,值,值); 注意: 如果值的类型是text类型 那么要将值用单引号括起来 比如 : '值'

//查询数据 SELECT 参数名称 FROM 表名 如果 参数名是 * 则代表查询所有的数据

//更新数据 UPDATE 表名 SET 参数 = 新的值, 参数 = 新值 WHERE 参数 = 旧值 AND 参数 = 旧值 其中 AND 处也可以用 OR 当然意思就不同了 AND表示更新两个条件都满足的数据 OR表示满足其中一个条件就可以更新

//删除数据 DELETE FROM 表名 WHERE 参数 = 值 当然 条件可以是多个 例如 WHERE 参数 = 值 AND 参数 = 值

接下来就进入 实践了

为了方便使用sqlite 我将它封装成一个数据库类 DatabaseManger

这个类提供了 存储数据的 dataArray数组 以及 插入 删除 更新数据 三个方法

要操作数据库 就要拿到数据库柄 其实也就是指向数据库的一个指针 //数据库柄 sqlite3 *db;

接下来就要为数据库创建一个数据库路径 这里我将它写成了一个方法 方便以后调用 //创建沙盒路径

  • (NSString )databasePath{ NSString path = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject]; path = [path stringByAppendingString:@"database.sqlite"]; return path; }

在操作数据库的时候 都要先 打开数据库 等该项操作结束后 就要关闭数据库 因此为了方便的开启和关闭数据库 这里我也将其写成方法 //打开数据库

  • (void)openDatabase{ int resutlt = sqlite3_open([self databasePath].UTF8String, &db);//这里的db是数据库柄 if (resutlt == SQLITE_OK){

    }else{ NSLog(@"打开数据库失败"); } } //关闭数据库

  • (void)closeDatabase{ int result = sqlite3_close(db); if (result == SQLITE_OK){

    }else{ NSLog(@"关闭数据库失败"); } }

sqlite3_open() sqlite3_close() 等sqlite提供的c语言函数 会有一个 int 类型的返回值 ,当该值==SQLITE_OK 就说明执行该操作成功 否则就失败

现在准备工作基本完成了,接下来该创建表了

注意: 在操作数据库的时候 一定要先打开数据库 结束后再关闭数据库 //创建表

  • (void)createTable{ //打开数据库 [self openDatabase];

    NSString sql = [[NSString alloc] initWithFormat:@"CREATE TABLE IF NOT EXISTS %@ (ID INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,%@ TEXT,%@ TEXT)",TABLE_NAME,NAME,PHONE]; //存储错误信息 char error;

    int result = sqlite3_exec(db, sql.UTF8String, NULL, NULL, &error); if (result == SQLITE_OK){

    }else{ NSLog(@"创建表失败%s",error); }

//关闭数据库 [self closeDatabase]; }

//为了方便以后的修改 以及 外部能比较清楚的看到数据库的内容 我将这些参数写成了全局变量的形式

//数据库表的名称 extern NSString const TABLE_NAME; //字段名称 extern NSString const NAME;//姓名 extern NSString * const PHONE;//电话

以后的插入 删除 更新 数据 都是用的 sqlite3_exec() 函数 区别就在于 sqlite语句的不同 sqlite3_exec(<#sqlite3 #>, <#const char sql#>, <#int (callback)(void , int, char , char )#>, <#void *#>, <#char **errmsg#>) 这个函数 需要的参数为: 数据库柄 sqlite字符串(c语言类型的字符串) 函数指针(一般为NULL) void类型的指针(一般为NULL) 存储错误信息的指针的地址

数据库查询相较于上述几个是比较特殊的 查询数据库 首先用到了下面这个指针 sqlite3_stmt * stmt;//查询数据的陈述 相当于指向数据表的第几行

//准备查询数据 int result = sqlite3_prepare_v2(db, sql.UTF8String, -1, &stmt, NULL);

//查询数据 while (sqlite3_step(stmt) == SQLITE_ROW) { //在这里实现一些代码 }

sqlite3_step(stmt) == SQLITE_ROW 这就类似于逐行查询 不相等的时候 就表名数据库已经全部查完了

//在while 循环内拿到数据 const unsigned char *cName = sqlite3_column_text(stmt, 1); //stmt 就是 所谓的陈述 1就是创建表时对应的第几个(从0开始) 参数 我这里name对应的是第2个参数 因为是从0开始的,所以这里就写1

//查询的时候 一定要注意: //释放陈述才能成功关闭数据库 ,否则有可能影响到后续的操作 sqlite3_finalize(stmt);

 首页.png

 展示页数据.png

 修改数据页.png

以上就是简单的数据库的用法 看再多不如动手敲一遍 再次附上工程地址

(https://github.com/LovelySingleDog/ASimpleSqliteDatabaseProject.git)

收藏
0
sina weixin mail 回到顶部