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

C# Winform如何编程修改app.config中SQLite连接字符串并持久化?

解决方案

一、持久化修改connectionStrings配置

首先确保项目已添加System.Configuration程序集引用,仅导入命名空间无法调用完整的配置修改能力。
正确的持久化修改代码如下:

// 1. 打开当前应用的配置文件
Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);

// 2. 获取connectionStrings配置节点
ConnectionStringsSection connSection = config.ConnectionStrings;

// 3. 修改两个连接字符串配置
string newConnStrDefault = $"Data Source = {newDbPath};Version=3;foreign keys=true";
string newConnStrOff = $"Data Source = {newDbPath};Version=3";
connSection.ConnectionStrings["Default"].ConnectionString = newConnStrDefault;
connSection.ConnectionStrings["ConstraintsOff"].ConnectionString = newConnStrOff;

// 4. 保存修改
config.Save(ConfigurationSaveMode.Modified);

// 5. 刷新配置缓存,保证运行时后续读取的是最新值
ConfigurationManager.RefreshSection("connectionStrings");

注意:调试阶段VS会生成后缀为vshost.exe.config的临时配置文件,修改会写入这个文件而非项目根目录的app.config,正式发布后修改会直接写入应用同名的.exe.config文件,符合预期。

二、存储上次备份日期实现自动备份逻辑

第一步:修改app.config添加appSettings节点

在configuration节点下新增appSettings子节点:

<configuration>
    <!-- 原有connectionStrings、startup节点保留 -->
    <appSettings>
        <add key="LastBackupDate" value="2024-01-01" />
    </appSettings>
</configuration>

第二步:读取上次备份日期判断是否需要备份

DateTime lastBackupDate;
// 读取配置,若不存在则默认取30天前的日期,触发首次备份
if (!DateTime.TryParse(ConfigurationManager.AppSettings["LastBackupDate"], out lastBackupDate))
{
    lastBackupDate = DateTime.Now.AddDays(-30);
}

// 判断是否需要备份
if ((DateTime.Now - lastBackupDate).TotalDays >= 30)
{
    // 执行你已实现的备份逻辑
    // ...
    
    // 备份完成后更新配置中的日期
    UpdateLastBackupDate(DateTime.Now);
}

第三步:更新日期到配置文件持久化

public void UpdateLastBackupDate(DateTime backupDate)
{
    Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
    AppSettingsSection appSettings = config.AppSettings;
    appSettings.Settings["LastBackupDate"].Value = backupDate.ToString("yyyy-MM-dd");
    config.Save(ConfigurationSaveMode.Modified);
    ConfigurationManager.RefreshSection("appSettings");
}

注意事项

如果你的程序安装在系统盘的Program Files目录下,普通用户默认没有写入权限,会导致保存配置失败。这种情况建议将配置文件迁移到用户目录的AppData\Roaming路径下存储,或者给程序添加管理员运行权限。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 03:45:07