环境:vc6.0  数据库mysql。连接数据库后,查询一个记录集有n行m列记录,现在一行行读取字段给重新定义的n个变量 写入另外的表里面。现在问题是:mysql c api如何操作获取第一行每一列的值给新定义的变量?             如何在写入的时候进行事务控制? 最好能给我一个事例Demo,多谢大虾们了,在线等,解决问题就给分

解决方案 »

  1.   

    int main()
    {
       MYSQL mysql;
        MYSQL_RES * res ;
        MYSQL_FIELD * fd ;
        MYSQL_ROW row ;
       int id[10000];
        double result[10000][8];
       vector<string> v;    if(mysql_init(&mysql) == NULL)
        {
          std::cout<<"init mysql data status fail"<<std::endl;
            return false;
    }
    else
    {
       std::cout<<"init mysql data status success"<<std::endl;
    }if(NULL == mysql_real_connect(&mysql,"localhost","root","","wsnss",MYSQL_PORT,NULL,0))
    {
       std::cout<<"connect database fail"<<std::endl<<mysql_error(&mysql)<<std::endl;;
       return false;
    }
    else{
       std::cout<<"connect database success"<<std::endl;
    }char   szSqlText[500]="";
    int j = 0;sprintf(szSqlText,"%s","select * from data_receive ");
    if (mysql_query( &mysql, szSqlText))
    //进行数据检索
    {
         //执行SQL语句出错
       cout<<"query error"<<endl;
       mysql_close( &mysql ) ;
       return FALSE ;
    }
        else
        {
       res = mysql_store_result( &mysql ) ;
       int i;   
       while((row   =   mysql_fetch_row(res)))   {
        id[j] = atoi(row[0]);
        for   (i = 1; i < mysql_num_fields(res); i++)  
        {
         result[j][i-1] = atof(row[i]);
        }
        j++;
       }
        }  
      
      
    for(int i = 0 ; i < 10000; i++)
    {
       if(i>=j)
        break;
       char str[10000];
       stringstream ss;        ss<<"insert into data_receive(ID,data1,data2,data3, data4,data5,data6,data7,data8)values('"<<id[i]<<"','"<<
        result[i][0]<<"','"<<result[i][1]<<"','"<<result[i][2]<<"','"<<
        result[i][3]<<"','"<<result[i][4]<<"','"<<result[i][5]<<"','"<<
        result[i][6]<<"','"<<result[i][7]<<"');";
       string s = ss.str();
       v.push_back(s);  
    }
    for(vector<string>::iterator iter = v.begin(); iter != v.end(); ++iter)
    {
      
       if(mysql_query(&mysql,(*iter).c_str())!=0)
       {
        std::cout<<"execute insert syntax fail"<<
          std::endl<<mysql_error(&mysql)<<endl;
        mysql_close(&mysql);
        return 1;
       }
    }
        mysql_free_result(res);
        mysql_close(&mysql);
        return 0;
    }
      

  2.   

    oyljerry ,     ss<<"insert into data_receive(ID,data1,data2,data3, data4,data5,data6,data7,data8)values('"<<id[i]<<"','"<<
        result[i][0]<<"','"<<result[i][1]<<"','"<<result[i][2]<<"','"<<
        result[i][3]<<"','"<<result[i][4]<<"','"<<result[i][5]<<"','"<<
        result[i][6]<<"','"<<result[i][7]<<"');";
       string s = ss.str();
     这个语句中“<<”是干嘛的?  是用来连接的字符吗?