c# - 无法在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) - 系统找不到指定的路径。
有谁知道为什么它指向本地驱动器而不是网络?
解决方案
通过多次试验和错误,此更改解决了问题
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"
路径。不知道为什么有这么多反斜杠,但这解决了问题。
推荐阅读
- excel - 如何在 Excel 中创建日期范围的堆积条形图
- php - 如何进行多重身份验证:laravel 中的用户、管理员、卖家
- flutter - 键盘打开或关闭时 Flutter 页面重新加载
- css - Next.JS:使用全局 scss 中的 SASS 变量
- function - 为具有大量关键字参数的函数定义合约的更好方法
- vue.js - 在Vuex商店中刷新JWT令牌后使用Axios重试请求
- python - 为什么 Anaconda 会安装很多不必要的软件包?这是一个可以解决的设置问题,还是我没有正确理解 conda env?
- wordpress - 我们什么时候应该担心页面速度
- oracle - 为员工分配等级的 PL/SQL 程序
- php - 实现文件上传功能,无法返回使用csrf token提交