我用下面的代码来更新整块数据: VARIANT varBLOB;
// ------------------- append the data-block -----------------------

SAFEARRAY *psa;
SAFEARRAYBOUND rgsabound[1];

rgsabound[0].lLbound = 0;
rgsabound[0].cElements = nLen ;
psa = SafeArrayCreate(VT_UI1, 1, rgsabound);
LPBYTE lpNextBuf = pData ; 
for (long i = 0; i < nLen ; i++)
SafeArrayPutElement (psa, &i, lpNextBuf++);
varBLOB.vt = VT_ARRAY | VT_UI1;
varBLOB.parray = psa;
pRecordset->GetFields()->GetItem((LPCTSTR) strBlock)->AppendChunk(varBLOB);

if (SafeArrayDestroy(psa )!=S_OK ) 
ASSERT(FALSE ) ; 

// -------------------
pRecordset->Update();追加数据的数据是怎样的?谢谢。 

解决方案 »

  1.   

    在 Field 对象上的第一个 AppendChunk 调用将数据写入字段,覆盖任何现有数据。后续的 AppendChunk 调用向现有数据中添加数据。有个例外
    如果要将数据追加到一个字段然后在当前记录中设置或读取其他字段的值,ADO 会认为已完成向第一个字段追加数据。
    如果在第一个字段上再次调用 AppendChunk 方法,ADO 将把这次调用解释为新的 AppendChunk 操作并覆盖现有数据。可以连续调用AppendChunk把不同的安全数组里的数据,存在一个字段上
      

  2.   

    在同一个Fields对象上连续调用两次AppendChunk?能否给出大概源码?
      

  3.   

    我的意思是在调用 AppendChunk之前数据里就保存有数据,当我调用AppendChunk时希望把新数据添加到原有数据的末尾而不覆盖原有的数据。
      

  4.   

    哦,这个么,当对一个select的field第一次调用appendchunk,肯定是覆盖的。不可能不覆盖你可以变通一下,先读取GetChunk原来的数据,然后再合并新数据,再Appendchunk
      

  5.   

    Sql server 有UPDATETEXT这样一个方法