简单问题请教各位
数据库表中一个字段存储的是图片,现在想要更换图片,用ADO的Field的AppendChunk方法不行啊,它只能追加,不能替换。请问各位大侠如何才能实现替换图片字段?谢谢!(或者,如何删除图片字段?)
[解决办法]
就是用AppendChunk(),你肯定哪里出问题了,看我这个,也是往数据库写入图片的
------------------------------------------
BYTE *buf;
long len;
len=file.GetLength();
buf=(BYTE*)malloc(len);
file.ReadHuge(buf,len);
//build a SAFFERRAY
SAFEARRAY* psa;
SAFEARRAYBOUND rgsabound[1];
rgsabound[0].lLbound = 0;
rgsabound[0].cElements = len;
psa = SafeArrayCreate(VT_UI1, 1, rgsabound);
BYTE *pBufEx;
pBufEx = buf;
for (long i = 0; i <len; i++)
SafeArrayPutElement (psa, &i,pBufEx++);
VARIANT varData;
varData.vt = VT_ARRAY | VT_UI1;
varData.parray = psa;
file.Close();
//写入数据库
//Execute SQL statement
pRs.CreateInstance( "ADODB.Recordset ");
pRs-> Open( "select * from test where id = '5 ' ",_variant_t((IDispatch *)pConn,TRUE),adOpenStatic,adLockOptimistic,adCmdText);
while(!(pRs-> ADOEOF))
{
pRs-> Fields-> GetItem( "test ")-> AppendChunk(varData);
pRs-> Update();
pRs-> MoveNext();
}
[解决办法]
AppendChunk()可以添加也可以修改,参数上的问题,具体也记不清了。
[解决办法]
如果 Field 对象 Attributes 属性中的 adFldLong 位被设置为真,则可以对该字段使用 AppendChunk 方法。
在 Field 对象上的第一个 AppendChunk 调用将数据写入字段,覆盖任何现有的数据,随后的 AppendChunk 调用则添加到现有数据。如果将数据追加到一个字段,然后设置或读取当前记录中另一个字段的值,ADO 则认为已将数据追加到第一个字段。如果在第一个字段上再次调用 AppendChunk 方法,那么 ADO 将调用解释为新的 AppendChunk 操作并覆盖现有数据。访问其他 Recordset 对象(并非第一个 Recordset 对象的复制品)中的字段将不会破坏 AppendChunk 操作。
调用 Field 对象的 AppendChunk 时如果没有当前记录,将发生错误。