【发布时间】:2009-12-22 23:09:50
【问题描述】:
我需要将 BLOB 写入 SQL Server 数据库中的 varbinary 列。听起来很简单,只是我必须在 C++ 中完成。我一直在使用 ADO 进行数据库操作(第一个问题:这是最好的技术吗?)所以我得到了 _Stream 对象,并创建了一个记录集对象,其余的操作从那里分崩离析。如果有人可以提供一个示例,说明如何准确执行这个看似简单的操作,那就太好了!我的二进制数据存储在一个无符号字符数组中。这是我从网上找到的少量资料拼凑而成的codenstein:
_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();
【问题讨论】: