Files

31 lines
1.7 KiB
C#

using System;
namespace 成套报价软件
{
/// <summary>SQLite 连接字符串统一管理(A2,2026-10-01):全项目连接参数一处调整全局生效。
/// 此前 6 份重复定义(主窗口/菜单与库/调系数/甲方报表/Cad扒图/Pdf扒图)参数漂移——
/// 调系数与甲方报表是裸串(无 WAL/超时,并发易锁死),扒图窗口是有意关池(防句柄常驻)。
/// 现收敛为两个变体:各处私有 GetConnString 均转发到这里,调用方零改动。</summary>
public static class 数据库连接
{
/// <summary>标准连接串(主窗口/直写队列/重算/报表等主程序各模块用):
/// WAL+Normal 同步+连接池+5秒锁等待。项目库文件首开后即持久保持 WAL 模式,
/// 各连接串里是否声明 Journal Mode 只影响新库,对已建库无实际差异。</summary>
public static string 串(string dbPath)
{
// ★ BusyTimeout=5000(B4):直写队列/全库重算/扒图窗口并发访问同一库时,
// 遇锁默认 0 等待直接抛 database is locked;加超时后 SQLite 自动等待重试
return "Data Source=\"" + dbPath + "\";Version=3;Journal Mode=WAL;Synchronous=Normal;Pooling=True;BusyTimeout=5000;";
}
/// <summary>无池连接串(扒图窗口 Cad/Pdf Form3 专用):
/// ★ Pooling 关闭是该窗口的历史有意设计——避免连接池长期持有库文件句柄
/// (导出项目复制库/删库等文件操作不受池句柄干扰),收敛时保留该语义;
/// busy_timeout=3000:库被其他模块短暂占用时等待重试而非卡死。</summary>
public static string 串无池(string dbPath)
{
return "Data Source=" + dbPath + ";Version=3;busy_timeout=3000;";
}
}
}