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;
}
在数据库中的值是+ľščťžýáíéô§ň
,该表已字符集utf8
和ut8_slovak_ci
整理的mysql_query不保存数据正确
然而,下面的代码并将结果保存为+¾šèžýáíéúäô§ò
。
我正在使用Visual Studio 2010 C++ express。
问题似乎是mysql_query
不处理传递给它的sql,它删除了特定的字符,如š,č,ľ。我已经尝试了很多转换,但是函数本身需要sql为const char *
。
有什么办法可以使这项工作,以便char *
变量将正确保存给定的字符?
如果我读了数据库中的值,他们正确显示...
哇,这有助于从内容数据库,所以现在的作品(虽然我发誓我之前尝试过),nvm谢谢:) – user1143348 2012-01-11 14:48:47
虽然它仍然不适用于sql =“更新tour_pouzivatelia SET priezvisko ='aľšč'WHERE id_pouz = 1;”;它只是保存了一个单独的字符,而不是其他字符 – user1143348 2012-01-11 14:49:25
您是否已经硬编码UPDATE查询?也许文件不是UTF8编码。请检查VS2010是否使用UTF8编码文件(即使显示正常)http:// stackoverflow .COM /问题/ 696627 /如何对标准的编码,在视觉设置工作室 – rkosegi 2012-01-11 18:20:50