Jegyzet
Az oldalhoz való hozzáférés engedélyezést igényel. Próbálhatod be jelentkezni vagy könyvtárat váltani.
Az oldalhoz való hozzáférés engedélyezést igényel. Megpróbálhatod a könyvtár váltását.
A puffer bármely olyan alkalmazásmemória, amellyel adatokat továbbíthat az alkalmazás és az illesztőprogram között. Az alkalmazáspufferek például társíthatók az SQLBindCol eredményhalmaz-oszlopaihoz, vagy azokhoz kötöttek. Az egyes sorok beolvasása során a pufferek minden oszlopához visszaadja az adatokat. A bemeneti pufferekkel adatokat továbbíthat az alkalmazásból az illesztőprogramnak; a kimeneti pufferekkel adatokat ad vissza az illesztőprogramból az alkalmazásba.
Megjegyzés:
Ha egy ODBC-függvény SQL_ERROR ad vissza, a függvényhez tartozó kimeneti argumentumok tartalma nincs meghatározva.
Ez a vita elsősorban határozatlan típusú pufferekkel foglalkozik. Ezeknek a puffereknek a címei SQLPOINTER típusú argumentumként jelennek meg, például az SQLBindColTargetValuePtr argumentumaként. Az itt tárgyalt elemek némelyike, például a pufferekkel használt argumentumok, a sztringek illesztőnek való átadásához használt argumentumokra is vonatkoznak, például az SQLTablesTableName argumentumára.
Ezek a pufferek általában párban vannak. Az adatpufferek az adatok átadására szolgálnak, míg a hossz-/mutatópufferek az adatpufferben lévő adatok hosszának átengedésére szolgálnak, vagy egy speciális érték, például a SQL_NULL_DATA, amely azt jelzi, hogy az adatok NULL értékűek. Az adatpufferben lévő adatok hossza eltér az adatpuffer hosszától. Az alábbi ábra az adatpuffer és a hossz/mutató puffer közötti kapcsolatot mutatja be.
Ha az adatpuffer változó hosszúságú adatokat, például karaktert vagy bináris adatokat tartalmaz, hossz-/mutatópufferre van szükség. Ha az adatpuffer rögzített hosszúságú adatokat , például egész vagy dátumstruktúrát tartalmaz, a hossz-/mutatópuffer csak a mutatóértékek átadásához szükséges, mert az adatok hossza már ismert. Ha egy alkalmazás rögzített hosszúságú adatokat tartalmazó hossz-/mutatópuffert használ, az illesztőprogram figyelmen kívül hagyja a benne megadott hosszokat.
Az adatpuffer és a benne lévő adatok hossza bájtban van megadva, szemben a karakterekkel. Ez a különbség nem lényeges az ANSI-sztringeket használó programok esetében, mivel a bájtok és karakterek hossza megegyezik.
Ha az adatpuffer egy illesztőprogram által definiált leíró mezőt, diagnosztikai mezőt vagy attribútumot jelöl, az alkalmazásnak jeleznie kell az Illesztőprogram-kezelőnek a mező vagy attribútum értékét jelző függvényargumentum jellegét. Az alkalmazás ezt úgy hajtja végre, hogy beállítja a hossz argumentumot bármely függvényhívásban, amely a mezőt vagy attribútumot az alábbi értékek egyikére állítja. (Ugyanez igaz a mező vagy attribútum értékeit lekérő függvényekre is, azzal a kivétellel, hogy az argumentum a beállításfüggvény argumentumában szereplő értékekre mutat.)
Ha a mező vagy attribútum értékét megadó függvényargumentum egy karaktersorozatra mutat, akkor a hossz argumentum a karaktersorozat hossza vagy az SQL_NTS értéke lesz.
Ha a mező vagy attribútum értékét jelző függvényargumentum egy bináris pufferre mutató mutató, az alkalmazás a SQL_LEN_BINARY_ATTR(hossz) makró eredményét a hossz argumentumba helyezi. Ez negatív értéket helyez el a hossz argumentumban.
Ha a mező vagy attribútum értékét jelző függvényargumentum nem karaktersztringre vagy bináris karakterláncra mutató mutató, akkor a hosszargumentumnak SQL_IS_POINTER értékkel kell rendelkeznie.
Ha a mező vagy attribútum értékét jelző függvényargumentum rögzített hosszúságú értéket tartalmaz, a hosszargumentum adott esetben SQL_IS_INTEGER, SQL_IS_UINTEGER, SQL_IS_SMALLINT vagy SQL_ISI_USMALLINT.
Ez a szakasz a következő témaköröket tartalmazza.