Здесь есть некоторый код ADODB, который извлекает BSTR из набора записей, но я не уверен, должен ли BSTR быть освобожден с помощью SysFreeString или нет. Прямо сейчас это работает и, кажется, работает, но вы должны сделать это самостоятельно?
BSTR bstr = m_pRecordset->Fields->GetItem ( field )->Value.bstrVal;
int len = SysStringLen(bstr);
while (len > 0 && iswspace(bstr[len-1])) len--;
BSTR newstr = SysAllocStringLen(bstr, len);
SysFreeString(bstr);
SysFreeString(newstr);