SQLite数据库文件放置在网络文件夹中时无法打开

4uqofj5v  于 2023-01-31  发布在  SQLite
关注(0)|答案(2)|浏览(312)

有没有人能帮我弄明白为什么这个工作得很好...

Dim cs = "Data Source=C:\folder\Livros.sdb;Version=3;"
Dim cn = New System.Data.SQLite.SQLiteConnection(cs)
cn.Open() ' no exception

...而打开连接时此文件会断开(它是完全相同的文件)...

Dim cs = "Data Source=\\NetworkServer\folder\Livros.sdb;Version=3;"
Dim cn = New System.Data.SQLite.SQLiteConnection(cs)
cn.Open() ' exception: {"unable to open database file"}

...并修复它,因为我需要将数据库文件放在网络位置,以便无论在哪台计算机上运行应用程序都可以访问它?
非常感谢!

q43xntqr

q43xntqr1#

好了,通过反复试验,我找到了解决方案,尽管我不太明白它起作用的原因:

Dim cs = "Data Source=\\NetworkServer\folder\Livros.sdb;Version=3;"
Dim cn = New System.Data.SQLite.SQLiteConnection(cs)
cn.ParseViaFramework = True ' JUST ADDED THIS STATEMENT
cn.Open() ' no exception

如果有人能解释为什么.ParseViaFramework = True能做到这一点,请随时发表评论。

omvjsjqw

omvjsjqw2#

这里也提出了类似的问题。
SQLite: Cannot open network file programmatically, even though worked before
最上面的答案给出了更多的修复。链接到这里,因为这是我搜索时出现的第一个堆栈溢出。另外,我使用的是SQLiteConnectionStringBuilder,无法找到设置parseViaFramework的方法,所以第一个解决方案是我需要的。
1.将文件名中的前两个反斜杠加倍(例如“\\network\share\file.db”)。
1.使用Map的驱动器号。
1.使用接受parseViaFramework布尔参数的SQLiteConnection构造函数,并为该参数传递“true”。

相关问题