承接上篇文章,本文將詳細說明資料庫連線開啟、資料讀取、資源釋放與例外處理的完整實作細節,並提供 first.cs 完整可執行原始碼。
conn.Open(); // 開啟實體連線
OleDbDataReader reader = cmd.ExecuteReader(); // 取得資料串流
ExecuteReader() 回傳 OleDbDataReader,提供高效能、唯讀、順向的資料存取方式,適合大量資料讀取場景。
Console.WriteLine("查詢結果第一欄位所有內容:");
while (reader.Read()) // 逐筆讀取,無資料時回傳 false
{
Console.WriteLine(reader.GetString(0)); // 取得第一欄位 (索引 0)
// 若需第二欄位,使用 reader.GetString(1)
}
注意:Read() 會自動將游標移至下一筆,直到資料結束回傳 false 結束迴圈。
reader.Close(); // 先關閉 DataReader
conn.Close(); // 再關閉 Connection
黃金法則:必須先關閉 DataReader 再關閉 Connection。若順序顛倒,可能導致連線未正確釋回連線池,造成資源洩漏。
try
{
conn.Open();
OleDbDataReader reader = cmd.ExecuteReader();
// ... 讀取邏輯 ...
reader.Close();
conn.Close();
}
catch (OleDbException ex)
{
Console.WriteLine("錯誤類型:" + ex.Errors[0].Message);
}
OleDbException 專門捕捉資料庫相關錯誤ex.Errors 集合包含詳細錯誤資訊,Errors[0] 為首個錯誤ex.ToString()) 供除錯using System;
using System.Data.OleDb;
using System.Windows.Forms;
class OleDbTest
{
public static void Main()
{
string strConnect = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" +
Application.StartupPath + "\\my.mdb";
OleDbConnection conn = new OleDbConnection(strConnect);
OleDbCommand cmd = new OleDbCommand("SELECT * FROM Persons", 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);
}
}
}
my.mdb (Access 2000 格式)Persons 資料表,包含相關欄位csc /r:System.Data.dll /r:System.Windows.Forms.dll first.cs下一篇將展示存取遠端 SQL Server 7.0 的完整實作,重點解析連線字串差異與遠端連線注意事項。