IOS之sqlite3基本用法详解
2015-11-12 11:06
423 查看
1、XCode中添加sqlite
首先,选中工程名:
点击 Build Phases 如图:
点击 Link Binary With Libraries (0 items) 如图:
点击 + 号 添加库文件,如图:
在serach中输入sql 如图:
选中第一个 如图:
点击add添加,如图:
此时,库文件添加成功,我们只需要在程序中引入头文件就可以使用sqlite3了
2、sqlite的使用:
(1)、创建数据库,并且打开它,建一个学生表,代码:
执行完成后输出:
进入Documents文件夹,打开test.sqlite文件,表结构如图:
(2)、插入数据
代码:
test.sqlite中student表数据如图:
两种方式都可以插入数据。
(3)、更新数据:
数据更新如图,可跟上图进行对比:
(4)、删除数据
删除后数据如图:
(5)、查询数据:
查询结果:
首先,选中工程名:
点击 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/Documents 2015-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.000000 2015-11-12 11:02:44.223 04-sqlite3[1403:33735] dzl2 25 97.000000 2015-11-12 11:02:44.224 04-sqlite3[1403:33735] dzl2 25 97.000000 2015-11-12 11:02:44.225 04-sqlite3[1403:33735] dzl1 22 98.000000
相关文章推荐
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 不可修补的 iOS 漏洞可能导致 iPhone 4s 到 iPhone X 永久越狱
- iOS 12.4 系统遭黑客破解,漏洞危及数百万用户
- 每日安全资讯:NSO,一家专业入侵 iPhone 的神秘公司
- [转][源代码]Comex公布JailbreakMe 3.0源代码
- 初识SQLITE3数据库
- 将 Ghost 从 SQLite3 数据库迁移到 MySQL 数据库
- SQLite3 命令行操作指南
- 讲解iOS开发中基本的定位功能实现
- js判断客户端是iOS还是Android等移动终端的方法
- IOS开发环境windows化攻略
- 检测iOS设备是否越狱的方法
- SQLITE3 使用总结
- SQLite3中自增主键相关知识总结
- .net平台推送ios消息的实现方法
- ubuntu下使用SQLite3的基本命令
- Android SQLite3多线程操作问题研究总结
- 探讨Android与iOS,我们将何去何从?