Jak naplnit objekt DataSet z databáze pomocí Visual C++ .NET nebo Visual C++ 2005

Překlady článku Překlady článku
ID článku: 818779 - Produkty, které se vztahují k tomuto článku.
Rozbalit všechny záložky | Minimalizovat všechny záložky

Na této stránce

Souhrn

Tento podrobný článek popisuje způsob vyplnění DataSet objektu s výsledky databázových dotazů a jak přístup k datům po dotazu je načten v objektu DataSet. DataSet objekty jsou objekty v paměti, který může pojmout tabulek, zobrazení a vztahy formuláře klíče část datové Microsoft .NET Framework.


Další informace

Požadavky

Následující seznam obsahuje doporučený hardware, software, síťovou infrastrukturu a aktualizace service Pack, které musí mít:
  • Microsoft Windows 2000 Professional, Microsoft Windows 2000 Server, Microsoft Windows 2000 Advanced Server nebo Microsoft Windows NT 4.0 Server
  • Microsoft SQL Server 7.0, 2000 Microsoft SQL Server nebo Microsoft Data Engine nainstalován ukázkové databáze pubs
  • Microsoft Visual Studio .NET nebo Microsoft Visual Studio 2005,
Tento článek předpokládá znalost následujících témat:
  • Terminologie databáze
  • Microsoft SQL Server


Vyplnit DataSet

Pomocí různých objekty v oboru názvů System.data připojit k serveru databázi, spustit dotaz a pak mít výsledky umístěny v objektu DataSet. DataSet je odpojené objekt. Proto po načtení dat připojení k databázi se již používá dokud chcete načíst další data nebo aktualizovat server s změny provedené v paměti kopii informací.

Načtení dat z databáze DataSet, postupujte takto:
  1. Spustit Visual Studio .NET nebo Visual Studio 2005.
  2. Vytvořit nové Managed C++ aplikace Visual C++ .NET 2002 nebo vytvořit nové konzoly aplikace Visual C++ .NET 2003 nebo vytvořit novou aplikaci konzoly CLR Visual C++ 2005. Název projektu MyApplication a potom klepněte na tlačítko OK.
  3. Přidejte následující kód MyApplication.cpp souboru.

    Přidá odkaz na obor názvů System.Dll, obor názvů System.XML a oboru názvů System.data.
    #using <System.Dll>
    #using <System.Data.Dll>
    #using <System.Xml.Dll>
    
  4. Pomocí příkazu USING na obor názvů systému, System.data oboru názvů, obor názvů System.XML System.Collections oboru názvů a oboru názvů System.data.SqlClient, že nemáte kvalifikaci deklarace z těchto oborů názvů později v kódu. Musíte použít tyto příkazy před libovolné jiných deklarace.
    using namespace System;
    using namespace System::Data;
    using namespace System::Xml;
    using namespace System::Collections;
    using namespace System::Data::SqlClient;
    
  5. Přesuňte data z databáze DataSet.

    Chcete-li to provést, je nutné vytvořit připojení databáze. To vyžaduje System.Data.SqlClient.SqlCommand objektu a řetězec připojení. Připojovací řetězec v kódu připojuje počítač je spuštěn SQL Server, který je umístěn v místním počítači (počítači kód spuštěn). Tento řetězec připojení jako pro vaše prostředí třeba upravit. Po vytvoření objekt SqlConnection volání metody Open tohoto objektu k navázání spojení skutečné databáze. objConn
    SqlConnection* objConn;
    String* sConnectionString;
    sConnectionString = "Password=myPassword;User ID=myUserID;Initial Catalog=pubs;Data Source=(local)";
    
    objConn = new SqlConnection(sConnectionString);
    objConn->Open();
    
  6. Vytvořit objekt DataAdapter, který představuje propojení mezi databází a objektu DataSet. Můžete určit SQL Server nebo jiný typ příkazu, který slouží k načtení dat jako součást objektu konstruktor DataAdapter. Následující ukázka používá SQL příkaz, který načte záznamy z tabulky autoři v databáze pubs.
    SqlDataAdapter* daAuthors = new SqlDataAdapter("Select * From Authors", objConn);
    
  7. Deklarovat a vytvořit instanci DataSet objektu.

    Když toto provedete, musíte zadat název celé DataSet před zahájením načíst všechna data. Název může obsahovat několik různých tabulek.
    DataSet* dsPubs = new DataSet("Pubs");
  8. FillSchema následovaný výplně při zpracování načítání dat spustit.

    Třída SqlDataAdapter poskytuje dvě metody, metoda výplně a metodu FillSchema, které jsou rozhodující načíst tato data. Tyto metody načíst informace DataSet. Metoda výplně načte samotná data a metodu FillSchema načte k dispozici metadata o konkrétní tabulce (například názvy sloupců, primárních klíčů a omezení).
    daAuthors->FillSchema(dsPubs,SchemaType::Source, "Authors");
    daAuthors->Fill(dsPubs,"Authors");
    

    Pokud používáte pouze vyplnit, můžete načíst pouze základní metadata, která musíte mít popisují názvy sloupců a typů dat. Metoda výplně nenačte informace primárního klíče. Chcete-li změnit toto výchozí chování, můžete nastavit vlastnost MissingSchemaAction objekt DataAdapter MissingSchemaAction.AddWithKey. Načte tato metadata primárního klíče k výchozí informace.
    daAuthors->MissingSchemaAction = MissingSchemaAction::AddWithKey;
    daAuthors->Fill(dsPubs,"Authors");
    
    Dat je nyní k dispozici v kolekci tabulky DataSet jednotlivého objektu DataTable. Pokud zadáte název tabulky volání FillSchema a výplně, můžete použít tento název přístup k určité tabulky, které požadujete.
    DataTable* tblAuthors = dsPubs->Tables->Item["Authors"];
    
  9. Pomocí funkce GetEnumerator přístup k objektům DataRow v kolekci řádky objekt DataTable. Pomocí během smyčky iterovat každý řádek v tabulce. Přístup sloupců podle názvu nebo podle poziční indexu. Nula (0) je první pozice sloupce. iEnum
    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. Uložit projekt. V nabídce Debug klepněte na tlačítko Start spustit projektu.



