A2:连接字符串统一收敛(6份+导入报价裸串→数据库连接.串/串无池,调系数/甲方报表/导入报价由裸串升级WAL+超时); A1:OCR/PDF基础设施链接共享(pdfbt链接主项目扒图源11文件,删10个旧副本,pdfbt获得ocr.cls方向纠正等修复); 双项目编译零警告通过,扒图护栏PASS
This commit is contained in:
@@ -0,0 +1,30 @@
|
||||
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;";
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user