sqlite3

A collection of 3 posts

iBooks

iBooks 数据库设计分析

很久以前还吐槽过 iBooks 的数据库表设计特别鬼畜,实际上后来我发现我错了。为什么错了呢?但是我为了研究如何自定义 iBooks 丛书集的时候[1],用 SQLite 的方式打开的数据库文件,导致我看到了一堆大写字母拼写成的数据项名字。而实际上正确的打开方式是用 Xcode 的 Core Data 组件打开。 获取数据库 Schema 我们可以通过「显示包内容」的方式进入到 iBooks 软件的内部文件夹,查找拿到编译过的数据库 Schema 文件(.mom)。或者直接在命令行输入 cd /Applications/iBooks.app/Contents。 或者也可以使用 Core Data Editor[2] 这个软件来找我们需要的数据库表设定信息。 然后新建一个 Xcode

iBooks

iBooks 自定义丛书集

前段时间 iBooks Store 还没被和谐的时候,从商店里下载一些套装书,书架上是以丛书系列的方式显示的,但是如果是自己手动添加的电子书,会发现 iBooks 并不能识别 metadata,于是网上搜索了一下相关资料,找到了一份 15 年网友给的回答[1]。大致情况就是:如果要自己手动添加几本书到一个 series 里,需要自己修改数据库,而且还不能通过 iCloud 同步到手机平板上去,也就是说就算手动修改成功,也只有在 macOS 上的 iBooks 有丛书显示效果。 这里大致翻译整理一下基本过程(以《来自新世界》上下册为例): 测试环境:macOS 10.12.3 (16D32)、iBooks 1.8 (1261.

JSON

JSON String 直接存取 SQLite3 的方法

最近在写的 Node.js App 的时候,需要直接将 对象 直接存入数据库,如果使用 JSON.stringify(json) 把 JSON 对象转换为字符串直接存入,会报错显示查询语句出错 var data = { name : "shin" } 存入 JSON String 的时候需要使用 escape() 进行转义序列编码,取出的时候需要使用 unescape() 进行转义序列解码 var sqlite3 = require("sqlite3").verbose(); var db = new sqlite3.Database(config.