c# - 更新 System.Data.SQLite.dll 后 SQLite 无效的 URI

标签 c# sqlite system.data.sqlite

我第一次使用这个 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(如果您使用的是本地文件)。

快速检查显示 DataSourceSQLiteConnection.cs 中的 Uri 之前计算。并优先于它,因此如果 Uri 处理中存在错误,使用 DataSource 可能有助于绕过它。

关于c# - 更新 System.Data.SQLite.dll 后 SQLite 无效的 URI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12741186/

相关文章:

c# - 使用计时器/任务/后台 worker 的数据采集循环

sql - 将列中的列与 sqlite 中的串联值进行匹配

python - Django:Heroku sleep 后数据库突然重置

.net - SQLite 数据库大小太大

c# - System.Data.SQLite 不支持多事务

c# - KnockOut.js 与 Asp.net mvc

c# - Entity Framework ,防止重复记录,同时连接

javascript - 将值从 JQuery Datepicker 传递到代码隐藏

javascript - 使用 javascript、angular.js 和 sql.js,如何从 url 获取文件对象?

c# - 如何使用 ADO.NET 将 SQLite 内存数据库转储到文件中?