Freigeben über


Binden von Parametern (ODBC)

Jeder Parameter in einer SQL-Anweisung muss einer Variablen in der Anwendung zugeordnet oder gebunden sein, bevor die Anweisung ausgeführt wird. Wenn die Anwendung eine Variable an einen Parameter bindet, wird diese Variable – Adresse, C-Datentyp usw. – an den Treiber beschrieben. Außerdem wird der Parameter selbst beschrieben – SQL-Datentyp, Genauigkeit usw. Der Treiber speichert diese Informationen in der Struktur, Standard für diese Anweisung enthalten ist, und verwendet die Informationen, um den Wert aus der Variablen abzurufen, wenn die Anweisung ausgeführt wird.

Parameter können jederzeit gebunden oder reboundiert werden, bevor eine Anweisung ausgeführt wird. Wenn ein Parameter nach der Ausführung einer Anweisung rebound wird, wird die Bindung erst angewendet, wenn die Anweisung erneut ausgeführt wird. Um einen Parameter an eine andere Variable zu binden, verbindet eine Anwendung einfach den Parameter mit der neuen Variablen. die vorherige Bindung wird automatisch freigegeben.

Eine Variable wird erneut Standard an einen Parameter gebunden, bis eine andere Variable an den Parameter gebunden ist, bis alle Parameter durch Aufrufen von SQLFreeStmt mit der Option SQL_RESET_PARAMS oder bis zur Veröffentlichung der Anweisung ungebunden sind. Aus diesem Grund muss die Anwendung sicherstellen, dass Variablen erst freigegeben werden, nachdem sie ungebunden sind. Weitere Informationen finden Sie unter "Allocating and Freeing Buffers".

Da Parameterbindungen nur Informationen sind, die in der Struktur gespeichert Standard vom Treiber für die Anweisung enthalten sind, können sie in beliebiger Reihenfolge festgelegt werden. Sie sind auch unabhängig von der SQL-Anweisung, die ausgeführt wird. Angenommen, eine Anwendung bindet drei Parameter und führt dann die folgende SQL-Anweisung aus:

INSERT INTO Parts (PartID, Description, Price) VALUES (?, ?, ?)  

Wenn die Anwendung dann sofort die SQL-Anweisung ausführt

SELECT * FROM Orders WHERE OrderID = ?, OpenDate = ?, Status = ?  

auf demselben Anweisungshandle werden die Parameterbindungen für die INSERT-Anweisung verwendet, da es sich dabei um die Bindungen handelt, die in der Anweisungsstruktur gespeichert sind. In den meisten Fällen ist dies eine schlechte Programmierpraxis und sollte vermieden werden. Stattdessen sollte die Anwendung SQLFreeStmt mit der Option SQL_RESET_PARAMS aufrufen, um alle alten Parameter aufzuheben und dann neue zu binden.

In diesem Abschnitt werden die folgenden Themen behandelt: