Мне нужно записать BLOB в столбец varbinary в базе данных SQL Server. Звучит просто, за исключением того, что я должен сделать это на C++. Я использую ADO для операций с базой данных (первый вопрос: это лучшая технология для использования?) Итак, у меня есть объект _Stream и созданный объект набора записей, а остальная часть операции отделена от него. Если кто-то может предоставить образец того, как именно выполнить эту, казалось бы, простое действие, которое было бы здорово !. Мои двоичные данные хранятся в массиве unsigned char. Вот codenstein, что я уже сшит из того, что мало я нашел в интернете:Запись данных BLOB в базу данных SQL Server с использованием ADO
_RecordsetPtr updSet;
updSet.CreateInstance(__uuidof(Recordset));
updSet->Open("SELECT TOP 1 * FROM [BShldPackets] Order by ChunkId desc",
_conPtr.GetInterfacePtr(), adOpenDynamic, adLockOptimistic, adCmdText);
_StreamPtr pStream ; //declare one first
pStream.CreateInstance(__uuidof(Stream)); //create it after
_variant_t varRecordset(updSet);
//pStream->Open(varRecordset, adModeReadWrite, adOpenStreamFromRecord, _bstr_t("n"), _bstr_t("n"));
_variant_t varOptional(DISP_E_PARAMNOTFOUND,VT_ERROR);
pStream->Open(
varOptional,
adModeUnknown,
adOpenStreamUnspecified,
_bstr_t(""),
_bstr_t(""));
_variant_t bytes(_compressStreamBuffer);
pStream->Write(_compressStreamBuffer);
updSet.GetInterfacePtr()->Fields->GetItem("Chunk")->Value = pStream->Read(1000);
updSet.GetInterfacePtr()->Update();
pStream->Close();
Так гораздо проще спасибо! Работал как шарм! Для тех из вас, кто боролся с этим, в качестве последнего шага мне пришлось использовать VARIANT, содержащий SafeArray, для хранения моих данных и передачи этого в вызове AppendChunk. –