Wie ein DataSet-Objekt aus einer Datenbank gefüllt wird, mithilfe von Visual C++ .NET oder Visual C++ 2005

SPRACHE AUSWÄHLEN SPRACHE AUSWÄHLEN
Artikel-ID: 818779 - Produkte anzeigen, auf die sich dieser Artikel bezieht
Alles erweitern | Alles schließen

Auf dieser Seite

Zusammenfassung

Schritt für Schritt beschrieben, wie zum Füllen eines DataSet-Objekt mit den Ergebnissen der eine oder mehrere Datenbank Abfragen und dann wie auf die Daten zugreifen, nachdem die Abfrage im DataSet-Objekt geladen wird. DataSet-Objekte sind im Speicher Objekte, die Tabellen, Ansichten und Beziehungen, die einen wesentlicher Bestandteil der Zugriff auf Daten in Microsoft .NET Framework enthalten können.


Weitere Informationen

Voraussetzungen

Die folgende Liste führt die empfohlene Hardware, Software, Netzwerkinfrastruktur und Servicepacks, die Sie benötigen:
  • Microsoft Windows 2000 Professional, Microsoft Windows 2000 Server, Microsoft Windows 2000 Advanced Server oder Microsoft Windows NT 4.0 Server
  • Microsoft SQL Server 7.0, Microsoft SQL Server 2000 oder Microsoft Data Engine mit installierter Beispieldatenbank "Pubs"
  • Microsoft Visual Studio .NET oder Microsoft Visual Studio 2005
In diesem Artikel wird vorausgesetzt, dass Sie über Erfahrungen auf den folgenden Gebieten verfügen:
  • Datenbankterminologie
  • Microsoft SQL Server


Füllen eines Datasets

Mithilfe einer Vielzahl von Objekten im System.Data-Namespace können Sie eine Verbindung zu einem Datenbankserver herstellen, eine Abfrage ausführen und dann die Ergebnisse gesetzt haben in einem DataSet-Objekt. Das DataSet ist ein nicht verbundenes Objekt. Daher nachdem die Daten geladen ist, wird die Verbindung zur Datenbank nicht mehr verwendet bis weitere Daten zu laden oder den Server mit den Änderungen aktualisieren, die Sie an Ihre speicherinterne Kopie der Daten vorgenommen werden soll.

Gehen Sie folgendermaßen vor um Daten aus einer Datenbank zu einem DataSet zu laden:
  1. Starten Sie Visual Studio .NET oder Visual Studio 2005.
  2. Erstellen Sie eine neue verwaltete C++-Anwendung in Visual C++ .NET 2002 oder erstellen Sie eine neue Konsolenanwendung in Visual C++ .NET 2003, oder erstellen Sie eine neue CLR-Konsolenanwendung in Visual C++ 2005. Name des Projekts MyApplication , und klicken Sie dann auf OK .
  3. Fügen Sie den folgenden Code hinzu der MyApplication.cpp-Datei.

    Dies ein Verweis auf die System.Dll-Namespace, den System.XML-Namespace und den System.Data-Namespace hinzugefügt.
    #using <System.Dll>
    #using <System.Data.Dll>
    #using <System.Xml.Dll>
    
  4. Verwenden Sie die USING -Anweisung für den System-Namespace, den System.Data-Namespace, den System.XML-Namespace, System.Collections-Namespace und System.Data.SqlClient-Namespace, damit Sie keinen Deklarationen aus diesen Namespaces später im Code vornehmen müssen. Sie müssen diese Anweisungen vor allen anderen Deklarationen
    using namespace System;
    using namespace System::Data;
    using namespace System::Xml;
    using namespace System::Collections;
    using namespace System::Data::SqlClient;
    
    verwenden.
  5. Die Daten aus der Datenbank in das DataSet zu verschieben.

    Zu diesem Zweck müssen Sie eine Datenbankverbindung einrichten. Dies erfordert ein System.Data.SqlClient.SqlCommand-Objekt und einer Verbindungszeichenfolge. Die Verbindungszeichenfolge im Code verbindet einen Computer, auf dem SQL Server, die befindet auf dem lokalen Computer (Computer) ausgeführt wird, auf dem der Code ausgeführt wird. Modifizieren Sie diese Verbindungszeichenfolge so, dass sie Ihrer Umgebung entspricht. Die Open -Methode des Objekts, die eigentliche Datenbankverknüpfung hergestellt aufrufen, nachdem das Objekt SqlConnection erstellt wurde,.
    SqlConnection* objConn;
    String* sConnectionString;
    sConnectionString = "Password=myPassword;User ID=myUserID;Initial Catalog=pubs;Data Source=(local)";
    
    objConn = new SqlConnection(sConnectionString);
    objConn->Open();
    
  6. Erstellen Sie ein DataAdapter-Objekt, das die Verknüpfung zwischen der Datenbank und DataSet-Objekt darstellt. Sie können angeben, SQL Server oder einer anderen Art von Befehl, der zum Abrufen von Daten als Teil des Objekts Konstruktor des DataAdapter verwendet wird. Das folgende Beispiel verwendet eine SQL-Anweisung, die Datensätze aus der Authors -Tabelle in der Pubs -Datenbank abruft
    SqlDataAdapter* daAuthors = new SqlDataAdapter("Select * From Authors", objConn);
    
  7. Deklarieren und erstellen Sie eine Instanz der DataSet-Objekt.

    Wenn Sie dies tun, müssen Sie einen Namen für das gesamte DataSet angeben, bevor Sie Daten laden können. Der Name möglicherweise enthalten mehrere verschiedene Tabellen.
    DataSet* dsPubs = new DataSet("Pubs");
  8. Führen Sie FillSchema gefolgt von Fill während der Behandlung des Daten Ladens.

    Die SqlDataAdapter -Klasse stellt zwei Methoden, die Fill -Methode und die FillSchema -Methode, die für diese Daten Laden von entscheidender Bedeutung sind. Diese beiden Methoden laden Informationen zu einem DataSet. FillSchema -Methode lädt alle verfügbare Metadaten zu einer bestimmten Tabelle (z. B. Spaltennamen, Primärschlüssel und Einschränkungen), und die Fill -Methode lädt die Daten selbst.
    daAuthors->FillSchema(dsPubs,SchemaType::Source, "Authors");
    daAuthors->Fill(dsPubs,"Authors");
    

    Wenn Sie nur Ausfüllen , können Sie nur die grundlegende Metadaten laden, die Sie benötigen, um die Spaltennamen und die Datentypen beschreiben. Die Fill -Methode lädt die Primärschlüssel-Informationen nicht. Um dieses Standardverhalten zu ändern, können Sie der MissingSchemaAction -Eigenschaft des DataAdapter-Objekts auf MissingSchemaAction.AddWithKey festlegen. Dadurch wird die primäre Schlüssel Metadaten zusätzlich zu den Standardinformationen geladen.
    daAuthors->MissingSchemaAction = MissingSchemaAction::AddWithKey;
    daAuthors->Fill(dsPubs,"Authors");
    
    die Daten sind jetzt als einzelne DataTable-Objekt in der Tables-Auflistung des Datasets verfügbar. Wenn Sie in der Aufrufe FillSchema und Ausfüllen von Namen einer Tabelle angeben, können Sie diesen Namen die bestimmte Tabelle zugreifen, die Sie benötigen.
    DataTable* tblAuthors = dsPubs->Tables->Item["Authors"];
    
  9. Verwenden Sie die GetEnumerator -Funktion Zugriff auf die DataRow-Objekte in der Rows-Auflistung der DataTable. Verwenden Sie while-Schleife, um jede Zeile der Tabelle zu durchlaufen. Sie können Spalten nach Namen oder Positionsindex zugreifen. 0 (Null) ist die erste Spaltenposition. 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. Speichern Sie Ihr Projekt. Klicken Sie im Debug auf Starten , um das Projekt auszuführen.



Vollständige Codeauflistung

// 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;
}
Hinweis: Müssen Sie die common Language Common Language Runtime Unterstützung Compiler-Option (/ CLR: oldSyntax) in Visual C++ 2005 um das vorherige Codebeispiel erfolgreich zu kompilieren. Gehen Sie folgendermaßen vor um die common Language Common Language Runtime Unterstützung-Compileroption in Visual C++ 2005 hinzuzufügen:
  1. Klicken Sie auf Projekt und dann auf <ProjectName> Eigenschaften .

    Hinweis: <ProjectName> ist ein Platzhalter für den Namen des Projekts.
  2. Erweitern Sie Konfiguration , und klicken Sie dann auf Allgemein .
  3. Klicken Sie auf Common Language Runtime-Unterstützung, alte Syntax (/ CLR: oldSyntax) in der Common Language Runtime-Unterstützung Projekt Einstellung im rechten Fensterbereich klicken Sie auf Übernehmen und klicken Sie dann auf OK .
Weitere Informationen über die common Language Runtime unterstützt Compileroption, besuchen Sie die folgenden Microsoft-Website:
/ Clr (Common Language Runtime Compilation)
http://msdn2.microsoft.com/en-us/library/k8d11d4s.aspx

Informationsquellen

Weitere Informationen finden Sie auf der folgenden Microsoft-Websites:

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

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

http://msdn.microsoft.com/net

Eigenschaften

Artikel-ID: 818779 - Geändert am: Mittwoch, 16. Mai 2007 - Version: 3.2
Die Informationen in diesem Artikel beziehen sich auf:
  • 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
Keywords: 
kbmt kbsystemdata kbsqlclient kbhowtomaster kbhowto KB818779 KbMtde
Maschinell übersetzter Artikel
Wichtig: Dieser Artikel wurde maschinell und nicht von einem Menschen übersetzt. Die Microsoft Knowledge Base ist sehr umfangreich und ihre Inhalte werden ständig ergänzt beziehungsweise überarbeitet. Um Ihnen dennoch alle Inhalte auf Deutsch anbieten zu können, werden viele Artikel nicht von Menschen, sondern von Übersetzungsprogrammen übersetzt, die kontinuierlich optimiert werden. Doch noch sind maschinell übersetzte Texte in der Regel nicht perfekt, insbesondere hinsichtlich Grammatik und des Einsatzes von Fremdwörtern sowie Fachbegriffen. Microsoft übernimmt keine Gewähr für die sprachliche Qualität oder die technische Richtigkeit der Übersetzungen und ist nicht für Probleme haftbar, die direkt oder indirekt durch Übersetzungsfehler oder die Verwendung der übersetzten Inhalte durch Kunden entstehen könnten.
Den englischen Originalartikel können Sie über folgenden Link abrufen: 818779
Microsoft stellt Ihnen die in der Knowledge Base angebotenen Artikel und Informationen als Service-Leistung zur Verfügung. Microsoft übernimmt keinerlei Gewährleistung dafür, dass die angebotenen Artikel und Informationen auch in Ihrer Einsatzumgebung die erwünschten Ergebnisse erzielen. Die Entscheidung darüber, ob und in welcher Form Sie die angebotenen Artikel und Informationen nutzen, liegt daher allein bei Ihnen. Mit Ausnahme der gesetzlichen Haftung für Vorsatz ist jede Haftung von Microsoft im Zusammenhang mit Ihrer Nutzung dieser Artikel oder Informationen ausgeschlossen.

Ihr Feedback an uns

 

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