我正在使用Room Persistence Library 1.1.0.我可以/data/data/<package_name>/databases/使用Android Studio的Device File Explorer 找到数据库文件.它包含多个表,我可以使用room-DAOs 访问该表的内容而没有任何问题.但是打开时sqlite-browser,显示没有表格.
可能是什么原因?是否有可能解决这个问题,而无需切换回旧SQLiteOpenHelper的/data/data/<package_name>/databases/?
sqlite android sqlite-browser android-room sqlite-journal-mode
我已经通过brew安装了带有JSON1的SQLite3:
brew install sqlite3 --with-json1 --with-fts5
Run Code Online (Sandbox Code Playgroud)
版本:
3.15.2 2016-11-28 19:13:37 bbd85d235f7037c6a033a9690534391ffeacecc8
Run Code Online (Sandbox Code Playgroud)
运行查询时,某些函数可以正常工作,例如json_extract:
sqlite> SELECT json_extract(Body, '$.issue.fields.labels') FROM Event WHERE json_extract(Body, '$.issue.fields.labels') != '[]';
["foo","bar","baz"]
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试使用json_eachor时json_tree,它失败了:
sqlite> SELECT json_each(Body, '$.issue.fields.labels') FROM Event WHERE json_extract(Body, '$.issue.fields.labels') != '[]';
Error: no such function: json_each
Run Code Online (Sandbox Code Playgroud)
Body表中的字段是Event有效的 JSON 字符串:
{"issue":{"fields":{"labels": ["foo","bar","baz"]}}}
Run Code Online (Sandbox Code Playgroud)
并且该labels值是一个数组。
我已阅读文档(并查看了json_each 示例),搜索了互联网,但找不到任何其他要求来启用此功能。
我做错了什么,或者:我如何从 json_each/json_tree 中获益?
默认情况下,用于 ubuntu 的 SQLite 浏览器包不附带 SQLCipher。
sudo add-apt-repository -y ppa:linuxgndu/sqlitebrowser
sudo apt-get update
sudo apt-get install sqlitebrowser
Run Code Online (Sandbox Code Playgroud)
如何启用它才能查看加密的数据库?
阅读https://sqlite.org/datatype3.html后,其中指出
“SQLite 没有专门用于存储日期和/或时间的存储类。”
但能够运行这个
CREATE TABLE User (ID INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, BORN_ON DATE NULL)
Run Code Online (Sandbox Code Playgroud)
然后在“DB Browser for SQL”中看到它,如下所示:
我开始怀疑 SQLite 是否确实支持 Date 类型,它只是“伪造”使用其他类型的支持。即使是这样,为什么数据库浏览器将其视为日期?数据库中存储有任何元信息吗?