首页 > 解决方案 > 无法在c#中的网络目录上打开SQLiteConnection

问题描述

使用 C#、.Net 框架 4.8、SQLite 1.0.115

我正在使用 System.Data.SQLite.SQLiteConnection 在网络驱动器上打开一个 sqllite 数据库。但它因“无法打开数据库文件”而失败。在调试它时,我发现它总是指向本地驱动器而不是网络。示例:我在连接字符串中提供了“\\NW\test\DB\test.sqlite”作为数据源。但是当我看到一个异常时,它说在“C:\NW\test\DB\test.sqlite”中找不到文件。我的程序在 C: 驱动器上运行。

private SQLiteConnection _connection;
var builder = new SQLiteConnectionStringBuilder
            {
                DataSource = "\\\\NW\\test\\DB\\test.sqlite",
                Version = 3,
                ForeignKeys = true,
            };
var connectionString = builder.ConnectionString;
            

if (_connection == null)
{
    _connection = CreateConnection(connectionString );
    _connection.Open();
}

return _connection.BeginTransaction(isolationLevel);

在连接打开时,我收到此异常

SQLite 错误 (14): os_win.c:47688: (3) winOpen(C:\NW\test\DB\test.sqlite) - 系统找不到指定的路径。

有谁知道为什么它指向本地驱动器而不是网络?

标签: c#.netsqlitenetworking

解决方案


通过多次试验和错误,此更改解决了问题

private SQLiteConnection _connection;
var builder = new SQLiteConnectionStringBuilder
        {
            DataSource = @"\\\\NW\\test\\DB\\test.sqlite",
            Version = 3,
            ForeignKeys = true,
        };
var connectionString = builder.ConnectionString;
        

if (_connection == null)
{
    _connection = CreateConnection(connectionString );
    _connection.Open();
}

return _connection.BeginTransaction(isolationLevel);

因此,在数据源中它需要"\\\\\\\\NW\\test\\DB\\test.sqlite"路径。不知道为什么有这么多反斜杠,但这解决了问题。


推荐阅读