如何使用 Visual C++.NET 或 Visual C++ 2005年填入 DataSet 物件從一個資料庫

文章翻譯 文章翻譯
文章編號: 818779 - 檢視此文章適用的產品。
全部展開 | 全部摺疊

在此頁中

結論

本文將逐步告訴您,如何填滿資料集具有一或多個資料庫查詢和如何存取資料後載入 DataSet 物件中的查詢的結果物件。資料集物件是資料表、 檢視表和 Microsoft.NET Framework 中的表單資料存取的重要部分的關係可保留的記憶體中物件。


其他相關資訊

需求

下列清單列出建議的硬體、 軟體、 網路基礎結構和您必須擁有 Service Pack:
  • Microsoft Windows 2000 專業版,Microsoft Windows 2000 Server,Microsoft Windows 2000 進階伺服器或 Microsoft Windows NT 4.0 伺服器
  • Microsoft SQL Server 7.0、 Microsoft SQL Server 2000 或 Microsoft 資料引擎與 Pubs 範例資料庫安裝
  • Microsoft Visual Studio.NET 或 Microsoft Visual Studio 2005
本文假設您已熟悉下列主題:
  • 資料庫術語
  • Microsoft SQL Server


填滿資料集

使用各種物件 System.Data 命名空間中,您可以連接至資料庫伺服器、 執行一個查詢,然後將結果放 DataSet 物件中。資料集是中斷連接的物件。因此,載入資料後資料庫的連接不再使用直到您要載入更多的資料,或以您對您資訊的記憶體中複本所做的變更更新伺服器。

從一個資料庫資料載入至資料集,請依照下列步驟執行:
  1. 啟動 Visual Studio.NET 或 Visual Studio 2005。
  2. 在 Visual 的 C + +.NET 2002年中建立新的受管理的 C + + 應用程式或 Visual 的 C + +.NET 2003年中建立新的主控台應用程式,或在 Visual C++ 2005年中建立新的 CLR 主控台應用程式。命名之專案 的所有使用者 MyApplication 然後按一下 [確定]
  3. 將下列程式碼加入至 [MyApplication.cpp 檔案。

    這將參考加入 System.Dll 命名空間、 System.Xml] 命名空間和 System.Data 命名空間
    #using <System.Dll>
    #using <System.Data.Dll>
    #using <System.Xml.Dll>
    
  4. 使用 System 命名空間、 System.Data 命名空間、 System.Xml 命名空間、 System.Collections] 命名空間和 System.Data.SqlClient 命名空間上 使用 陳述式,如此您並不需要限定這些命名空間在稍後的程式碼中的宣告。您必須使用這些陳述式之前任何其他宣告釐
    using namespace System;
    using namespace System::Data;
    using namespace System::Xml;
    using namespace System::Collections;
    using namespace System::Data::SqlClient;
    
  5. 將資料從資料庫移到資料集。

    若要執行此動作,您必須建立資料庫連接。這需要一個 System.Data.SqlClient.SqlCommand 物件和連接字串。程式碼中的連線字串連接本機電腦 (電腦執行程式碼) 執行 SQL Server 所在的電腦。您必須修改適合您環境的這個連接字串。SqlConnection 物件建立之後呼叫 Open 方法以建立實際的資料庫連結該物件
    SqlConnection* objConn;
    String* sConnectionString;
    sConnectionString = "Password=myPassword;User ID=myUserID;Initial Catalog=pubs;Data Source=(local)";
    
    objConn = new SqlConnection(sConnectionString);
    objConn->Open();
    
  6. 建立資料配接器物件,代表資料庫與資料集物件之間的連結。您可以指定 SQL Server 或另一種用來做為建構函式物件的資料配接器的一部分擷取資料的命令。下列範例使用 SQL 陳述式從 Authors 資料表中擷取記錄
    SqlDataAdapter* daAuthors = new SqlDataAdapter("Select * From Authors", objConn);
    
    Pubs 資料庫。
  7. 宣告,然後建立一個資料集的執行個體的物件。

    當您執行這項操作時您必須提供整個資料集的名稱,才能開始載入任何資料。名稱可能包含
    DataSet* dsPubs = new DataSet("Pubs");
    數個不同資料表。
  8. 執行 FillSchema 後面跟著 填滿 處理載入資料時。

    SqlDataAdapter 類別會提供兩個方法、 Fill 方法,並且 FillSchema 方法會載入此資料的關鍵。這兩種方法載入至資料集的資訊。填滿] 方法會載入資料本身,並 FillSchema 方法載入有關特定資料表 (例如資料行名稱、 主索引鍵和條件約束) 所有可用的中繼資料。
    daAuthors->FillSchema(dsPubs,SchemaType::Source, "Authors");
    daAuthors->Fill(dsPubs,"Authors");
    

    如果您只使用 填滿,您可以只載入基本的中繼資料,您必須要有描述資料行名稱和資料型別。填滿] 方法不會載入主索引鍵資訊。若要變更這個預設行為,您可以將 MissingSchemaAction 屬性資料配接器物件的設定來 MissingSchemaAction.AddWithKey。這會載入主索引鍵的中繼資料,除了預設資訊
    daAuthors->MissingSchemaAction = MissingSchemaAction::AddWithKey;
    daAuthors->Fill(dsPubs,"Authors");
    
    資料現在是可用的資料集的 Tables 集合內個別的 DataTable 物件。如果在呼叫 FillSchema,並 填滿 指定的資料表名稱,您可以使用該名稱來存取您需要特定的資料表
    DataTable* tblAuthors = dsPubs->Tables->Item["Authors"];
    
  9. 使用 GetEnumerator 函數來存取 DataRow 物件在 DataTable 的資料列集合中。您可以使用時迴圈逐一查看資料表的每個資料列。依名稱或位置索引,您可以存取的資料行。零 (0) 為第一個資料行位置
    IEnumerator* iEnum = tblAuthors->Rows->GetEnumerator();
            
     while(iEnum->MoveNext())
     {
            Console::WriteLine("{0}   {1}",dynamic_cast<String*>(dynamic_cast<DataRow *>(iEnum->Current)->get_Item("au_fname")),
                                           dynamic_cast<String*>(dynamic_cast<DataRow *>(iEnum->Current)->get_Item("au_lname")));
     }
    
  10. 儲存您的專案。在 [偵錯] 功能表上按一下 [開始] 執行專案]。



