2012-01-11 6 views
2
#include <iostream> 
#include <Windows.h> 
#include <mysql.h> 
#include <string> 
#include <stdio.h> 


using namespace std; 

MYSQL *connection, mysql; 
MYSQL_RES *result; 
MYSQL_ROW row; 
int query_state; 


int main(int argc, char** argv) 
{ 
    setlocale(LC_ALL, ""); 
     mysql_init(&mysql);  
     mysql_real_connect(&mysql,"xxx","xxx","xxx","xxx",0,0,0); 

    mysql_options(&mysql, MYSQL_SET_CHARSET_NAME, "utf8"); 
    mysql_options(&mysql, MYSQL_INIT_COMMAND, "SET NAMES 'utf8' [COLLATE 'utf8_slovak_ci']"); 

    mysql_query(&mysql, "SELECT priezvisko FROM tour_pouzivatelia WHERE id_pouz=5"); 

    result = mysql_store_result(&mysql); 
    if ((row = mysql_fetch_row(result)) != NULL) {  
     string sql; 
     sql = "UPDATE tour_pouzivatelia SET priezvisko='"; 
     sql += row[0]; 
     sql += "' WHERE id_pouz=2"; 



     char* s = new char[sql.length()]; 


     strcpy(s, sql.c_str()); 

     mysql_query(&mysql, s); 
    } 


getchar(); 
    return 0; 
} 

데이터베이스의 값이 +ľščťžýáíéô§ň이며, 테이블이 utf8ut8_slovak_ci 정렬는 mysql_query가 제대로

그러나 다음 코드는 +¾šèžýáíéúäô§ò로 결과를 저장을 캐릭터 세트 한 데이터를 저장하지 않습니다.

Visual Studio 2010 C++ express를 사용하고 있습니다.

문제는 mysql_query이 전달 된 SQL을 처리하지 못하는 것 같고, š, č, ľ 같은 특정 문자를 제거합니다. 많은 변환을 시도했지만 함수 자체는 const char *이되어야합니다.

char * 변수가 주어진 문자를 올바르게 저장할 수 있도록이 방법을 사용할 수 있습니까? 나는 데이터베이스에서 값을 읽을 경우

그들이 어떤 DML 전에 ... 제대로

답변

3

을 보여로부터의 콘텐츠를 도왔, 와우 (또는 다른 당신이 필요로하는) ​​SET names utf8 쿼리를 실행하는

+0

시도 데이터베이스 그래서 지금은 작품 (비록 내가 전에), nvm 감사합니다 :) 맹세 하겠지만 – user1143348

+0

그것은 여전히 ​​작동하지 않습니다 sql = "UPDATE tour_pouzivatelia SET priezvisko = 'aľšč'어디 id_pouz = 1;"; a 문자 만 남겨 두었습니다. 나머지 문자는 저장하지 마십시오 – user1143348

+0

UPDATE 쿼리를 하드 코딩 했습니까? 파일이 UTF8 인코딩이 아닐 수도 있습니다. VS2010이 UTF8로 파일을 인코딩하는지 확인하십시오 (예 : 확인 표시). http : // stackoverflow .com/questions/696627/how-to-set-standard-in-visual-studio – rkosegi

관련 문제