Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (Deutsch) » SQL Anywhere Server - Programmierung » SQL Anywhere Datenzugriff-APIs » SQL Anywhere .NET-Datenprovider » Datenzugriff und Datenverarbeitung » SACommand-Objekt für den Abruf und die Verarbeitung von Daten verwenden

 

Daten mit dem SACommand-Objekt abrufen

Mit dem SACommand-Objekt können Sie in einer SQL Anywhere-Datenbank eine SQL-Anweisung ausführen oder eine gespeicherte Prozedur aufrufen. Sie können eine der folgenden Methoden verwenden, um Daten aus der Datenbank abzurufen:

  • ExecuteReader   Führt eine SQL-Abfrage aus, die eine Ergebnismenge zurückgibt. Diese Methode verwendet einen schreibgeschützten Cursor, der Daten nur für die Weitergabe ausliest. Sie können die Zeilen in der Ergebnismenge in einer Richtung durchsuchen.

    Weitere Hinweise finden Sie unter ExecuteReader-Methoden.

  • ExecuteScalar   Führt eine SQL-Abfrage aus, die einen einzelnen Wert zurückgibt. Dabei kann es sich um die erste Spalte in der ersten Zeile der Ergebnismenge oder um eine SQL-Anweisung handeln, die einen Aggregatwert wie COUNT oder AVG zurückgibt. Diese Methode verwendet einen schreibgeschützten Cursor, der Daten nur für die Weitergabe ausliest.

    Weitere Hinweise finden Sie unter ExecuteScalar-Methode.

Wenn Sie das SACommand-Objekt verwenden, können Sie mithilfe des SADataReader-Objekts eine Ergebnismenge abrufen, die auf einem Join basiert. Änderungen (Einfügen, Aktualisieren oder Löschen) lassen sich jedoch nur an Daten vornehmen, die aus einer einzelnen Tabelle stammen. Sie können keine Ergebnismengen aktualisieren, die auf Joins basieren.

Die nachstehenden Hinweise verwenden das Codebeispiel "Simple", das mit dem .NET-Datenprovider mitgeliefert wird.

Weitere Hinweise zum Codebeispiel "Simple" finden Sie im Abschnitt Zum Verständnis des Beispielprojekts "Simple".

♦  So führen Sie eine SQL-Abfrage aus, die eine komplette Ergebnismenge zurückgibt
  1. Deklarieren und initialisieren Sie ein Connection-Objekt.

    SAConnection conn = new SAConnection(
        "Data Source=SQL Anywhere 11 Demo" );
  2. Öffnen Sie die Verbindung.

    try {
        conn.Open();
  3. Fügen Sie ein Command-Objekt hinzu, um eine SQL-Anweisung zu definieren und auszuführen.

    SACommand cmd = new SACommand(
         "SELECT Surname FROM Employees", conn );

    Wenn Sie eine gespeicherte Prozedur aufrufen, müssen Sie die Parameter für die gespeicherte Prozedur angeben.

    Weitere Hinweise finden Sie unter Gespeicherte Prozeduren verwenden und SAParameter-Klasse.

  4. Rufen Sie die ExecuteReader-Methode auf, um das DataReader-Objekt zurückzugeben.

    SADataReader reader = cmd.ExecuteReader();
  5. Zeigen Sie die Ergebnisse an.

    listEmployees.BeginUpdate();
    while( reader.Read() ) {
         listEmployees.Items.Add( reader.GetString( 0 ) );
    }
    listEmployees.EndUpdate();
  6. Schließen Sie die DataReader- und Connection-Objekte.

    reader.Close();
    conn.Close();
♦  So führen Sie eine SQL-Abfrage aus, die nur einen einzigen Wert zurückgibt
  1. Deklarieren und initialisieren Sie ein SAConnection-Objekt.

    SAConnection conn = new SAConnection(
        "Data Source=SQL Anywhere 11 Demo" );
  2. Öffnen Sie die Verbindung.

    conn.Open();
  3. Fügen Sie ein SACommand-Objekt hinzu, um eine SQL-Anweisung zu definieren und auszuführen.

    SACommand cmd = new SACommand(
        "SELECT COUNT(*) FROM Employees WHERE Sex = 'M'",
        conn );

    Wenn Sie eine gespeicherte Prozedur aufrufen, müssen Sie die Parameter für die gespeicherte Prozedur angeben.

    Weitere Hinweise finden Sie unter Gespeicherte Prozeduren verwenden.

  4. Rufen Sie die ExecuteScalar-Methode auf, um das Objekt zurückzugeben, das den Wert enthält.

    int count = (int) cmd.ExecuteScalar();
  5. Schließen Sie das SAConnection-Objekt.

    conn.Close();

Wenn Sie das SADataReader-Objekt verwenden, stehen diverse Get-Methoden zur Verfügung, mit denen Sie die Ergebnisse im angegebenen Datentyp zurückgeben können.

Weitere Hinweise finden Sie unter SADataReader-Klasse.

Beispiel zu Visual Basic DataReader

Der nachstehende Visual Basic-Code öffnet eine Verbindung zur SQL Anywhere-Beispieldatenbank und gibt mithilfe des DataReader-Objekts die Nachnamen der ersten fünf Mitarbeiter in der Ergebnismenge zurück:

Dim myConn As New .SAConnection()
Dim myCmd As _
  New .SACommand _
  ("SELECT Surname FROM Employees", myConn)
Dim myReader As SADataReader
Dim counter As Integer
myConn.ConnectionString = _
  "Data Source=SQL Anywhere 11 Demo"
myConn.Open()
myReader = myCmd.ExecuteReader()
counter = 0
Do While (myReader.Read())
  MsgBox(myReader.GetString(0))
  counter = counter + 1
  If counter >= 5 Then Exit Do
Loop
myConn.Close()