Aracılığıyla paylaş


Veri Arabellek Uzunluğu

Uygulama, BufferLength veya benzer bir adla anılan bir bağımsız değişken aracılığıyla veri arabelleğinin bayt uzunluğunu sürücüye geçirir. Örneğin, aşağıdaki SQLBindCol çağrısında, uygulama ValuePtr arabelleğinin uzunluğunu belirtir (sizeof(ValuePtr)):

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

Sürücü, çıkış dizesi bağımsız değişkeni olan herhangi bir işlevin arabellek uzunluğu bağımsız değişkeninde her zaman karakter sayısını değil bayt sayısını döndürür.

Veri arabelleği uzunlukları yalnızca çıkış arabellekleri için gereklidir; sürücü, arabelleğin sonundan sonra yazmaktan kaçınmak için bunları kullanır. Ancak sürücü, veri arabelleği uzunluğunu yalnızca arabellek karakter veya ikili veriler gibi değişken uzunlukta veriler içerdiğinde denetler. Arabellek bir tamsayı veya tarih yapısı gibi sabit uzunlukta veriler içeriyorsa, sürücü veri arabelleği uzunluğunu yoksayar ve arabelleğin verileri barındıracak kadar büyük olduğunu varsayar; yani sabit uzunluktaki verileri hiçbir zaman kesmez. Bu nedenle, uygulamanın sabit uzunlukta veriler için yeterince büyük bir arabellek ayırması önemlidir.

Veri dışı çıkış dizelerinin kesilmesi gerçekleştiğinde ( SQLGetCursorName için döndürülen imleç adı gibi), arabellek uzunluğu bağımsız değişkeninde döndürülen uzunluk mümkün olan en fazla karakter uzunluğudur.

Sürücü bu arabelleklere yazmadığından, giriş arabellekleri için veri arabelleği uzunlukları gerekli değildir.

Bu bölüm aşağıdaki konuları içerir.