介紹
ADO.NET 是 .NET 平台下用來操作資料庫相關模組的統稱。
透過它我們可以操作資料庫,完成新增、刪除、修改、查詢等基礎作業;也能夠執行 SQL 陳述式、呼叫 SQL 函數、執行預存程序等等。
多數大型商業系統都離不開資料庫。如果需要把資料持久儲存,同時還要具備高效查詢能力,就必須使用資料庫。
ADO.NET 的核心提供一組物件,這些物件已經封裝好各種資料庫操作的相關方法:
- Connection:建立與資料庫之間的連線
- Command:執行 SQL 相關指令
- DataSet:記憶體內的資料集合,屬於資料庫的抽象表示。操作 DataSet 就如同操作離線資料庫,內部包含 DataTable(資料表)、DataRow(資料表內的單筆記錄)
- DataReader:唯讀向前的資料讀取器
- DataAdapter:資料配接器
熟悉 ADO.NET 才能開發功能完整的商業系統,網站這類應用也大多依賴資料庫,建議務必好好研讀。
EF、iBatis、NHibernate、Linq to Entities 這類 ORM 框架,底層全部都是建構在 ADO.NET 之上。你也可以直接以 ADO.NET 為基礎自行開發 ORM 框架。
資料庫連線
Connection 負責建立程式與資料庫的連線,是所有資料庫操作必經的橋樑。
.NET 提供 SqlConnection 類別實作資料庫連線,所屬命名空間:System.Data.SqlClient,組件:System.Data.dll。
大多數和資料庫互動的型別,都封裝在這個 dll 檔案當中。
建立連線之前,要先準備好資料庫連線字串,實例化 SqlConnection 物件的時候就要帶入這個字串。
SqlConnection conn = new SqlConnection(connectionString);Code language: JavaScript (javascript)
連線字串本質就是一般字串,使用 string 型別存放。
兩種登入模式的連線字串範例
- SA帳號密碼登入(SQL Server 身分驗證)
"Data Source=.;Initial Catalog=資料庫名稱;User ID=sa;pwd=密碼;"Code language: JSON / JSON with Comments (json)
- Windows 身分驗證登入
Data Source=.;Initial Catalog=資料庫名稱;Integrated Security=TrueCode language: PHP (php)
連線字串由多個設定項目組成,使用英文分號做分隔,格式為 鍵=值。
參數說明:
Data Source:資料庫伺服器位址。本機資料庫可填寫.、localhost、127.0.0.1;遠端伺服器則輸入 IP 或是網域名稱。Initial Catalog:目標資料庫名稱User ID:資料庫登入帳號pwd:資料庫登入密碼
補充:
User ID和pwd並非必填。使用 Windows 登入模式時,設定Integrated Security=True開啟整合安全性驗證,就不用填寫帳號密碼。
在 C# 當中如何連接資料庫
private void button1_Click(object sender, EventArgs e)
{
string connectionString = "Data Source=.;Initial Catalog=db;User ID=sa;pwd=123321;";
// 在 using 陳述式內實例化連線物件,程式區塊結束會自動釋放資源,不需要手動呼叫 Close()
using (SqlConnection conn = new SqlConnection(connectionString))
{
// 開啟資料庫連線
conn.Open();
// 在這裡撰寫資料庫操作程式碼
}
}Code language: JavaScript (javascript)
補充說明
conn.Open():開啟資料庫連線,一定要呼叫這個方法才會真正建立網路連線。using語法優點:離開 using 程式區塊範圍之後,會自動釋放資源並關閉資料庫連線,避免發生連線洩漏。- 沒有使用 using 的情況下,作業完成後必須手動呼叫
conn.Close()關閉連線。
其他常用寫法
//conn.Open(); // 開啟連線
//conn.Close(); // 手動關閉連線
//conn.ConnectionString = connectionString; // 動態指定連線字串
//conn.ConnectionString = ""; // 清空連線字串Code language: JSON / JSON with Comments (json)
介紹與連線
Next: SqlCommand