一:c语言
//char* 转换成_variant_t
//以读取文件的方式,获取本地文件数据流并添加到数据库中
FILE *fp=NULL;
BYTE *avdata=NULL;//BYTE data;
fp=fopen(covertPathName,"rb");
if (!fp)
{
printf("读取文件失败\n");
sprintf(strErr,"读取文件失败\n");
int length=strlen(strErr);
fwrite(strErr,sizeof(char),length,awriteFile);
covFileFlag=FALSE;
return covFileFlag;
}
long savef_size= fsize+1;
printf("%dkb",(savef_size)/1024);
avdata=(BYTE*)malloc(savef_size);
memset(avdata,savef_size,0);
while (!feof(fp))
{
fread(avdata,sizeof(BYTE),savef_size,fp);
}
//关闭打开的文件
if (!fclose(fp))
{
printf("关闭fp成功\n");
}
else
{
printf("关闭fp失败\n");
}
fp=0;
//下面把BYTE*类型转换成SAFEARRAY
if (NULL==avdata)
{
printf("读取文件内容为空!\n");
sprintf(strErr,"读取文件内容为空\n");
int length=strlen(strErr);
fwrite(strErr,sizeof(char),length,awriteFile);
covFileFlag=FALSE;
return covFileFlag;
}
long lDataSize = 0;
SAFEARRAY *pSA = NULL;
pSA=(SAFEARRAY*)malloc(savef_size);
SAFEARRAYBOUND rgSABound[1] = {0};
rgSABound[0].lLbound = 0;
rgSABound[0].cElements = savef_size;
pSA = SafeArrayCreate(VT_UI1,1,rgSABound);
BYTE *pBuf = NULL;
SafeArrayAccessData(pSA,(void **) &pBuf);
memcpy(pBuf,avdata,savef_size);
SafeArrayUnaccessData(pSA);
_variant_t vtFld;
vtFld.vt = VT_ARRAY|VT_UI1;
vtFld.parray = pSA;
rdp->GetFields()->GetItem("DATA")->AppendChunk(vtFld);
rdp->Update();
rdp->Close();