完成程式碼清單

// This is the main project file for the VC++ application project 
// that is generated by using the Application wizard.

#include "stdafx.h"

#using <mscorlib.dll>
#include <tchar.h>
#using <System.Dll>
#using <System.Data.Dll>
#using <System.Xml.Dll>

using namespace System;
using namespace System::Data;
using namespace System::Xml;
using namespace System::Collections;
using namespace System::Data::SqlClient;

// This is the entry point for this application.
int _tmain(void)
{
    SqlConnection* objConn;
    try
    {

        
        String* sConnectionString;
        sConnectionString = "Password=myPassword;User ID=myUserID;Initial Catalog=pubs;Data Source=(local)";

        objConn = new SqlConnection(sConnectionString);
        objConn->Open();
        
        SqlDataAdapter* daAuthors = new SqlDataAdapter("Select * From Authors", objConn);
        DataSet* dsPubs = new DataSet("Pubs");
        
        daAuthors->FillSchema(dsPubs,SchemaType::Source, "Authors");
        daAuthors->Fill(dsPubs,"Authors");

        DataTable* tblAuthors = dsPubs->Tables->Item["Authors"];
        
        IEnumerator* iEnum = tblAuthors->Rows->GetEnumerator();
        
        while(iEnum->MoveNext())
        {
            Console::WriteLine("{0}   {1}",dynamic_cast<String*>(dynamic_cast<DataRow *>(iEnum->Current)->get_Item("au_fname")),
                                           dynamic_cast<String*>(dynamic_cast<DataRow *>(iEnum->Current)->get_Item("au_lname")));
            
        }
    }
    catch(Exception *ex)
    {
        Console::WriteLine( ex->Message );
    }
    __finally
    {
        objConn->Close();
    }
    
    return 0;
}
附註您必須加入通用語言執行階段支援編譯器選項 (/ clr:oldSyntax) 來順利編譯先前的程式碼範例的 Visual C++ 2005年中。若要在 Visual C++ 2005年中加入常用的語言執行階段支援編譯器選項,請依照下列步驟執行:
  1. 按一下 [專案,] 然後按一下 [<ProjectName> 屬性

    附註<ProjectName> 是專案的名稱的預留位置。
  2. 展開 [組態屬性,] 然後按一下 [一般
  3. 按一下以選取 通用語言執行階段支援、 舊語法 (/ clr:oldSyntax)通用語言執行階段支援 的專案設定中在右窗格中,按一下 套用,],然後再按一下 [確定]
如需有關通用語言執行階段支援編譯器選項,請造訪下列 Microsoft 網站:
/ clr (通用語言執行階段編譯)
http://msdn2.microsoft.com/en-us/library/k8d11d4s.aspx

?考

如需詳細資訊請造訪下列 Microsoft 網站]:

http://msdn2.microsoft.com/en-us/library/ms810293.aspx

http://msdn2.microsoft.com/en-us/library/ms973217.aspx

http://msdn.microsoft.com/net

屬性

文章編號: 818779 - 上次校閱: 2007年5月16日 - 版次: 3.2
這篇文章中的資訊適用於:
  • Microsoft Visual C++ 2005 Express Edition
  • Microsoft Visual C++ .NET 2003 Standard Edition
  • Microsoft Visual C++ .NET 2002 Standard Edition
  • Microsoft ADO.NET 1.1
  • Microsoft ADO.NET 1.0
關鍵字:?
kbmt kbsystemdata kbsqlclient kbhowtomaster kbhowto KB818779 KbMtzh
機器翻譯
重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。
按一下這裡查看此文章的英文版本:818779
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。

提供意見

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com