|
OLEDB+МSS200+unicode проблема
|
|||
---|---|---|---|
#18+
Привет всем, народ! -Win2K -MSSQL2000 -VC++6 Я столкнулся cо следующей проблемкой: когда обращаюсь к полю, определенному как nchar/nvarchar, получаю обрезанные данные. Это происходит только тогда, когда данные имеют размер больше половины размера ДБ колонки. Ниже привожу код: колонка "descr", размер 10, тип nchar, данные, которые там сидят "аааааааааа" ... CCommand<CDynamicAccessor> cmd; CDBPropSet dbPropSet(DBPROPSET_ROWSET); dbPropSet.AddProperty(DBPROP_SERVERCURSOR, false); dbPropSet.AddProperty(DBPROP_CLIENTCURSOR, true); dbPropSet.AddProperty(DBPROP_CANSCROLLBACKWARDS, true); CDataSource ds; ds.OpenFromInitializationString("my conn string"); apSession = SessionPtr(new CSession); apSession->Open(ds)); cmd.Open(*apSession, "select descr from mytable where id = 1", &dbPropSet, NULL, DBGUID_DBSQL); VARIANT * resultValue; DBTYPE dbType; cmd.GetColumnType(1UL, &dbType); if(dbType == DBTYPE_WSTR) { V_VT(resultValue) = VT_BSTR; V_BSTR(resultValue) = ::SysAllocString(reinterpret_cast<WCHAR*> (cmd.GetValue(1UL))); } resultValue - "аааа" Где тут собака зарыта, народ?!!! Почему ОЛЕ "берет" длинну поля, делит на 2 и возвращает только половину? Где я ошибаюсь? Помогите, народ!!!! Заранее благодарен, Евгений. evgenyv@yahoo.com ... |
|||
:
Нравится:
Не нравится:
|
|||
18.05.2003, 19:13 |
|
OLEDB+МSS200+unicode проблема
|
|||
---|---|---|---|
#18+
Если всегда получаешь только 4 байта, то есть сомнения, что вместо области чтения данных поставляешь адрес этой области( 4 байта) и там же получаешь только эти 4 символа. Посмотри внимательно. Может найдешь сам. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2003, 09:31 |
|
OLEDB+МSS200+unicode проблема
|
|||
---|---|---|---|
#18+
Нет, не всегда 4 байта. В том то и дело. Могу получить и 100, если поле в ДБ определено размером 200 символов, а если поле определено как 1, то этот символ не получаю voobще. Возвращается пустой стринг и статус комманда отличен от DBSTATUS_S_OK. Он равен = DBSTATUS_S_TRUNCATED. Спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2003, 09:46 |
|
|
start [/forum/topic.php?fid=57&fpage=480&tid=2036312]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
28ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
31ms |
get tp. blocked users: |
1ms |
others: | 14ms |
total: | 115ms |
0 / 0 |