CDBVariant, CStringA und SQL Server - VARCHAR(MAX)
-
Hallo,
folgender Code soll mir aus einer MS SQL Server DB eine Spalte des Typs VARCHAR(MAX) auslesen.
CDatabase database; database.OpenEx(...); CRecordset result(&database); result.Open(CRecordset::forwardOnly, _T("SELECT ... FROM ..."), CRecordset::readOnly); CDBVariant var; while (!result.IsEOF()) { result.GetFieldValue((short)0, var); if (var.m_dwType == DBVT_ASTRING) { CStringA* string = var.m_pstringA; cout << string->GetBuffer() << endl; } result.MoveNext(); } result.Close(); database.Close();
Das CDBVariant Objekt liefert als Datentyp CStringA.
Dieser enthält auch Daten, jedoch immer genau die Hälfte der Zeichen die in der DB steht.
Genauer gesagt, die erste Hälfte der Zeichen, die zweite Hälfte wird abgeschnitten.
(vereinfachtes) Beispiel: Inhalt in der DB "123456", CStringA liefert "123".Warum werden die Zeichen abgeschnitten, bzw. wie kann man das verhindern?
MfG
-
Arbeitest du in deinem Projekt mit Unicode?