Home [ADO.NET] Connection 物件 (連線到 SQL Server)
Post
Cancel

[ADO.NET] Connection 物件 (連線到 SQL Server)

Connection物件是用來與特定的資料來源建立連接。負責與DB連接,開啟資料庫 (Open) 及關閉資料庫 (Close)。

引​入相關的資源

因為新建的項目並沒有各個資料庫的連線類別(資料庫驅動),需手動的安裝。

  • SQL Server資料庫: Microsoft.Data.SqlClient
  • Mysql資料庫:MySql.Data
  • Oracle資料庫:System.Data.OracleClient

在專案右鍵NuGet套件管理
(需要什麼包就去上面Down就行了)

MSDN

  • 請務必安裝 Microsoft.Data.SqlClient 而非 System.Data.SqlClient。
  • Microsoft.Data.SqlClient 是較新版本的 SQL 用戶端程式庫,可提供額外的功能。

NuGet 安裝套件

在專案右鍵NuGet套件管理

  1. 在 [方案總管] 視窗中,以滑鼠右鍵按一下專案的 [相依性] 節點,然後選取 [管理NuGet套件]。
  2. 在產生的視窗中,搜尋 SqlClient。 找出 Microsoft.Data.SqlClient 結果,然後選取 [安裝]。

連線字串

1
string connString = "Data Source=192.168.0.1;Initial catalog=DBTEST;User id=riva;Password=1234;Encrypt=true;Trust Server Certificate=True;"
1
2
3
"ConnectionStrings": {
  "DefaultConnection": "Data Source=192.168.0.1;Initial Catalog=TestDb;User ID=riva;Password=1234;Encrypt=true;Trust Server Certificate=True;"
}
  • Data Source:資料來源
    • 本機
      • .http://localhost127.0.0.1
    • SQL Server Express
      • .\SQLEXPRESS (本機\SQLEXPRESS)
      • Win11\SQLEXPRESS (電腦名稱\SQLEXPRESS)
    • SQL Server 2019
      • 192.168.0.1 (IP)

SQL 連線加密 & 加密憑證:

  • Encrypt:加密連線
    • SQL Server Management Studio(SSMS) > 登入頁面 > [選項] > 勾選 [加密連線]
    • 連線字串加上Encrypt=true;
  • Trust Server Certificate:信任伺服器憑證
    • SQL Server Management Studio(SSMS) > 登入頁面 > [選項] > 勾取 [信任伺服器憑證]
    • 連線字串加上 TrustServerCertificate=True;

SSMS 在登入時有兩個額外選項「Encrypt connection」 及「Trust server certificate」,勾選後便可使用 TLS 加密連線:

SQL Server 安裝時已預設支援加密連線,不需額外設定,但預設用的 TLS 憑證是自我簽署憑證(Self-Signed Certificate),故要勾選 Trust server certificate,否則會因無法驗證憑證有效性出現錯誤:

建立連線 (連線到 SQL Server)

如何建立及開啟與 SQL Server 資料庫的連接

1
2
3
4
5
6
// Assumes connectionString is a valid connection string.  
using (SqlConnection connection = new SqlConnection(connectionString))  
{  
    connection.Open();  
    // Do work here.  
}

範例

1
2
3
4
5
6
7
string connString = "Data Source=.;Initial catalog=DBTEST;User id=riva;Password=1234;Trust Server Certificate=True";

using (SqlConnection conn = new SqlConnection(connString))
{
    if (conn.State != ConnectionState.Open) conn.Open();
    Console.WriteLine("db open");
}

關閉連接:C# 中的 Using 區塊也會在程式碼結束該區塊時自動處理連接

為什麼連不到MSSQL資料庫(或無法登入)

檢查服務是否有啟動?

  • 開始 > 找到安裝的SQL Server版本 > 展開之後選擇 Configuration Tools(設定管理員) > Sql Server Configuration Manager > Sql Server服務 > 確認狀態是Running

MSDN - 連接字串語法
MSDN - 連線至資料庫並使用 .NET 和 Microsoft.Data.SqlClient 程式庫查詢 Azure SQL 資料庫
MSDN - 建立連線
MSDN - SQL Server Express 使用者執行個體 MSDN - 設定 SQL Server 資料庫引擎來加密連線
[SQL]為什麼連不到MSSQL資料庫 - 故障排除指南
啟用 SQL Server SSL 連線加密 by 余小章
SQL 連線加密觀察及加密憑證檢查 by darkthread

This post is licensed under CC BY 4.0 by the author.