IOS之sqlite3基本用法详解
来源:互联网 发布:网络调研的方法有哪些 编辑:程序博客网 时间:2024/05/16 08:42
1、XCode中添加sqlite
首先,选中工程名:
点击 Build Phases 如图:
点击 Link Binary With Libraries (0 items) 如图:
点击 + 号 添加库文件,如图:
在serach中输入sql 如图:
选中第一个 如图:
点击add添加,如图:
此时,库文件添加成功,我们只需要在程序中引入头文件就可以使用sqlite3了
2、sqlite的使用:
(1)、创建数据库,并且打开它,建一个学生表,代码:
- (void) openDB { NSArray * paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString * pathDB = [paths objectAtIndex:0]; NSLog(@"sqlite path is -> %@", pathDB); NSString * fileDB = [pathDB stringByAppendingPathComponent:@"test.sqlite"]; int result = sqlite3_open(fileDB.UTF8String, &(_db)); if (result == SQLITE_OK) { NSLog(@"打开或创建数据库成功"); // 创建表 /* 第一个参数: 需要执行SQL语句的数据库对象 第二个参数: 需要执行的SQL语句 第三个参数: 回调函数 第四个参数: 第三个参数的参数 第五个参数: 接收错误信息 */ // 创建表的sql语句 NSString *sql = @"CREATE TABLE IF NOT EXISTS student (id INTEGER PRIMARY KEY AUTOINCREMENT , name TEXT, age INTEGER, score REAL)"; char * errorMsg; result = sqlite3_exec(_db, sql.UTF8String, NULL, NULL, &errorMsg); if (result == SQLITE_OK) { NSLog(@"创建表成功"); }else { NSLog(@"创建表失败, %s", errorMsg); } } }
执行完成后输出:
2015-11-12 10:33:19.328 04-sqlite3[1090:22455] sqlite path is -> /Users/***/Library/Developer/CoreSimulator/Devices/58F6F41B-FDB0-476B-81A3-10BF288CC809/data/Containers/Data/Application/3926F68D-C9C9-41C4-BD68-94AD91934E38/Documents2015-11-12 10:33:19.329 04-sqlite3[1090:22455] 打开或创建数据库成功2015-11-12 10:33:19.332 04-sqlite3[1090:22455] 创建表成功
进入Documents文件夹,打开test.sqlite文件,表结构如图:
(2)、插入数据
代码:
- (void) insertData { NSString * sql = @"INSERT INTO student(age, score, name) VALUES ('25', 97, 'dzl2')"; int result = sqlite3_exec(_db, sql.UTF8String, NULL, NULL, NULL); if (result == SQLITE_OK) { NSLog(@"插入成功"); } NSString * sql1 = [NSString stringWithFormat:@"INSERT INTO '%@' ('%@', '%@', '%@') VALUES('%@', '%@', '%@')", @"student", @"name", @"age", @"score", @"dzl1", @"22",@"98.00"]; char * errorMsg; int result1 = sqlite3_exec(_db, sql1.UTF8String, NULL, NULL, &errorMsg); if (result1 == SQLITE_OK) { NSLog(@"插入成功1"); }else{ NSLog(@"%i - %s", result1, errorMsg); }}
test.sqlite中student表数据如图:
两种方式都可以插入数据。
(3)、更新数据:
- (void) updateData { NSString *sql = @"UPDATE student SET name = 'dzlllll' WHERE id = '1' "; int result = sqlite3_exec(_db, sql.UTF8String, NULL, NULL, NULL); if (result == SQLITE_OK) { NSLog(@"修改成功"); }}
数据更新如图,可跟上图进行对比:
(4)、删除数据
- (void) deleteData { NSString *sql = @"DELETE FROM student WHERE id = 2"; int result = sqlite3_exec(_db, sql.UTF8String, NULL, NULL, NULL); if (result == SQLITE_OK) { NSLog(@"删除成功"); }}
删除后数据如图:
(5)、查询数据:
- (void) queryData { NSString *sql = @"SELECT * FROM student"; sqlite3_stmt *stemt = NULL; /* 第一个参数:需要执行SQL语句的数据库 第二个参数:需要执行的SQL语句 第三个参数: 告诉系统SQL语句的长度, 如果传入一个小于0的数, 系统会自动计算 第四个参数:结果集, 里面存放所有查询到的数据(不严谨) */ sqlite3_prepare_v2(_db, sql.UTF8String, -1, &stemt, NULL); // 判断有没有查询结果 while (sqlite3_step(stemt) == SQLITE_ROW) { // 取出第一个字段的查询得结果 const unsigned char *name = sqlite3_column_text(stemt, 1); // 取出第一个字段的查询得结果 int age = sqlite3_column_int(stemt, 2); // 取出第一个字段的查询得结果 double score = sqlite3_column_double(stemt, 3); NSLog(@"%s %d %f", name, age, score); } }
查询结果:
2015-11-12 11:02:44.223 04-sqlite3[1403:33735] dzlllll 25 97.0000002015-11-12 11:02:44.223 04-sqlite3[1403:33735] dzl2 25 97.0000002015-11-12 11:02:44.224 04-sqlite3[1403:33735] dzl2 25 97.0000002015-11-12 11:02:44.225 04-sqlite3[1403:33735] dzl1 22 98.000000
0 0
- IOS之sqlite3基本用法详解
- sqlite3的基本用法
- sqlite3基本用法
- sqlite3的基本用法
- sqlite3用法详解草稿
- sqlite3用法详解草稿
- sqlite3用法详解
- sqlite3用法详解
- sqlite3用法详解
- IOS线程数据篇11之Sqlite3的基本操作
- iOS之tableView基本用法
- iOS之Scanner基本用法
- IOS之【sqlite3数据库】
- iOS之Sqlite3编程
- iOS之Sqlite3封装
- Android之SQLite3详解
- iOS 基本对象的用法详解(转载)
- iOS NSScanner类的基本用法详解
- linux select poll epoll的区别
- 自定义信号槽
- To connect to XXX, use ‘--no-check-certificate’.
- 【Java】利用String的compareTo比较两个时期字符串
- 数据挖掘之社交网络 DFS和BFS算法
- IOS之sqlite3基本用法详解
- Linux基于heartbeat配置httpd高可用服务
- CentOS 无法执行ftp指令
- 实况球员综合能力大比拼
- android 各个版本对应的api等级
- Idea 使用中碰到的问题
- STM32的GPIO口的8种配置模式
- Android安装应用程序出现“INSTALL_FAILED_CONTAINER_ERROR
- sql面试题