Freigeben über


Gewusst wie: Erstellen und Ausführen einer SQL-Anweisung, die Zeilen zurückgibt

Aktualisiert: November 2007

Zum Ausführen einer SQL-Anweisung, die Zeilen zurückgibt, können Sie eine TableAdapter-Abfrage ausführen, die zum Ausführen einer SQL-Anweisung konfiguriert ist (z. B. CustomersTableAdapter.Fill(CustomersDataTable)).

Wenn die Anwendung keine TableAdapters verwendet, rufen Sie die ExecuteReader-Methode eines Befehlsobjekts auf, und legen Sie für dessen CommandType-Eigenschaft Text fest. (Mit "Befehlsobjekt" ist der spezielle Befehl für den .NET Framework-Datenprovider gemeint, den die Anwendung verwendet. Wenn die Anwendung beispielsweise den .NET Framework-Datenprovider für SQL Server benutzt, dann heißt das Befehlsobjekt SqlCommand.)

Die folgenden Beispiele zeigen, wie SQL-Anweisungen ausgeführt werden, die mithilfe von TableAdapter-Objekten oder Befehlsobjekten Zeilen einer Datenbank zurückgeben. Weitere Informationen zu Abfragen mit TableAdapter und Befehlen finden Sie unter Übersicht über das Füllen von Datasets und Abfragen von Daten.

Ausführen von SQL-Anweisungen, die mithilfe eines TableAdapters Zeilen zurückgeben

In diesem Beispiel wird gezeigt, wie mithilfe vom Konfigurations-Assistent für TableAdapter-Abfragen eine TableAdapter-Abfrage erstellt wird, und anschließend erläutert, wie eine Instanz des TableAdapter deklariert und die Abfrage ausgeführt wird.

Hinweis:

Je nach den aktiven Einstellungen oder der verwendeten Version können sich die angezeigten Dialogfelder und Menübefehle von den in der Hilfe beschriebenen unterscheiden. Klicken Sie im Menü Extras auf Einstellungen importieren und exportieren, um die Einstellungen zu ändern. Weitere Informationen finden Sie unter Visual Studio-Einstellungen.

So erstellen Sie eine SQL-Anweisung, die Zeilen mithilfe eines TableAdapters zurückgibt

  1. Öffnen Sie im DataSet-Designer ein Dataset. Weitere Informationen finden Sie unter Gewusst wie: Öffnen eines Datasets im DataSet-Designer.

  2. Erstellen Sie einen TableAdapter, sofern noch keiner vorhanden ist. Weitere Informationen zum Erstellen von TableAdapters finden Sie unter Gewusst wie: Erstellen von TableAdapters.

  3. Falls bereits ein TableAdapter vorhanden ist, der unter Verwendung einer SQL-Anweisung Zeilen zurückgibt, fahren Sie mit der nächsten Verfahrensanweisung im Abschnitt "So deklarieren Sie eine Instanz des TableAdapter und führen die Abfrage aus" fort. Andernfalls fahren Sie mit Schritt 4 fort, um eine neue Abfrage zu erstellen, die Zeilen zurückgibt.

  4. Klicken Sie mit der rechten Maustaste auf den gewünschten TableAdapter, und verwenden Sie das Kontextmenü, um eine Abfrage hinzuzufügen.

    Der TableAdapter-Konfigurations-Assistent wird geöffnet.

  5. Übernehmen Sie den Standardwert von SQL-Anweisungen verwenden, und klicken Sie dann auf Weiter.

  6. Behalten Sie den Standardwert von SELECT-Anweisung, die Zeilen zurückgibt bei, und klicken Sie dann auf Weiter.

  7. Geben Sie die SQL-Anweisung ein, oder erstellen Sie diese Anweisung mithilfe des Abfrage-Generators, und klicken Sie anschließend auf Weiter.

  8. Geben Sie einen Namen für die Abfrage ein.

  9. Führen Sie den Assistenten aus. Die Abfrage wird dem TableAdapter hinzugefügt.

  10. Erstellen Sie das Projekt.

