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

Visual C# 存取不同資料庫實戰指南(二)

     編輯:關於C語言

前言

承接上篇文章,本文將詳細說明資料庫連線開啟、資料讀取、資源釋放與例外處理的完整實作細節,並提供 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()) 供除錯

五、完整程式碼:first.cs

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);
        }
    }
}

六、執行前準備

  1. 確保專案目錄下存在 my.mdb (Access 2000 格式)
  2. 資料庫中需有 Persons 資料表,包含相關欄位
  3. 編譯指令:csc /r:System.Data.dll /r:System.Windows.Forms.dll first.cs

七、下篇預告

下一篇將展示存取遠端 SQL Server 7.0 的完整實作,重點解析連線字串差異與遠端連線注意事項。

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