正文

BLOB读写数据2009-06-17 16:55:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/manbuyuduan/44461.html

分享到:

/*!*Connect to the database acorrding to the information reading form the configure file*\return   mysqlpp::Connection ->the connection if success,else exit*/MYSQL* connectToDB(  ){      MYSQL* mysql=mysql_init(NULL);   try {      if( mysql_real_connect(mysql,this->confg_.host_name,this->confg_.user_name,this->confg_.password,this->confg_.db_name,3306,NULL,0))    {     std::cout<<"mysql_real_connect() succeed"<<std::endl;    }    else    {     std::cout<<"mysql_real_connect() failed"<<std::endl;    }    return mysql; } catch (std::exception& er)  {  std::cerr << "Connection failed: " << er.what() << std::endl;  return mysql; } } void insertlod(){  MYSQL* mysql; NGIDataBaseManager * mydb = NGIDataBaseManager::Instance(); char* query=new char[500000000];  char* end; std::string slet="INSERT INTO test values("; try {   mysql=mydb->connectToDB();     if(mysql)   {       end = strcpy(query,"INSERT INTO test values(");        int len=slet.length();            end=end+len;   *end++= '\'';    for (int f_i=0;f_i<5;f_i++)   {    float fval;    if (f_i%2)    {     fval=14567.1235537;    }    else     fval=1.1234566;    /*方案二*/char tempbuf[10];    char* buf=new char [10];    memset(tempbuf,'\0',10);    _gcvt(fval,9,tempbuf);/*方案二结束*/    tempbuf[9]='#';     /*方案一char tempbuf[16];     memset(tempbuf,'\0',16);    std::sprintf(tempbuf,"%16.8f",fval);//后面的小数不见了    tempbuf[15]='#';  方案一结束 */         buf=strdup(tempbuf);    end += mysql_real_escape_string(mysql,end,buf,10);     }        *end++ ='\'';   *end++ = ')';     if (mysql_real_query( mysql,query,(unsigned int) (end-query)) )     {      std::cout<<"mysql_query() insert data succeed"<<std::endl;     }     mysql_close(mysql);  }   } catch  (const mysqlpp::BadQuery& er)  {  // Handle any query errors  std::cerr << "Query error: " << er.what() << std::endl;  mysql_close(mysql);  exit (0); }  catch (std::exception& er)  {  std::cerr << "Failed: " << er.what() << std::endl;  mysql_close(mysql);  exit (0);  }  void NGIVoxetDBIO::getLod(){ MYSQL* mysql; std::string lod; char* str_result;  NGIDataBaseManager * mydb = NGIDataBaseManager::Instance(); try {  if( mysql=mydb->connectToDB() )  {        //查询 SQL   std::string query = "SELECT lod FROM test";    if(mysql_real_query(mysql, query.c_str(), (unsigned long)query.size()) !=0 )   {    std::cout<< "Query Failed"<<std::endl;    exit (0);   }     //! 使用结果集   MYSQL_RES* result;    if(!(result = mysql_store_result(mysql)))   {    std::cout<< "Query Failed"<<std::endl;       exit (0);   }   //! 显示内容      unsigned int num_fields = mysql_num_fields(result);   MYSQL_ROW row;   while (row = mysql_fetch_row(result))   {    unsigned long *lengths;    lengths = mysql_fetch_lengths(result);    for (unsigned int i =0; i < num_fields; ++i)    {     str_result=row[i];       QString td= QString(str_result);//从数据库中得到数据转为float型                         QStringList gg=td.split("#");     std::vector<float> cstfl;     for (int j= 0;j<gg.count()-1;j++)     {            QString ss= gg.at(j);      cstfl.push_back(ss.toFloat());      /*std::string ss=static_cast<std::string> (gg.at(j));      const char* temp_ss=ss.c_str();      float fval=atof(temp_ss);                        cstfl.push_back(fval);*/     }     float sum=cstfl.at(0)+cstfl.at(1);     for (int k=0;k<cstfl.size();k++)     {      printf("%f ",cstfl.at(k));     }                     std::cout << std::endl;     //std::cout << row[i] << std::endl;    // std::cout <<str_result << std::endl;     //printf("%.*s", (int) lengths[i], row[i] ? row[i] : "NULL");    }     std::cout << std::endl;   }   mysql_free_result(result);  } }  catch  (const mysqlpp::BadQuery& er)  {  // Handle any query errors  std::cerr << "Query error: " << er.what() << std::endl;     exit (0); }  catch (std::exception& er)  {  std::cerr << "Failed: " << er.what() << std::endl;  exit (0); }   }

阅读(5340) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册