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

Microsoft Visual Basic .NET verzi tohoto článku naleznete v tématu
301216 .
Microsoft Visual C# .NET verzi tohoto článku naleznete v tématu
314145 .
Tento článek odkazuje na následující obor názvů knihovny tříd rozhraní.NET Framework společnosti Microsoft:

System.Data.SqlClient

V TOMTO ÚKOLU

Souhrn

Tento podrobný článek popisuje postup k vyplnění objektu DataSet s výsledky jedna nebo více databázových dotazů a přístup k datům po načtení do objektu DataSet dotazu. Objekt DataSet objekty jsou objekty v paměti, které mohou obsahovat tabulky, zobrazení a vztahy, které tvoří klíčovou součást přístup k datům v Microsoft rozhraní.NET Framework.

zpět na horní

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 s nainstalován ukázkové databáze Pubs
  • Microsoft Visual Studio .NET nebo Microsoft Visual Studio 2005
Tento článek předpokládá, že jste obeznámeni s následující témata:
  • Databázové terminologii
  • Microsoft SQL Server
zpět na horní

Vyplnit objekt DataSet

Pomocí různých objektů v oboru názvů System.Data, můžete připojit k databázovému serveru, spusťte dotaz a potom výsledky umístění v objektu DataSet. Objekt DataSet je odpojené objektu. 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 kopii informací v paměti.

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

    To 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. Použijte příkaz USING na obor názvů systému, System.Data oboru názvů, obor názvů System.Xml, obor názvů System.Collections a System.Data.SqlClient obor názvů, takže není nutné kvalifikovat deklarace z těchto oborů názvů později v kódu. Musíte použít tyto příkazy před všemi ostatními deklaracemi.
    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 do objektu DataSet.

    Chcete-li to provést, je nutné vytvořit připojení k databázi. To vyžaduje System.Data.SqlClient.SqlCommand objektu a řetězec připojení. Připojovací řetězec v kódu připojuje počítač se systémem SQL Server, který je umístěn v místním počítači (počítač, kde běží kód). Je třeba upravit tento připojovací řetězec podle potřeby pro vaše prostředí. Po SqlConnection objekt vytvořen, volání metody Open tohoto objektu k navázání spojení skutečné databáze.
    SqlConnection* objConn;String* sConnectionString;
    sConnectionString = "Password=myPassword;User ID=myUserID;Initial Catalog=pubs;Data Source=(local)";

    objConn = new SqlConnection(sConnectionString);
    objConn->Open();

  6. Vytvořte 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 DataAdapter konstruktoru. Následující příklad používá příkaz SQL, který načte záznamy z tabulky autoři v
    Databáze pubs .
    SqlDataAdapter* daAuthors = new SqlDataAdapter("Select * From Authors", objConn);
  7. Deklarovat a potom vytvořte instanci objektu DataSet.

    Když toto provedete, je třeba zadat název pro celý objekt 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. Spusťte FillSchema následovaný výplně při zpracování načítání dat.

    Třída SqlDataAdapter poskytuje dvě metody, metoda Fill a FillSchema metody, které jsou nezbytné k načtení dat. Obě tyto metody načíst informace do objektu DataSet. Metoda výplně načte samotná data a metodu FillSchema načte všechny dostupné 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 Výplň, můžete načíst pouze základní metadata, která musí mít názvy sloupců a typů dat popsat. Metoda výplně nenačte informace o primárním klíči. Chcete-li změnit toto výchozí chování, můžete nastavit vlastnost MissingSchemaAction objekt DataAdapter na MissingSchemaAction.AddWithKey. Načte metadata primární klíče kromě výchozí informace.
    daAuthors->MissingSchemaAction = MissingSchemaAction::AddWithKey;daAuthors->Fill(dsPubs,"Authors");

    Data je nyní k dispozici v kolekci tabulek DataSet jednotlivého objektu DataTable. Pokud zadáte název tabulky ve 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 v objektu DataTable. Používejte při smyčky k iterování každého řádku tabulky. Sloupce můžete přistupovat podle názvu nebo podle poziční indexu. Nula (0) je první pozice sloupce.
    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žte projekt. V nabídce Debug klepněte na tlačítko Start ke spuštění projektu.

zpět na horní

Ú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. Chcete-li přidat možnost kompilátoru podporu runtime společný jazyk Visual C++ 2005, postupujte takto:
  1. Klepněte na tlačítko projekta klepněte na tlačítko
    < NázevProjektu > vlastnosti.


    Poznámka: < NázevProjektu > je zástupný symbol pro název projektu.
  2. Rozbalte uzel Vlastnosti konfiguracea potom klepněte na položku Obecné.
  3. Zaškrtněte Společná podpora Runtime jazyka, staré syntaxe (/ CLR: oldSyntax) v podporují Common Language Runtime projektu nastavení v pravém podokně, klepněte na tlačítko
    Použíta 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 společnosti Microsoft:
/ CLR (common Language Runtime Compilation)
http://msdn2.microsoft.com/en-us/library/k8d11d4s.aspx
zpět na horní
Vlastnosti

ID článku: 818779 - Poslední kontrola: 16. 1. 2017 - Revize: 1

Váš názor