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

在 Managed C++ 應用程式中使用 ADO.NET 存取資料庫

     編輯:關於C++

概述

本文透過應用程式精靈產生的標準 Managed C++ 專案範例,示範使用 ADO.NET 的 DataReader 類別從資料庫擷取唯讀、前進式資料流。因資料在記憶體中一次僅佔一列,DataReader 能提升應用程式效能並降低系統負擔。

必要的組件引用與命名空間

#using <mscorlib.dll>
#using <system.dll>
#using <system.data.dll>

using namespace System;
using namespace System::Data::ADO; // 注意:實際為 System::Data::OleDb 或 SqlClient

核心步驟與程式碼實作

  1. 建立連線:使用 ADOConnection,設定 ConnectionString 指定資料來源 (範例使用 Jet OLEDB 4.0 存取 Access .mdb),呼叫 Open()。
  2. 建立命令:使用 ADOCommand 封裝 SQL 查詢 (SELECT ProductName, UnitPrice FROM Products),執行 Execute() 取得 ADODataReader 參考。
  3. 讀取資料:迴圈呼叫 Read() 逐列前進,透過索引或欄位名稱存取 Item 集合取得資料。注意:存取資料前必須先呼叫 Read()。
  4. 關閉資源:依序關閉 DataReader、Connection,並在例外處理中確保資源釋放。

完整程式碼範例

int main(void) {
    ADOConnection* connection;
    ADOCommand* command;
    ADODataReader* dataReader;

    try {
        connection = new ADOConnection();
        connection->ConnectionString = S"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=..\\Data\\grocertogo.mdb;Persist Security Info=False";
        connection->Open();

        command = new ADOCommand(S"SELECT ProductName, UnitPrice FROM Products", connection);
        command->Execute(&dataReader);

        Console::WriteLine(S"_____________________________________");
        Console::WriteLine(S"Product | Price");
        Console::WriteLine(S"_____________________________________");

        while (dataReader->Read()) {
            Console::WriteLine(S"{0, -30}| {1}",
                dataReader->get_Item("ProductName"),
                dataReader->get_Item("UnitPrice"));
        }

        Console::WriteLine(S"_____________________________________");
        dataReader->Close();
        connection->Close();
    }
    catch (Exception* e) {
        Console::WriteLine("Error occured: {0}", e->Message);
        if (dataReader && !dataReader->IsClosed) dataReader->Close();
        if (connection->State == DBObjectState::Open) connection->Close();
    }

    Console::WriteLine("Press ENTER to continue");
    Console::ReadLine();
    return 0;
}

關鍵點總結

  • DataReader 提供高效能、低記憶體占用的資料讀取方式,適合大量資料串流處理。
  • 連線字串需根據實際資料庫類型調整 (SQL Server 使用 SqlConnection、SqlCommand、SqlDataReader 等類別)。
  • 例外處理區塊確保連線與讀取器在錯誤發生時正確關閉,避免資源洩漏。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved