- 内容简介
- 译者序
- 前言
- 第 1 章 安装配置新项目
- 第 2 章 Flexbox 布局介绍
- 第 3 章 用 React Native 开发一个应用
- 第 4 章 在 React Native 中使用导航
- 第 5 章 动画和滑动菜单
- 第 6 章 用 React Native 绘制 Canvas
- 第 7 章 使用 React Native 播放音频
- 第 8 章 你的第一个自定义视图
- 第 9 章 Flux 介绍
- 第 10 章 处理复杂的应用程序状态
- 第 11 章 使用 Node 来实现服务端 API
- 第 12 章 在 React Native 中使用文件上传
- 第 13 章 理解 JavaScript Promise
- 第 14 章 fetch 简介
- 第 15 章 在 iOS 中使用 SQLite
- 第 16 章 集成 Google Admob
- 第 17 章 React Native 组件国际化
- 附录 A React.js 快速介绍
- 附录 B Objective-C Primer
- 附录 C webpack 入门
创建并打开数据库
在使用 SQLite3 之前,必须要先打开数据库。使用 sqlite3_open() 方法可以打开一个已存在的数据库。如果在当前位置没有任何数据库,那么就会自动创建一个。使用下面的代码可以打开一个数据库:
sqlite3 *database; int result = sqlite3_open("/path/to/database/file", &database);
如果 result 与常量 SQLITE_OK 的值相等,那么说明数据库已经被成功打开了。注意,数据库文件的路径一定要使用 C 语言的字符串,而不能传递一个 NSString。因为 SQLite3 是用 C 语言写的,它根本无法处理 Objective-C 中的 NSString 类型。不过幸运的是,有个方法可以将 NSString 类型的实例转换成 C 语言的字符串:
const char *stringPath = [pathString UTF8String];
在 SQLite3 数据库上操作完毕后,记得关闭数据库:
sqlite3_close(database);
数据库中的所有数据都存储在数据表中。你可以通过写一个 SQL 的 CREATE 语句来创建一个新表,但是需要使用 sqlite3_exec 方法来执行。代码如下:
char *errorMsg; const char *createSQL = "CREATE TABLE IF NOT EXISTS PEOPLE(ID INTEGER PRIMARY KEY AUTOINCREMENT, FIELD_DATA TEXT)"; int result = sqlite3_exec(database, createSQL, NULL, NULL, & errorMsg);
如上文那样,我们依然需要检查 result 的值来判断命令是否成功执行。如果没有执行成功,会抛出一个包含错误描述信息的 errorMsg。在 SQLite3 中,方法 sqlite3_exec 可以用来执行任何不返回结果集的命令,如 update、insert 和 delete 命令。如果要从数据库中返回检索结果,操作步骤要稍微复杂些。首先,我们需要准备好检索命令字符串,如下面的执行 SQL SELECT 命令:
NSString *query = @"SELECT ID, FIELD_DATA FROM FIELDS ORDER BY ROW ";
sqlite3_stmt *statement; int result = sqlite3_prepare_v2(database, [query UTF8String], -1, &statement, nil);
如果 result 与 SQLITE_OK 值相等,说明查询已经准备就绪,现在可以遍历结果集了。下面的代码展示了如何遍历结果集,并从每条记录中分别获取一个 int 类型和一个 NSString 类型的数据:
while (sqlite3_step(statement) == SQLITE_ROW) { int rowNum = sqlite3_column_int(statement, 0); char *rowData = (char *)sqlite3_column_text(statement, 1); NSString *fieldValue = [[NSString alloc] initWithUTF8String: rowData]; // 数据的后续操作 } sqlite3_finalize(statement);
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论