首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

C# 實現資料庫連線字串動態配置:讓軟體部署到客戶端自適應

     編輯:程式設計綜合問答

問題本質

開發環境用自己的 SQL Server,客戶環境 IP、實例名、資料庫名、帳密全不同。硬編碼連線字串會導致部署即報錯。

標準解決方案:外部配置 + 運行時構建

1. 使用 app.config / user.config 存儲參數

<!-- app.config -->
<connectionStrings>
  <add name="DefaultConn" connectionString="" />
</connectionStrings>
<appSettings>
  <add key="DbServer" value="." />
  <add key="DbName" value="MyDB" />
  <add key="DbUser" value="sa" />
  <add key="DbPwd" value="" />
  <add key="UseIntegratedSecurity" value="false" />
</appSettings>

2. 運行時動態構建連線字串

using System.Configuration;
using System.Data.SqlClient;

public string BuildConnectionString() {
  var builder = new SqlConnectionStringBuilder {
    DataSource = ConfigurationManager.AppSettings["DbServer"],
    InitialCatalog = ConfigurationManager.AppSettings["DbName"],
    IntegratedSecurity = bool.Parse(ConfigurationManager.AppSettings["UseIntegratedSecurity"])
  };
  if (!builder.IntegratedSecurity) {
    builder.UserID = ConfigurationManager.AppSettings["DbUser"];
    builder.Password = ConfigurationManager.AppSettings["DbPwd"]; // 生產環境建議加密存儲
  }
  return builder.ConnectionString;
}

3. 提供「資料庫設定」視窗

WinForms/WPF 中做一個簡單的設定對話框,包含:

  • 服務器 IP/實例名(文本框)
  • 資料庫名(下拉框:連接 master 後查詢 sys.databases 動態獲取)
  • 認證方式:Windows 驗證 / SQL Server 驗證(單選)
  • 用戶名/密碼(SQL 驗證時啟用)
  • 「測試連接」按鈕(實際打開連接驗證)
  • 「保存」按鈕(寫入 config,加密密碼)

4. 密碼加密存儲

// 簡單示例:使用 DPAPI (ProtectedData) 加密
byte[] entropy = Encoding.UTF8.GetBytes("MyApp_Salt");
byte[] plain = Encoding.UTF8.GetBytes(password);
byte[] encrypted = ProtectedData.Protect(plain, entropy, DataProtectionScope.CurrentUser);
string cipherText = Convert.ToBase64String(encrypted); // 存入 config

// 解密
byte[] cipher = Convert.FromBase64String(cipherText);
byte[] decrypted = ProtectedData.Unprotect(cipher, entropy, DataProtectionScope.CurrentUser);
password = Encoding.UTF8.GetString(decrypted);

部署清單

  1. 隨程序發布 AppName.exe.config
  2. 首次運行引導用戶完成資料庫設定
  3. 若用 ClickOnce 部署,配置文件會自動遷移到用戶目錄
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved