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

来源:互联网 发布:swoole php 编辑:程序博客网 时间:2024/06/05 20:13

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

原创粉丝点击