Freigeben über


Gewusst wie: Festlegen und Abrufen von Parametern für Befehlsobjekte

Wenn Sie Befehlsobjekte direkt zum Ausführen von Befehlen für eine Datenbank verwenden, erfordern die ausgeführten SQL-Anweisungen bzw. gespeicherten Prozeduren häufig Parameter.Eine einfache Update-Anweisung, die Parameter erfordert, kann beispielsweise so aussehen:

UPDATE Employees
SET LastName = @LastName, FirstName = @FirstName, BirthDate = @BirthDate
WHERE (EmployeeID = @EmployeeID)

Wenn diese Anweisung ausgeführt wird, müssen Sie Werte für sämtliche Parameter (@LastName, @FirstName, @BirthDate und @EmployeeID) angeben.Zu diesem Zweck verwenden Sie Parameterobjekte.Befehlsobjekte unterstützen eine Parameterauflistung (z. B. Parameters), die eine Gruppe von Objekten des Typs SqlParameter, OleDbParameter, OdbcParameter oder OracleParameter enthält.Für jeden Parameter, der übergeben werden muss, gibt es in der Auflistung ein Parameterobjekt.Wenn Sie eine gespeicherte Prozedur aufrufen, benötigen Sie möglicherweise einen zusätzlichen Parameter, um den Rückgabewert der Prozedur anzunehmen.

HinweisHinweis

Wenn Sie ein Dataset verwenden, führen Sie Befehle in der Regel nicht direkt aus.Stattdessen übergeben Sie Parameter an TableAdapter-Abfragen. Weitere Informationen hierzu finden Sie unter Gewusst wie: Füllen eines Datasets mit Daten.

Festlegen von Parameterwerten

Bevor Sie einen Befehl ausführen, müssen Sie für jeden enthaltenen Parameter einen Wert festlegen.

So legen Sie einen Parameterwert fest

  • Legen Sie für jeden Parameter in der Parameterauflistung des Befehls die Value-Eigenschaft fest.

    Im folgenden Beispiel wird gezeigt, wie Sie Parameter vor dem Ausführen eines Befehls festlegen, der auf eine gespeicherte Prozedur verweist.In diesem Beispiel wird vorausgesetzt, dass Sie die Parameterauflistung mit den drei Parametern au_id, au_lname und au_fname konfiguriert haben.Die einzelnen Parameter werden über ihren Namen festgelegt, um deutlich zu machen, welcher Parameter jeweils angegeben wird.

    With oleDbCommand1
        .CommandText = "UpdateAuthor"
        .CommandType = System.Data.CommandType.StoredProcedure
        .Parameters("au_id").Value = "172-32-1176"
        .Parameters("au_lname").Value = "White"
        .Parameters("au_fname").Value = "Johnson"
    End With
    
    OleDbConnection1.Open()
    oleDbCommand1.ExecuteNonQuery()
    OleDbConnection1.Close()
    
    oleDbCommand1.CommandText = "UpdateAuthor";
    oleDbCommand1.CommandType = System.Data.CommandType.StoredProcedure;
    
    oleDbCommand1.Parameters["au_id"].Value = "172-32-1176";
    oleDbCommand1.Parameters["au_lname"].Value = "White";
    oleDbCommand1.Parameters["au_fname"].Value = "Johnson";
    
    oleDbConnection1.Open();
    oleDbCommand1.ExecuteNonQuery();
    oleDbConnection1.Close();
    

Abrufen von Rückgabewerten

Gespeicherte Prozeduren übergeben häufig Werte an die Anwendung, die sie aufgerufen hat.

So rufen Sie Werte ab, die von Prozeduren zurückgegeben werden

  1. Erstellen Sie Parameter, deren Direction-Eigenschaft auf "Output" oder "InputOutput" (wenn der Parameter in der Prozedur zum Empfangen und Senden von Werten verwendet wird) festgelegt ist.Stellen Sie sicher, dass der Datentyp des Parameters mit dem des erwarteten Rückgabewerts übereinstimmt.

  2. Nach der Ausführung der Prozedur lesen Sie die Value-Eigenschaft des zurückgegebenen Parameters aus.

So rufen Sie den Rückgabewert einer Prozedur ab

  1. Erstellen Sie Parameter, deren Direction-Eigenschaft auf "ReturnValue" festgelegt ist.

    HinweisHinweis

    Das Parameterobjekt für den Rückgabewert muss das erste Element in der Parameterauflistung sein.

  2. Stellen Sie sicher, dass der Datentyp des Parameters mit dem des erwarteten Rückgabewerts übereinstimmt.

    HinweisHinweis

    SQL-Anweisungen des Typs Update, Insert und Delete geben eine ganze Zahl zurück, die die Anzahl der von der Anweisung betroffenen Datensätze angibt.Sie können diesen Wert als Rückgabewert der ExecuteNonQuery-Methode abrufen.Weitere Informationen finden Sie unter Specifying Parameters and Return Values.

Im folgenden Beispiel wird gezeigt, wie Sie den Rückgabewert einer gespeicherten Prozedur mit dem Namen CountAuthors abrufen.In diesem Fall wird angenommen, dass der erste Parameter in der Parameterauflistung des Befehls den Namen "retvalue" trägt und als ReturnValue konfiguriert ist.

Dim returnValue As Integer

oleDbCommand1.CommandText = "CountAuthors"
oleDbCommand1.CommandType = CommandType.StoredProcedure

oleDbConnection1.Open()
oleDbCommand1.ExecuteNonQuery()
oleDbConnection1.Close()

returnValue = CType(oleDbCommand1.Parameters("retvalue").Value, Integer)
MessageBox.Show("Return Value = " & returnValue.ToString())
int returnValue;

oleDbCommand1.CommandText = "CountAuthors";
oleDbCommand1.CommandType = CommandType.StoredProcedure;

oleDbConnection1.Open();
oleDbCommand1.ExecuteNonQuery();
oleDbConnection1.Close();

returnValue = (int)(oleDbCommand1.Parameters["retvalue"].Value);
MessageBox.Show("Return Value = " + returnValue.ToString());

Siehe auch

Aufgaben

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

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

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

Gewusst wie: Ausführen einer gespeicherten Prozedur, die Zeilen zurückgibt

Gewusst wie: Ausführen einer gespeicherten Prozedur, die einen einzelnen Wert zurückgibt

Gewusst wie: Ausführen einer gespeicherten Prozedur, die keinen Wert zurückgibt

Konzepte

Abrufen von Daten für die Anwendung

Using Parameters with a DataAdapter

Specifying Parameters and Return Values