首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> ASP.NET 基礎 >> ASP.NET 基礎

ADO.NET 資料庫連接字串完整速查:SQL Server、Oracle、Access、ODBC

     編輯:ASP.NET 基礎

前言

連接字串 是 ADO.NET 連接資料庫的鑰匙。不同資料庫提供者(Provider)、驗證方式、網路協定對應不同的連接字串格式。本文彙整四大主流資料庫的標準連接字串模板、參數說明與最佳實務,供開發快速查閱。

一、核心連接物件對應表

資料庫命名空間連接類別提供者名稱
SQL ServerSystem.Data.SqlClientSqlConnectionSystem.Data.SqlClient
OracleSystem.Data.OracleClientOracleConnectionSystem.Data.OracleClient
OLE DB (Access/舊版 SQL)System.Data.OleDbOleDbConnection依驅動而定
ODBCSystem.Data.OdbcOdbcConnection依驅動而定

二、標準連接範本

1. SQL Server (SqlConnection)


// 標準安全性 (Windows 驗證)
Server=myServerAddress;Database=myDataBase;Integrated Security=True;

// SQL Server 驗證
Server=myServerAddress;Database=myDataBase;User Id=myUsername;Password=myPassword;

// 指定埠號、連線逾時、應用程式名稱
Server=myServerAddress,1433;Database=myDataBase;User Id=myUsername;Password=myPassword;
Connection Timeout=30;Application Name=MyApp;

// 本地資料庫 (LocalDB / SQL Express)
Server=(localdb)\MSSQLLocalDB;Database=MyDB;Integrated Security=True;
Server=.\SQLEXPRESS;Database=MyDB;Integrated Security=True;

// Azure SQL Database
Server=tcp:myServer.database.windows.net,1433;Database=myDataBase;
User Id=myUser@myServer;Password=myPassword;Encrypt=True;TrustServerCertificate=False;
Connection Timeout=30;

2. Oracle (OracleConnection)


// 使用 TNSNAMES.ORA 別名
Data Source=MyOracleTNS;User Id=myUsername;Password=myPassword;

// 直接指定主機/埠/服務名 (Easy Connect)
Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=myHost)(PORT=1521))
    (CONNECT_DATA=(SERVICE_NAME=myService)));User Id=myUsername;Password=myPassword;

// 簡易 EZConnect 格式 (Oracle 10g+)
Data Source=myHost:1521/myService;User Id=myUsername;Password=myPassword;

// Windows 驗證 (需設定 sqlnet.ora)
Data Source=MyOracleTNS;Integrated Security=yes;

3. Access (OleDbConnection)


// Access 2007+ (.accdb) - ACE Provider
Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Data\MyDB.accdb;Persist Security Info=False;

// Access 2003 (.mdb) - Jet Provider
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Data\MyDB.mdb;User Id=admin;Password=myPassword;

// 獨佔模式、唯讀
Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Data\MyDB.accdb;Mode=Share Deny Write;
Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Data\MyDB.accdb;Mode=Read;

4. ODBC (OdbcConnection)


// SQL Server ODBC Driver
Driver={ODBC Driver 17 for SQL Server};Server=myServer;Database=myDB;Uid=myUser;Pwd=myPass;

// Oracle ODBC Driver
Driver={Oracle in OraClient12Home1};DBQ=myTNS;Uid=myUser;Pwd=myPass;

// Access ODBC
Driver={Microsoft Access Driver (*.mdb, *.accdb)};Dbq=C:\Data\MyDB.accdb;Uid=admin;Pwd=myPass;

// DSN (資料來源名稱) - 需預先在 ODBC 管理員設定
DSN=MyOracleDSN;Uid=myUser;Pwd=myPass;

三、通用連接字串參數速查

