我有一个旧的2005 VB.NET应用程序,需要为JSON函数进行Sqlite更新。
我已经下载并安装了“sqlite-netFx20-setup-bundle-x86-2005-1.0.109.0.exe”。我删除了旧版本的引用,并重新引用了这个新版本。我编译了一个程序运行 - 一切似乎都没问题。
使用JSON的在线示例,将以下代码放在TestButton后面: -
jsondb.SQL = "CREATE TABLE user (name, phone)"
ExecuteSQLiteCommand(jsondb)
jsondb.SQL = "INSERT INTO user (name, phone) values('oz', json('{""""cell"""":""""+491765"""", """"home"""":""""+498973""""}'))"
ExecuteSQLiteCommand(jsondb)
当执行“INSERT”时,我得到“找不到json函数”。
经过更多的研究,我发现我必须启用json扩展: -
mySQLdb.Connection.Open()
mySQLdb.Connection.EnableExtensions(True)
mySQLdb.Connection.LoadExtension("SQLite.Interop.dll", "sqlite3_json_init")
最初,.LoadExtension失败,因为找不到“SQLite.Interop.dll”模块。
我在“sqlite-netFx20-binary-Win32-2005-1.0.109.0.zip”中找到了该模块的副本,并将其复制到Sqlite安装目录中,并将.LoadExension方法更改为: -
mySQLdb.Connection.LoadExtension("C:\Program Files\System.Data.SQLite\2005\bin\SQLite.Interop.dll", "sqlite3_json_init")
现在.LoadExension方法引发异常“System.AccessViolationException”。
有谁知道如何解决这个问题?
提前致谢。
看来因为我有Sqlite Reference属性CopyLocal = true,所以System.Data.SQLite.dll和SQLite.Interop.dll的文件夹位置需要相同。
将.LoadExtension更改为: -
mySQLdb.Connection.LoadExtension(My.Application.Info.DirectoryPath & "\SQLite.Interop.dll", "sqlite3_json_init")
修正了这一点