Microsoft KB Archive/234146

= PRB: ATL Consumer Wizard Code Truncates SQL Server text field to a 1024 TCHAR Array =

Article ID: 234146

Article Last Modified on 10/19/2002

-

APPLIES TO


 * Microsoft Visual C++ 6.0 Enterprise Edition

-



This article was previously published under Q234146



SYMPTOMS
The ATL consumer wizard maps DBTYPE_STR fields, such as SQL Server's text fields, to TCHAR arrays of 1024 bytes instead of an ISequentialStream pointer. The data for the columns is truncated to 1024 bytes.



CAUSE
This behavior is by design.



RESOLUTION
If data larger than 1024 is expected, you can increase the size of the array in your accessor class. For example, by default your code may look like the following:

TCHAR m_TextColumn[1024]; ... COLUMN_ENTRY(3, m_TextColumn); Change the 1024 to the desired maximum length of the data.

Another alternative is to use ISequentialStream to retrieve and set the data. ISequentialStream allows an application to read and write pieces at a time and a predefined maximum buffer size is not required. You would change the code above to:

ISequentialStream * m_TextColumn; ... BLOB_ENTRY(3, IID_ISequentialStream, STGM_READ,m_TextColumn);

