मैं ओडीबीसी प्रोग्रामिंग से परिचित नहीं हूं, लेकिन पहली नजर में, एक मुद्दा जो मैं देख सकता हूं वह यह है कि आप मानते हैं कि आपके डेटा की लंबाई आपके बफर आकार से अधिक है। लेकिन अंतिम पठन बिल्कुल पर लौटने की गारंटी नहीं है 500 बाइट डेटा।
आपको कुछ ऐसा लिखना चाहिए। शायद:
string str;
SQLCHAR buf[500];
SQLLEN cbLeft; // #bytes remained
while ((SQL_SUCCEEDED(SQLGetData(StmtHandle,
colnum,
SQL_C_BINARY,
buf,
sizeof(buf),
&cbLeft))))
// ^^^^^^^
{
string data(reinterpret_cast< const char* >(buf),
reinterpret_cast< const char* >(buf)
+ cbLeft);
// ^^^^^^
str = str + data;
कृपया कुछ मिनट के लिए Length का उपयोग करके समीक्षा करें। /संकेतक मान यह जांचने के लिए कि लंबाई/संकेतक मान . कैसे है उपयोग किया जाता है।