2012-03-11 1 views
0

В настоящее время мне необходимо обновить базу данных MYSQL. Коды ниже представлены в форме CString. Однако Sprintf принимает тип char. Как точно изменить/изменить переменную S, чтобы я мог обновить ее в моей базе данных с помощью функции sprintf.Преобразование CString в Char для обновления базы данных

Спасибо, Джейсон

void CT1121Dlg::DisplayTagData(int cnt,int tag_len,int start_index) 

{ 
MYSQL *pConnection; 
MYSQL_RES *pResult=NULL; 
MYSQL_ROW Row; 
char Query[256]; 

int fields; 
pConnection = mysql_init(NULL); 
mysql_real_connect(pConnection,"localhost","root","123","test",0,NULL,0); 


    CString s,s0; 

    int i,j; 

    unsigned char t; 
    unsigned char t1; 


    //unsigned char y[] =""; 

    //string mystring; 
    //unsigned char y; 

    for(i = 0; i < cnt; i++) 
    { 
     s.Format("NO.%d: ",start_index+i+1); 
     for(j = 0; j < tag_len; j++) 
     { 
      t = IdBuf[i].Ids[j]; 


      //sprintf(Query, "INSERT into t(e) values (%X)",y); 
      if(t < 0x10) 
      { 
       s0.Format("0%X ",t); // if hexa is less than 10 print 0 infront of it 


      } 
      else 
       s0.Format("%X ",t); // else just print the 2 bit hexa decimal 


      s += s0; 

     } 


     sprintf(Query, "INSERT into t(e) values (%X)",s); // nt working 
     //sprintf(Query, "INSERT into t(e) values (+ %s.c_str() +)",s); // cannot work 
     if (mysql_query(pConnection,Query) == 0) 
    { 
     pResult = mysql_store_result(pConnection);  
     } 

     AddOprationInfo(s); 


    } 

} 
+0

Есть ли причина использовать 'CString' над' std :: string' и использовать 'std :: string :: c_str()' для получения char * – 111111

+0

@ 111111: Да, потому что 'c_str' возвращает 'char const *' не 'char *', который нужен 'sprintf'. –

+0

@BillyIneal Зачем использовать sprintf? – 111111

ответ

1

Используйте CString::Format вместо этого, так же, как вы делали ранее в этом методе. (Хотя я бы предложил не использовать CString вообще в пользу std::string ...)

1

Вы можете использовать CString::GetBuffer() метод, чтобы получить указатель на нуль завершается внутренний буфер в CString.

+0

+1, потому что это сделает компиляцию кода. Но я не думаю, что это то, что должен делать ОП. –

 Смежные вопросы

  • Нет связанных вопросов^_^