App.config 是 .NET 應用程式的標準 XML 設定檔,編譯後會自動複製為 YourApp.exe.config 置於輸出目錄。優點:
ConfigurationManager 提供型別安全存取。App.config,點選 加入。<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<connectionStrings>
<!-- name 為邏輯名稱,connectionString 為實際連線字串 -->
<add name="SQLConnString"
connectionString="server=.;database=MyDatabase;uid=sa;pwd=123456"
providerName="System.Data.SqlClient" />
<!-- 可加入多組 -->
<add name="OracleConn"
connectionString="Data Source=ORCL;User Id=scott;Password=tiger;"
providerName="System.Data.OracleClient" />
</connectionStrings>
</configuration>
提示: server=. 或 server=(local) 皆代表本機預設實例;具名實例用 server=.\SQLEXPRESS。
程式碼頂端加入:
using System.Configuration;
string connStr = ConfigurationManager.ConnectionStrings["SQLConnString"].ConnectionString;
using (var conn = new SqlConnection(connStr))
{
conn.Open();
// 執行命令...
using (var cmd = new SqlCommand("SELECT GETDATE()", conn))
{
Console.WriteLine($"DB 時間: {cmd.ExecuteScalar()}");
}
}
| 現象 | 原因 | 解決 |
|---|---|---|
| ConnectionStrings 為 null 或計數為 0 | 未加入 System.Configuration 參考 | 加入參考並確認 using |
| 找不到指定 name | 拼字錯誤、大小寫不符、設定檔未複製到輸出目錄 | 檢查 bin/Debug/YourApp.exe.config 內容 |
| 連線失敗 | 連線字串格式錯誤、伺服器不可達、認證錯誤 | 用 SSMS 測試連線,再複製可用字串到 config |
var config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
config.ConnectionStrings.ConnectionStrings["SQLConnString"].ConnectionString = newConnStr;
config.Save(ConfigurationSaveMode.Modified);
ConfigurationManager.RefreshSection("connectionStrings");
警告: 這會修改 .exe.config 檔案,需寫入權限;正式環境建議改用 appsettings.json (.NET Core) 或 Azure Key Vault 等更安全方案。
原文連結:https://www.bianceng.cn/Programming/csharp/201410/45746.htm