Megosztás:


Adatpuffer hossza

Az alkalmazás az adatpuffer bájthosszát átadja az illesztőnek egy BufferLength vagy hasonló név nevű argumentumban. Az SQLBindCol következő hívásában például az alkalmazás a ValuePtr puffer hosszát adja meg (sizeof(ValuePtr)):

SQLCHAR      ValuePtr[50];  
SQLINTEGER   ValueLenOrInd;  
SQLBindCol(hstmt, 1, SQL_C_CHAR, ValuePtr, sizeof(ValuePtr), &ValueLenOrInd);  

Az illesztők mindig a bájtok számát, nem pedig a karakterek számát fogják visszaadni a kimeneti sztring argumentummal rendelkező függvények pufferhossz argumentumában.

Az adatpufferek hossza csak kimeneti pufferekhez szükséges; az illesztő azokat használja, hogy elkerülje a puffer végének írását. Az illesztőprogram azonban csak akkor ellenőrzi az adatpuffer hosszát, ha a puffer változó hosszúságú adatokat, például karakter- vagy bináris adatokat tartalmaz. Ha a puffer rögzített hosszúságú adatokat, például egész vagy dátumstruktúrát tartalmaz, az illesztőprogram figyelmen kívül hagyja az adatpuffer hosszát, és feltételezi, hogy a puffer elég nagy az adatok tárolásához; vagyis soha nem csonkolja a rögzített hosszúságú adatokat. Ezért fontos, hogy az alkalmazás elegendő nagy puffert foglaljon le a rögzített hosszúságú adatokhoz.

Ha nem adatkimeneti sztringek csonkolása történik (például az SQLGetCursorName-hoz visszaadott kurzornév), a pufferhossz argumentumban a visszaadott hossz a lehető legnagyobb karakterhossz.

Az adatpufferek hossza nem szükséges a bemeneti pufferekhez, mert az illesztőprogram nem ír ezekbe a pufferekbe.

Ez a szakasz a következő témaköröket tartalmazza.