So deklarieren Sie eine Instanz des TableAdapter und führen die Abfrage aus

  1. Deklarieren Sie eine Instanz des TableAdapter, der die Abfrage enthält, die ausgeführt werden soll.

    • Zum Erstellen einer Instanz mithilfe von Entwurfszeittools ziehen Sie den gewünschten TableAdapter aus der Toolbox. (Komponenten im Projekt werden jetzt in der Toolbox unter einer Überschrift angezeigt, die mit dem Projektnamen übereinstimmt.) Falls der TableAdapter in der Toolbox nicht angezeigt wird, müssen Sie das Projekt möglicherweise neu erstellen.

      - oder -

    • Sie erstellen eine Instanz programmgesteuert, indem Sie den folgenden Code durch die Namen des DataSet und des TableAdapter ersetzen.

      Dim tableAdapter As New DataSetTableAdapters.TableAdapter

      Hinweis:

      Die TableAdapters befinden sich nicht in den ihnen zugeordneten Datasetklassen. Jedes Dataset besitzt eine entsprechende TableAdapter-Auflistung im eigenen Namespace. Wenn beispielsweise das Dataset SalesDataSet vorliegt, dann ist ein SalesDataSetTableAdapters-Namespace mit dem zugehörigen TableAdapter vorhanden.

  2. Rufen Sie die Abfrage genauso auf, wie Sie im Code jede andere Methode aufrufen. Die Abfrage ist eine Methode des TableAdapter. Ersetzen Sie den folgenden Code durch die Namen des TableAdapter und der Abfrage. Darüber hinaus müssen Sie auch alle für die Abfrage erforderlichen Parameter übergeben. Wenn Sie sich nicht sicher sind, ob die Abfrage Parameterangaben erfordert und welche Parameter erforderlich sind, finden Sie die erforderliche Abfragesignatur in IntelliSense. Je nachdem, ob die Abfrage Parameter verarbeitet oder nicht, sieht der Code in etwa wie folgt aus:

    TableAdapter.Query()

    TableAdapter.Query(Parameters)

    TableAdapter.Query(DataTable, Parameters)

  3. Der vollständige Code zum Deklarieren einer Instanz von TableAdapter und zum Ausführen der Abfrage sollte in etwa mit dem Folgenden übereinstimmen:

    Dim tableAdapter As New NorthwindDataSetTableAdapters.CustomersTableAdapter()
    tableAdapter.FillByCity(NorthwindDataSet.Customers, "Seattle")
    
    NorthwindDataSetTableAdapters.CustomersTableAdapter tableAdapter = 
        new NorthwindDataSetTableAdapters.CustomersTableAdapter();
    
    tableAdapter.FillByCity(northwindDataSet.Customers, "Seattle");
    

Ausführen von SQL-Anweisungen, die Zeilen mithilfe eines Befehlsobjekts zurückgeben

Im folgenden Beispiel wird gezeigt, wie ein Befehl erstellt und eine SQL-Anweisung ausgeführt wird, die Zeilen zurückgibt. Informationen zum Einstellen und Abrufen von Parameterwerten für einen Befehl finden Sie unter Gewusst wie: Festlegen und Abrufen von Parametern für Befehlsobjekte.

In diesem Beispiel wird das SqlCommand-Objekt verwendet und Folgendes vorausgesetzt:

  • Verweise auf die Namespaces System, System.Data, System.Data.SqlClient und System.Xml.

  • Die Datenverbindung sqlConnection1.

  • Die Tabelle Customers in der Datenquelle, mit der sqlConnection1 verbunden ist. (Andernfalls ist eine gültige SQL-Anweisung für die Datenquelle erforderlich.)

So führen Sie eine SQL-Anweisung aus, die Zeilen programmgesteuert mithilfe eines Befehlsobjekts zurückgibt

  • Fügen Sie den folgenden Code einer Methode hinzu, die Sie zur Codeausführung aufrufen möchten. Sie geben Zeilen zurück, indem Sie die ExecuteReader-Methode des Befehls (z. B. ExecuteReader) aufrufen. Die Daten werden in einem SqlDataReader zurückgegeben. Weitere Informationen zum Zugriff auf die in einem SqlDataReader enthaltenen Daten finden Sie unter Abrufen von Daten mit einem 'DataReader' (ADO.NET).

    Dim sqlConnection1 As New SqlConnection("Your Connection String")
    Dim cmd As New SqlCommand
    Dim reader As SqlDataReader
    
    cmd.CommandText = "SELECT * FROM Customers"
    cmd.CommandType = CommandType.Text
    cmd.Connection = sqlConnection1
    
    sqlConnection1.Open()
    
    reader = cmd.ExecuteReader()
    ' Data is accessible through the DataReader object here.
    
    sqlConnection1.Close()
    
    SqlConnection sqlConnection1 = new SqlConnection("Your Connection String");
    SqlCommand cmd = new SqlCommand();
    SqlDataReader reader;
    
    cmd.CommandText = "SELECT * FROM Customers";
    cmd.CommandType = CommandType.Text;
    cmd.Connection = sqlConnection1;
    
    sqlConnection1.Open();
    
    reader = cmd.ExecuteReader();
    // Data is accessible through the DataReader object here.
    
    sqlConnection1.Close();
    

Sicherheit

Die Anwendung muss über die entsprechende Berechtigung für den Zugriff auf die Datenbank und das Ausführen der SQL-Anweisung verfügen.

Siehe auch

Aufgaben

Gewusst wie: Erstellen von TableAdapter-Abfragen

Gewusst wie: Bearbeiten von TableAdapter-Abfragen

Gewusst wie: Füllen eines Datasets mit Daten

Referenz

SqlCommand.ExecuteReader

OleDbCommand.ExecuteReader

OdbcCommand.ExecuteReader

OracleCommand.ExecuteReader