Úplný výpis kódu

// 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;
}
Poznámka: Je nutné přidat možnost kompilátoru podporu runtime běžné jazyk (/ clr:oldSyntax) v Visual C++ 2005 úspěšně zkompilovat předchozí ukázkový kód. Přidat běžné podporu kompilátor možnost runtime jazyka Visual C++ 2005, postupujte takto:
  1. Klepněte na tlačítko projekt a klepněte na tlačítko <ProjectName> Vlastnosti.

    Poznámka:<ProjectName> je zástupný název projektu.
  2. Rozbalte položku Konfigurace vlastnosti a potom klepněte na položku Obecné.
  3. Klepnutím vyberte Common Language Runtime podpory, staré syntaxe (/ clr:oldSyntax) v podporují Common Language Runtime projektu nastavení v pravém podokně, klepněte na tlačítko použít a potom klepněte na tlačítko OK.
Další informace o společného jazykového modulu runtime podporují možnost kompilátoru naleznete na následujícím webu:
/ clr (Common Language Runtime kompilace)
http://msdn2.microsoft.com/en-us/library/k8d11d4s.aspx

Odkazy

Další informace naleznete na následujících webech společnosti Microsoft:

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

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

http://msdn.microsoft.com/net

Vlastnosti

ID článku: 818779 - Poslední aktualizace: 16. května 2007 - Revize: 3.2
Informace v tomto článku jsou určeny pro produkt:
  • 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
Klíčová slova: 
kbmt kbsystemdata kbsqlclient kbhowtomaster kbhowto KB818779 KbMtcs
Strojově přeložený článek
Důležité: Tento článek byl přeložen pomocí software společnosti Microsoft na strojový překlad, ne profesionálním překladatelem. Společnost Microsoft nabízí jak články přeložené překladatelem, tak články přeložené pomocí software na strojový překlad, takže všechny články ve Znalostní databázi (Knowledge Base) jsou dostupné v češtině. Překlad pomocí software na strojový překlad ale není bohužel vždy dokonalý. Obsahuje chyby ve skloňování slov, skladbě vět, nebo gramatice, podobně jako když cizinci dělají chyby při mluvení v češtině. Společnost Microsoft není právně zodpovědná za nepřesnosti, chyby nebo škody vzniklé chybami v překladu, nebo při použití nepřesně přeložených instrukcí v článku zákazníkem. Společnost Microsoft aktualizuje software na strojový překlad, aby byl počet chyb omezen na minimum.
Projděte si také anglickou verzi článku:818779

Dejte nám zpětnou vazbu

 

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