本系列最終篇,將完整展示存取遠端 SQL Server 7.0 資料庫的程式碼,並總結不同資料庫存取的異同點與核心心法。
string strConnect = "Provider=SQLOLEDB.1;Persist Security Info=False;" +
"User ID=sa;Initial Catalog=xsgl;Data Source=czdy1";
Provider=SQLOLEDB.1:SQL Server 專用 OLE DB 提供者Initial Catalog:資料庫名稱(Access 使用 Data Source 指定檔案)Data Source:伺服器名稱或 IP 位址User ID:登入帳號(支援 SQL Server 驗證模式)遠端資料庫存取不需 Application.StartupPath,故可移除此命名空間參考,減少相依性。
using System;
using System.Data.OleDb;
class OleDbTest
{
public static void Main()
{
string strConnect = "Provider=SQLOLEDB.1;Persist Security Info=False;" +
"User ID=sa;Initial Catalog=xsgl;Data Source=czdy1";
OleDbConnection conn = new OleDbConnection(strConnect);
OleDbCommand cmd = new OleDbCommand("SELECT * FROM xsk", conn);
try
{
conn.Open();
OleDbDataReader reader = cmd.ExecuteReader();
Console.WriteLine("遠端資料庫查詢結果(第一欄位):");
while (reader.Read())
{
Console.WriteLine(reader.GetString(0));
}
reader.Close();
conn.Close();
}
catch (OleDbException ex)
{
Console.WriteLine("錯誤類型:" + ex.Errors[0].Message);
}
}
}
conn.Open() 建立實體網路連線cmd.ExecuteReader() 回傳 OleDbDataReader 串流式讀取資料reader.Read() 逐筆前移游標,GetString(0) 取得第一欄位值try-catch 捕捉 OleDbException 處理連線失敗、查詢錯誤等異常透過兩個範例可以發現,存取本地 Access 與遠端 SQL Server 在**程式架構上完全一致**,唯一差異僅在於:
Provider 參數這正是 ADO.NET / OleDb 設計的精華:**統一的程式模型隔離了底層資料庫差異**。掌握此核心心法,未來面對 Oracle、MySQL、PostgreSQL 等任何支援 OLE DB/ODBC 的資料庫,只需更換連線字串與提供者,即可無縫切換。
using 區塊自動管理連線與 Reader 生命週期(C# 2.0+)