我程序如下,大家看看到底哪里错了.
MYSQL mysql;
MYSQL_RES *res;
MYSQL_ROW row;
int main(int argc,char *argv[])
{        int loca,i;
        unsigned long* len;
        unsigned long sum_len,se_len,sum1_len;
        FILE *fp,*fp1;
        char ch[3],str[513];        char buf[200000];
        char sql_str[200];        fp1=fopen("/home/yyy/yyydoc/yyy.jpg","r");
        fp=fopen("/home/yyy1.jpg","wb");        assert(mysql_init(&mysql)!=NULL);
        if(mysql_real_connect(&mysql,NULL,"root","guchengxian","test",0,NULL,0)==NULL)
        {
                fprintf(stderr,"error on connect: %s\n",mysql_error(&mysql));
                exit(EXIT_FAILURE);
        }        sprintf(buf,"insert into img(r_id,fld,blob_size) values(1,'");
        sum_len=strlen("insert into img(r_id,fld,blob_size) values(1,'");
        sum1_len=sum_len;
        while((se_len=fread(str,1,512,fp1))>0)
        {
                //unsigned long mysql_real_escape_string(MYSQL *mysql, char *to, const char *from, unsigned long length)
                sum1_len=sum1_len+se_len;
                se_len=mysql_real_escape_string(&mysql, &buf[sum_len],str, se_len);
                sum_len=sum_len+se_len;
        }
        printf("The souce file length is %i",sum1_len);

解决方案 »

  1.   

    sprintf(sql_str,"',%i)",sum_len-1);
            memcpy(&buf[sum_len],sql_str,strlen(sql_str));
            sum_len=sum_len+strlen(sql_str)+1;
            buf[sum_len]='\0';        fclose(fp1);        //sprintf(sql_str,"select * from img");
            if(mysql_real_query(&mysql,buf,sum_len)!=0)
            {
                    fprintf(stderr,"error on query: %s\n",mysql_error(&mysql));
                    exit(EXIT_FAILURE);
            }        sprintf(sql_str,"select * from img");
            if(mysql_real_query(&mysql,sql_str,200)!=0)
            {
                    fprintf(stderr,"error on query: %s\n",mysql_error(&mysql));
                    exit(EXIT_FAILURE);
            }        //mysql_escape_string(p,buf,from_len)
            if((res=mysql_store_result(&mysql))==NULL)
            {
                    fprintf(stderr,"error on store: %s\n",mysql_error(&mysql));
                    exit(EXIT_FAILURE);
            }
      

  2.   


            if((row=mysql_fetch_row(res))!=NULL)
            {
                    printf("\n the length is len=%s \n",row[2]);
                    loca=64*1024;
                    sum_len=atoi(row[2]);
                    if(sum_len>loca)
                    {       se_len=sum_len/loca;
                            for(i=1;i<=se_len;i++)
                            {
    printf("the circle recorder is %i",i);
                                    fwrite(&(row[1][loca*(i-1)]),1,loca,fp);
                            }
                            se_len=atoi(row[2])%loca;
                            printf(" \n following write the tail data\n");
                            fwrite(&(row[1][loca*(i-1)+se_len]),1,loca,fp);
                            printf("before write the tail data \n");
                    }else
                    {
                            sum_len=fwrite(row[1],1,atoi(row[2]),fp);
                    }                //printf("the length of writed to file is %i \n",sum_len);
                    //fwrite(/*buf*/ row[0],1,len,fp);
            }        fclose(fp);
            printf("Database:\n ");
            mysql_free_result(res);
            mysql_close(&mysql);return 1;}
      

  3.   

    在 Linux 下,它的名字为 my.cnf
    文件名                用途
    /etc/my.cnf           全局选项文件
    DATADIR/my.cnf        特定服务选项文件
    defaults-extra-file   以 --defaults-extra-file=#  指定的选项文件 
    ~/.my.cnf             特定用户选项文件
    DATADIR 是 MySQL 数据文件目录(通常为以二进制安装时是 `/usr/local/mysql/data' ,以源码方式安装时是 `/usr/local/var' ).