c语言与vc++向oracle中添加bolb数据时的异同

一: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();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值