Udostępnij przez


Parametry powiązania ODBC

Każdy parametr w instrukcji SQL musi być skojarzony lub powiązany ze zmienną w aplikacji przed wykonaniem instrukcji. Gdy aplikacja wiąże zmienną z parametrem, opisuje zmienną — adres, typ danych języka C itd. — do sterownika. Opisuje również sam parametr — typ danych SQL, precyzję i tak dalej. Sterownik przechowuje te informacje w strukturze przechowywanej dla tej instrukcji i używa informacji do pobierania wartości ze zmiennej po wykonaniu instrukcji.

Parametry można powiązać lub związać ponownie w dowolnym momencie przed wykonaniem instrukcji. Jeśli parametr jest ponownie powiązany po wykonaniu instrukcji, powiązanie nie ma zastosowania aż do ponownego wykonania instrukcji. Aby powiązać parametr z inną zmienną, aplikacja po prostu ponownie łączy parametr z nową zmienną; poprzednie powiązanie jest automatycznie zwalniane.

Zmienna pozostaje powiązana z parametrem, dopóki inna zmienna nie zostanie powiązana z parametrem, dopóki wszystkie parametry nie zostaną ograniczone przez wywołanie narzędzia SQLFreeStmt z opcją SQL_RESET_PARAMS lub do momentu wydania instrukcji. Z tego powodu aplikacja musi mieć pewność, że zmienne nie są zwalniane, dopóki nie zostaną odzwiązywane. Aby uzyskać więcej informacji, zobacz Przydzielanie i zwalnianie buforów.

Ponieważ powiązania parametrów to tylko informacje przechowywane w strukturze zarządzanej przez sterownik dla zapytania, można je ustawić w dowolnej kolejności. Są one również niezależne od wykonywanej instrukcji SQL. Załóżmy na przykład, że aplikacja wiąże trzy parametry, a następnie wykonuje następującą instrukcję SQL:

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

Jeśli aplikacja natychmiast wykonuje instrukcję SQL

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

przy użyciu tego samego uchwytu instrukcji powiązania parametrów dla instrukcji INSERT są używane, ponieważ te powiązania są przechowywane w strukturze instrukcji. W większości przypadków jest to słaba praktyka programowa i należy jej unikać. Zamiast tego aplikacja powinna wywołać narzędzie SQLFreeStmt z opcją SQL_RESET_PARAMS, aby usunąć powiązanie wszystkich starych parametrów, a następnie powiązać nowe.

Ta sekcja zawiera następujące tematy.