參數別名說明適用提供者
Server / Data Source / AddressAddr, Network Address伺服器位址、埠號、實例名SQL Server, Oracle, ODBC
Database / Initial Catalog資料庫名稱SQL Server
User Id / UIDUser, Username登入帳號全部
Password / PWDPwd登入密碼全部
Integrated Security / Trusted_ConnectionWindows 驗證SQL Server, Oracle
Connection Timeout / Connect Timeout連線逾時秒數 (預設 15-30)全部
Application Name / App應用程式名稱 (便於資料庫端識別)SQL Server, Oracle
Persist Security Info是否在連接物件保留密碼 (預設 false)OLE DB, ODBC
Encrypt強制 SSL/TLS 加密 (Azure SQL 必須 True)SQL Server
TrustServerCertificate信任伺服器憑證 (開發環境常設 True)SQL Server
MultipleActiveResultSets (MARS)單一連接支援多個作用中結果集SQL Server
Pooling連接池啟用 (預設 true)SQL Server, Oracle
Min Pool Size / Max Pool Size連接池大小限制SQL Server, Oracle

四、程式碼最佳實務模式

1. 連接字串外部化


<!-- Web.config / App.config -->
<connectionStrings>
  <add name="DefaultConnection" 
       connectionString="Server=.;Database=MyDB;Integrated Security=True;" 
       providerName="System.Data.SqlClient" />
  <add name="OracleConnection" 
       connectionString="Data Source=ORCL;User Id=app;Password=***;" 
       providerName="System.Data.OracleClient" />
</connectionStrings>

2. 使用 DbProviderFactory 達成提供者無關


public DbConnection CreateConnection(string connectionName)
{
    var cs = ConfigurationManager.ConnectionStrings[connectionName];
    var factory = DbProviderFactories.GetFactory(cs.ProviderName);
    var conn = factory.CreateConnection();
    conn.ConnectionString = cs.ConnectionString;
    return conn;
}

// 使用
using (var conn = CreateConnection("DefaultConnection"))
{
    conn.Open();
    // 執行命令...
}

3. 連接池正確使用模式


// 正確:using 區塊確保連接歸還池中
using (var conn = new SqlConnection(connStr))
{
    conn.Open();
    using (var cmd = conn.CreateCommand())
    {
        cmd.CommandText = "SELECT * FROM Users";
        using (var reader = cmd.ExecuteReader())
        {
            while (reader.Read()) { /* 處理 */ }
        }
    }
} // 連接自動關閉並歸還池中

// 錯誤:手動 Open/Close 易洩漏
var conn = new SqlConnection(connStr);
conn.Open();
// 發生例外時連接不會關閉
conn.Close();

4. 連接字串建構器 (防止注入、語法錯誤)


var builder = new SqlConnectionStringBuilder
{
    DataSource = @".\SQLEXPRESS",
    InitialCatalog = "MyDB",
    IntegratedSecurity = true,
    ConnectTimeout = 30,
    ApplicationName = "MyApp",
    MultipleActiveResultSets = true
};

string connStr = builder.ConnectionString;

五、常見連線問題排查

錯誤訊息可能原因解決方向
Login failed for user帳密錯誤、未授權資料庫檢查 SQL Server 登入、使用者對應、權限
Cannot open database requested資料庫不存在、名稱拼寫錯誤確認 Database/Initial Catalog 參數
Provider not registeredOLE DB/ODBC 驅動未安裝安裝 ACE/OLEDB/ODBC Driver
Network-related or instance-specific error伺服器不可達、防火牆、埠號錯誤測試連線、檢查 SQL Browser 服務、埠號 1433
Keyword not supported參數名稱拼寫錯誤、提供者不支援對照提供者支援參數表、使用 ConnectionStringBuilder
SSL Provider: certificate chain not trusted加密連線憑證不受信TrustServerCertificate=True 或安裝有效憑證

結語

連接字串看似簡單,實則關繫應用程式與資料庫的生命線。掌握各提供者標準格式、關鍵參數用途、外部化設定與連接池正確模式,能避免 80% 的連線問題。建議專案建立 ConnectionStrings.config 獨立管理、使用 DbProviderFactory 解耦提供者、善用 ConnectionStringBuilder 防錯,並將敏感資訊(密碼)透過 Azure Key Vault、環境變數或加密設定區段保護,而非硬編碼在原始碼中。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved