Teď jste offline a čekáte, až se znova připojí internet.

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

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
Microsoft Visual Basic .NET verzi tohoto článku naleznete 301216.
Microsoft Visual C# .NET verzi tohoto článku naleznete 314145.
Tento článek se týká následujícího oboru názvů knihovny tříd technologie Microsoft .NET Framework:

System.data.SqlClient

Obsah úlohy

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.

back to the top
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
back to the top

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.

back to the top

Ú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
back to the top

Upozornění: Tento článek je přeložený automaticky

Vlastnosti

ID článku: 818779 - Poslední kontrola: 05/16/2007 03:29:22 - Revize: 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 KbMtcs
Váš názor
: none; " src="https://c1.microsoft.com/c.gif?DI=4050&did=1&t=">;t=">