我第一次使用这个 SQLite 版本:1.0.77.0 (sqlite-netFx40-static-binary-bundle-Win32-2010-1.0.77.0) 一切正常。 将我的 System.Data.SQLite.dll 更新到版本 1.0.82.0 (sqlite-netFx40-static-binary-bundle-Win32-2010-1.0.82.0) 后,我现在收到:
无法打开数据库。连接字符串:'datetimeformat=ISO8601;synchronous=Off;uri="file://C:/Users/username/Documents/data/test.db";version=3;journal mode=Truncate;default isolationlevel=ReadCommitted;pooling =真';错误:'System.InvalidOperationException:无效的连接字符串:无效的 URI
我也试过 file:///而不是 file://但没有任何运气。
谁能告诉我我的 URI 有什么问题,为什么它在 v1.0.82.0 中不再工作但在 v1.0.77.0 中工作?
http://system.data.sqlite.org/index.html/doc/trunk/www/downloads.wiki (1.0.82.0 == 3.7.14)
最佳答案
获得正确连接字符串的最佳方法是始终使用 SQLiteConnectionStringBuilder
类来生成它们。
SQLiteConnectionStringBuilder conn_builder = new SQLiteConnectionStringBuilder
{
DateTimeFormat = SQLiteDateFormats.ISO8601,
SyncMode = SynchronizationModes.Off,
Version = 3,
JournalMode = SQLiteJournalModeEnum.Truncate,
DefaultIsolationLevel = System.Data.IsolationLevel.ReadCommitted,
Pooling = true,
Uri = new Uri(@"c:\tmp\db.sqlite").AbsoluteUri
};
string conn_str = conn_builder.ConnectionString;
如果 Uri
不起作用,请尝试设置 DataSource
(如果您使用的是本地文件)。
快速检查显示 DataSource
在 SQLiteConnection.cs 中的 Uri
之前计算。并优先于它,因此如果 Uri
处理中存在错误,使用 DataSource 可能有助于绕过它。
关于c# - 更新 System.Data.SQLite.dll 后 SQLite 无效的 URI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12741186/