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

Managed C++ 中使用 ADO.NET 存取資料庫完整指南

     編輯:VC 教學

前言

ADO.NET 提供 DataReader 唯讀、順向資料流,適合高效能讀取大量資料。本文示範在 Managed C++(舊語法)中使用 ADOConnection、ADOCommand、ADODataReader 連接 Access 資料庫並查詢產品資訊。

必要組件參考

#using 
#using 
#using 

using namespace System;
using namespace System::Data::ADO;

核心流程

  1. 建立 ADOConnection,設定 ConnectionString(Provider=Microsoft.Jet.OLEDB.4.0)。
  2. 呼叫 Open() 開啟連線。
  3. 建立 ADOCommand 指定 SQL 與連線,執行 Execute() 取得 ADODataReader。
  4. 迴圈呼叫 Read() 逐列讀取,透過索引或欄位名取值。
  5. 確實關閉 DataReader 與 Connection,並在 catch 區塊處理例外。

完整程式碼

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

注意事項

  • Managed C++ 舊語法使用 * 指標與 S"" 字串常值;新專案建議改用 C++/CLI(^ 控制碼、gcnew)。
  • DataReader 必須先呼叫 Read() 才能存取資料。
  • 連線字串中的路徑請依實際專案調整。
  • 生產環境應使用參數化查詢防止 SQL Injection。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved