Sie sind zurzeit offline. Es wird auf die erneute Herstellung einer Internetverbindung gewartet.

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

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
Eine Microsoft Visual Basic .NET Version dieses Artikels finden Sie unter 301216.
Eine Microsoft Visual c# .NET Version dieses Artikels finden Sie unter 314145.
Dieser Artikel bezieht sich auf der folgenden Microsoft .NET Framework-Klassenbibliothek-Namespace:

System.Data.SqlClient

Inhalt

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.

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

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.

back to the top

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

Warnung: Dieser Artikel wurde automatisch übersetzt.

Eigenschaften

Artikelnummer: 818779 – Letzte Überarbeitung: 05/16/2007 03:29:22 – Revision: 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 KbMtde
Feedback
.appendChild(m);