【发布时间】:2018-02-07 23:54:18
【问题描述】:
SQLite 数据库包含一个带有 JSON 数据的列,如下所示:
MyTable
______________________________________
| specs | name | date
--------------------------------------
| ["foo","bar"] | Test01 | 2018-02-05
| ["foo","bar"] | Test02 | 2018-02-01
| ["foo"] | Test03 | 2018-02-03
伪代码:
private static SQLiteConnection _sqliteDb;
using (var source = new SQLiteConnection($"Data Source={databasePath};Version=3;"))
{
source.Open();
_sqliteDb = new SQLiteConnection("Data Source=:memory:");
_sqliteDb.Open();
// copy db file to memory
source.BackupDatabase(_sqliteDb, "main", "main", -1, null, 0);
source.Close();
}
var cmd = new SQLiteCommand(query, _sqliteDb);
为了过滤此列,查询如下所示:
var query = "SELECT * FROM MyTable, json_each(MyTable.specs) AS spec WHERE spec.value = 'bar'"
出现此错误:SQLite error (1): no such table: json_each
如何使用带有System.Data.SQLite.Core的json1扩展?
【问题讨论】:
-
您是否按照说明操作here?
-
是的,我的查询类似于 4.13.1 中的查询。使用 json_each() 的示例
-
specs是表名还是列名? (查询中缺少另一个。) -
是列名。我编辑了我的帖子。