You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#使用UNC路径打开局域网共享SQLite3数据库失败问题求助

解决方案

根因说明

你遇到的路径解析错误本质是System.Data.SQLite驱动默认的路径处理逻辑,会将开头不带盘符的UNC路径误识别为相对路径,自动拼接程序运行所在盘符的根目录,最终生成错误的本地路径。

可行修复方案

方案1:在连接字符串新增UseUri=true参数(优先选择)

该参数会强制驱动启用URI路径解析逻辑,可正确识别UNC路径,无需修改原有路径生成代码,示例代码如下:

// 拼接UNC路径(你的原有代码无需修改)
string dbPath = Path.Combine(@"\\OAK\OCH-POS\", @"testing.db");
// 连接字符串新增UseUri=true参数
string connectionString = $"Data Source={dbPath};Version=3;UseUri=true;";

using(SQLiteConnection conn = new SQLiteConnection(connectionString))
{
    conn.Open();
    // 原有查询逻辑保持不变
}

方案2:将UNC路径转换为文件URI格式(适配旧版本驱动)

如果你使用的System.Data.SQLite版本低于1.0.94.0(不支持UseUri参数),可以将UNC路径转换为标准文件URI格式传入:

// 转换UNC路径为文件URI
string dbPath = new Uri(@"\\OAK\OCH-POS\testing.db").AbsoluteUri;
string connectionString = $"Data Source={dbPath};Version=3;";

注意事项

  • 运行程序的Windows账号必须拥有目标共享目录的读写权限,SQLite打开数据库时需要创建临时WAL日志、锁文件,仅读权限会导致打开失败
  • 不建议在高并发场景下使用网络共享路径存放SQLite数据库,网络文件系统的锁机制可靠性较差,极易出现数据损坏,仅适合低频单客户端读取场景
  • 不要在Path.Combine拼接的子路径前加反斜杠,否则会覆盖父路径导致拼接错误

内容的提问来源于stack exchange,提问作者SqueezeOJ

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 04:12:02