Delen via


Binding parameters ODBC

Elke parameter in een SQL-instructie moet worden gekoppeld aan of afhankelijk zijn van een variabele in de toepassing voordat de instructie wordt uitgevoerd. Wanneer de toepassing een variabele aan een parameter koppelt, wordt die variabele - adres, C-gegevenstype, enzovoort - aan het stuurprogramma beschreven. Ook wordt de parameter zelf beschreven: SQL-gegevenstype, precisie enzovoort. Het stuurprogramma slaat deze informatie op in de structuur die voor die instructie wordt onderhouden en gebruikt de informatie om de waarde op te halen uit de variabele wanneer de instructie wordt uitgevoerd.

Parameters kunnen op elk gewenst moment worden gebonden of opnieuw gebonden voordat een instructie wordt uitgevoerd. Als een parameter rebound is nadat een instructie is uitgevoerd, is de binding pas van toepassing als de instructie opnieuw wordt uitgevoerd. Als u een parameter aan een andere variabele wilt binden, koppelt een toepassing de parameter gewoon opnieuw met de nieuwe variabele; de vorige binding wordt automatisch vrijgegeven.

Een variabele blijft gebonden aan een parameter totdat een andere variabele is gebonden aan de parameter, totdat alle parameters niet afhankelijk zijn door SQLFreeStmt aan te roepen met de optie SQL_RESET_PARAMS of totdat de instructie wordt vrijgegeven. Daarom moet de toepassing ervoor zorgen dat variabelen pas worden vrijgemaakt nadat ze niet afhankelijk zijn. Zie Buffers toewijzen en vrijmaken voor meer informatie.

Omdat parameterbindingen alleen informatie zijn die is opgeslagen in de structuur die door het stuurprogramma voor de instructie wordt onderhouden, kunnen ze in elke volgorde worden ingesteld. Ze zijn ook onafhankelijk van de SQL-instructie die wordt uitgevoerd. Stel dat een toepassing drie parameters bindt en vervolgens de volgende SQL-instructie uitvoert:

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

Als de toepassing vervolgens onmiddellijk de SQL-instructie uitvoert

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

in dezelfde instructiegreep worden de parameterbindingen voor de INSERT-instructie gebruikt omdat dit de bindingen zijn die zijn opgeslagen in de instructiestructuur. In de meeste gevallen is dit een slechte programmeerpraktijk en moet worden vermeden. In plaats daarvan moet de toepassing SQLFreeStmt aanroepen met de optie SQL_RESET_PARAMS om alle oude parameters los te koppelen en vervolgens nieuwe parameters te binden.

Deze sectie bevat de volgende onderwerpen.