我用C语言开发Oracle数据库程序.现在遇到,记录输出的问题.请个位帮忙指点一二,程序(linux下)是这样的:
char *rname;
char *rurl;
rname=(char*)malloc(100);
  rurl=(char*)malloc(100);
memset(rname,0,sizeof(rname));
memset(rurl,0,sizeof(rurl));
if ((a=OCIDefineByPos ( select_p, 
                       &defnp[0],
                       errhp,
                       1,
                       &rname,
                       sizeof(rname),
                       SQLT_STR,
                       (dvoid *) 0,
                       (dvoid *) 0,
                       (dvoid *) 0,
                       OCI_DEFAULT)) ||
      (b=OCIDefineByPos ( select_p, 
                       &defnp[1],
                       errhp,
                       2,
                       &rurl,
                       sizeof(rurl),
                       SQLT_STR,
                       (dvoid *) 0,
                       (dvoid *) 0,
                       (dvoid *) 0,
                       OCI_DEFAULT)))
  {
    printf ("Failed to define\n");
    return (OCI_ERROR);
  }
 FILE *fp;
 fp=fopen("test.txt","w");
  //循环取记录 OCIStmtFetch (select_p, errhp,1,OCI_FETCH_NEXT,OCI_DEFAULT)))
  while((swResult=OCIStmtFetch(select_p,errhp,1,OCI_FETCH_NEXT,OCI_DEFAULT)) != OCI_NO_DATA)
  {
  fprintf(fp,"%s\n%s\n",rname,rurl);

  }
  if(fp)
  fclose(fp);但输出结果是乱码.我不知该怎么将rname,rurl打印出来.请大家帮忙指点,谢谢!

解决方案 »

  1.   

    char开的数据我知道怎么处理了.就是将
    char *rname;
    char *rurl;
    rname=(char*)malloc(100);
     rurl=(char*)malloc(100);
    换成
    char rname[100];
    char rurl[100];
    //rname=(char*)malloc(100);
     //rurl=(char*)malloc(100);
    就要以了.但关于oracle里是number类型的数据怎么处理呀.变量怎么声明,并打印?
    另外如果对一个表insert和update时,只执行OCIStmtPrepare (select_p, errhp,mySql, strlen(mySql), OCI_NTV_SYNTAX, OCI_DEFAULT) 和   OCITransCommit (svchp,errhp,OCI_DEFAULT ); 怎么不以呢?加了OCIStmtExecute也不成.为什么?请各位指点..