Gewusst wie: Festlegen und Abrufen von Parametern für Befehlsobjekte
Aktualisiert: November 2007
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.
Hinweis: |
---|
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
Erstellen Sie Parameter, für deren Direction-Eigenschaft 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.
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
Erstellen Sie Parameter, deren Direction-Eigenschaft auf ReturnValuefestgelegt wird.
Hinweis: Das Parameterobjekt für den Rückgabewert muss das erste Element in der Parameterauflistung sein.
Stellen Sie sicher, dass der Datentyp des Parameters mit dem des erwarteten Rückgabewerts übereinstimmt.
Hinweis: 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 Ändern von Daten mit gespeicherten Prozeduren (ADO.NET).
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
'DataAdapter'-Parameter (ADO.NET)
Ändern von Daten mit gespeicherten Prozeduren (ADO.NET)