Deskriptorhandles

Ein Deskriptor ist eine Sammlung von Metadaten, die die Parameter einer SQL-Anweisung oder der Spalten eines Resultsets beschreiben, wie von der Anwendung oder dem Treiber (auch als Implementierung bezeichnet). Daher kann ein Deskriptor vier Rollen ausfüllen:

  • Application Parameter Descriptor (APD). Enthält Informationen zu den Anwendungspuffern, die an die Parameter in einer SQL-Anweisung gebunden sind, z. B. deren Adressen, Längen und C-Datentypen.

  • Implementierungsparameterdeskriptor (IPD). Enthält Informationen zu den Parametern in einer SQL-Anweisung, z. B. deren SQL-Datentypen, Längen und Nullierbarkeit.

  • Application Row Descriptor (ARD). Enthält Informationen zu den Anwendungspuffern, die an die Spalten in einem Resultset gebunden sind, z. B. deren Adressen, Längen und C-Datentypen.

  • Implementierungszeilendeskriptor (IRD). Enthält Informationen zu den Spalten in einem Resultset, z. B. deren SQL-Datentypen, Längen und Nullierbarkeit.

Vier Deskriptoren (jeweils eine Rolle ausfüllen) werden automatisch zugewiesen, wenn eine Anweisung zugewiesen wird. Diese werden als automatisch zugewiesene Deskriptoren bezeichnet und sind immer dieser Anweisung zugeordnet. Anwendungen können auch Deskriptoren mit SQLAllocHandle zuordnen. Diese werden als explizit zugewiesene Deskriptoren bezeichnet. Sie werden einer Verbindung zugeordnet und können einer oder mehreren Aussagen zu dieser Verbindung zugeordnet werden, um die Rolle einer APD oder ARD zu diesen Aussagen zu erfüllen.

Die meisten Vorgänge in ODBC können ohne explizite Verwendung von Deskriptoren von der Anwendung ausgeführt werden. Deskriptoren bieten jedoch eine bequeme Verknüpfung für einige Vorgänge. Angenommen, eine Anwendung möchte Daten aus zwei verschiedenen Puffergruppen einfügen. Um den ersten Satz von Puffern zu verwenden, würde sqlBindParameter wiederholt aufgerufen, um sie an die Parameter in einer INSERT-Anweisung zu binden und dann die Anweisung auszuführen. Um den zweiten Satz von Puffern zu verwenden, würde dieser Vorgang wiederholt. Alternativ können Bindungen an den ersten Satz von Puffern in einem Deskriptor und an den zweiten Satz von Puffern in einem anderen Deskriptor eingerichtet werden. Um zwischen den Bindungen zu wechseln, ruft die Anwendung einfach SQLSetStmtAttr auf und ordnet die richtige Beschreibung der Anweisung als APD zu.

Weitere Informationen zu Deskriptoren finden Sie unter Typen von Deskriptoren.