ADO.NET 提供 DataReader 唯讀、順向資料流,適合高效能讀取大量資料。本文示範在 Managed C++(舊語法)中使用 ADOConnection、ADOCommand、ADODataReader 連接 Access 資料庫並查詢產品資訊。
#using
#using
#using
using namespace System;
using namespace System::Data::ADO;
ADOConnection,設定 ConnectionString(Provider=Microsoft.Jet.OLEDB.4.0)。Open() 開啟連線。ADOCommand 指定 SQL 與連線,執行 Execute() 取得 ADODataReader。Read() 逐列讀取,透過索引或欄位名取值。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;
}
* 指標與 S"" 字串常值;新專案建議改用 C++/CLI(^ 控制碼、gcnew)。DataReader 必須先呼叫 Read() 才能存取資料。