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 változó hosszúságú karakteradatokra (például oszlopnevekre, dinamikus paraméterekre és sztringattribútum-értékekre) hivatkozó bemeneti paraméterekhez társított hosszparaméter tartozik. Ha az alkalmazás null karakterrel zárja le a karakterláncokat, a C-ben megszokott módon argumentumként adja meg a karakterlánc bájtban kifejezett hosszát (a null-terminátort nem beleértve) vagy SQL_NTS (Nullával lezárt karakterlánc). A nem negatív hosszúságú argumentum a társított sztring tényleges hosszát adja meg. A hosszargumentum lehet 0, amely nulla hosszúságú sztringet ad meg, amely különbözik a NULL értéktől. A negatív érték SQL_NTS a karakterlánc hosszának meghatározására utasítja az illesztőt a null-végződés karakterének meghatározásával.
Amikor az illesztőprogram visszaadja a karakteradatokat az alkalmazásnak, mindig nullával kell azokat lezárnia. Ez lehetővé teszi az alkalmazás számára, hogy sztringként vagy karaktertömbként kezelje az adatokat. Ha az alkalmazáspuffer nem elég nagy ahhoz, hogy az összes karakteradatot visszaadja, az illesztő csonkolja azokat a puffer bájthosszával kevesebb bájtra, mint a null-végpont karakter által igényelt bájtok száma, null értékűen leállítja a csonkolt adatokat, és tárolja azokat a pufferben. Ezért az alkalmazásoknak mindig extra helyet kell lefoglalnia a null-végpont karakter számára a karakteradatok lekéréséhez használt pufferekben. Például 50 karakternyi adat lekéréséhez 51 bájtos pufferre van szükség.
Az alkalmazásnak és az illesztőnek is különös gondot kell tennie a hosszú karakteradatok SQLPutData vagy SQLGetData használatával történő elküldésekor vagy lekérésekor. Ha az adatokat null-végű karakterláncok sorozataként adják át, a karakterláncok null-végű karaktereit el kell távolítani, mielőtt az adatok újra összeállíthatók.
Számos ODBC-programozó összekeveri a karakteradatokat és a C sztringeket. Ez az ODBC-függvények definiálásakor a C nyelv használatának egyik összetevője. Ha egy ODBC-illesztőprogram vagy -alkalmazás más nyelvet használ - ne feledje, hogy az ODBC nyelvfüggetlen -, ez a félreértés kevésbé valószínű.
Ha c sztringeket használ a karakteradatok tárolására, a null-végződésű karakter nem tekinthető az adatok részének, és nem számít bele a bájthosszába. Az "ABC" karakteradatok például "ABC\0" C sztringként vagy {'A', "B", "C" karaktertömbként tárolhatók. Az adatok bájthossza 3, függetlenül attól, hogy sztringként vagy karaktertömbként kezelik-e őket.
Bár az alkalmazások és illesztőprogramok általában C sztringeket (null értékű karaktertömböket) használnak a karakteradatok tárolására, erre nincs szükség. A C-ben a karakteradatok karakterek tömbjeként is kezelhetők (null-végződés nélkül), és a bájthossza külön van átadva a hossz-/mutatópufferben.
Mivel a karakteradatok nem null értékű tömbökben tárolhatók, és a bájthossza külön-külön van átadva, null karaktereket is beágyazhat a karakteradatokba. Az ODBC-függvények viselkedése azonban ebben az esetben nincs meghatározva, és az illesztőprogram-specifikus, hogy egy illesztőprogram megfelelően kezeli-e ezt. Így az interoperábilis alkalmazásoknak mindig olyan karakteradatokat kell kezelnie, amelyek bináris adatként beágyazott null karaktereket tartalmazhatnak.