Udostępnij przez


Uchwyty deskryptora

Deskryptor jest kolekcją metadanych opisujących parametry instrukcji SQL lub kolumn zestawu wyników, co jest widoczne dla aplikacji lub sterownika (nazywanego również implementacją). W związku z tym deskryptor może wypełnić dowolną z czterech ról:

  • Deskryptor parametrów aplikacji (APD). Zawiera informacje o buforach aplikacji powiązanych z parametrami w instrukcji SQL, takich jak adresy, długości i typy danych języka C.

  • Deskryptor parametru implementacji (IPD). Zawiera informacje o parametrach w instrukcji SQL, takie jak ich typy danych SQL, długości i możliwość przyjmowania wartości null.

  • Deskryptor wiersza aplikacji (ARD). Zawiera informacje o buforach aplikacji powiązanych z kolumnami w zestawie wyników, takich jak ich adresy, długości i typy danych języka C.

  • Deskryptor wiersza implementacji (IRD). Zawiera informacje o kolumnach w zestawie wyników, takie jak ich typy danych SQL, długości i możliwość przechowywania wartości null.

Cztery deskryptory (po jednym dla każdej roli) są przydzielane automatycznie po przydzieleniu instrukcji. Są one nazywane deskryptorami przydzielanymi automatycznie i są zawsze skojarzone z tą instrukcją. Aplikacje mogą również przydzielać deskryptory za pomocą polecenia SQLAllocHandle. Są one nazywane jawnie przydzielonymi deskryptorami. Są one przydzielane na połączenie i mogą być skojarzone z jednym lub więcej zapytań na tym połączeniu, aby spełniać rolę APD lub ARD w tych zapytaniach.

Większość operacji w odBC można wykonywać bez jawnego użycia deskryptorów przez aplikację. Deskryptory zapewniają jednak wygodny skrót do niektórych operacji. Załóżmy na przykład, że aplikacja chce wstawić dane z dwóch różnych zestawów buforów. Aby użyć pierwszego zestawu buforów, wielokrotnie wywołuje SQLBindParameter, aby powiązać je z parametrami w instrukcji INSERT, a następnie ją wykonać. Aby użyć drugiego zestawu buforów, należy powtórzyć ten proces. Alternatywnie można skonfigurować powiązania do pierwszego zestawu buforów w jednym deskryptorze i do drugiego zestawu buforów w innym deskryptorze. Aby przełączać się między zestawami powiązań, aplikacja po prostu wywoła SQLSetStmtAttr i skojarzy poprawny deskryptor z instrukcją jako deskryptor APD.

Aby uzyskać więcej informacji na temat deskryptorów, zobacz Typy deskryptorów.