gpt4 book ai didi

c++ - mysql_query 没有正确保存数据

转载 作者:搜寻专家 更新时间:2023-10-31 01:55:04 26 4
gpt4 key购买 nike

#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整理

但以下代码将结果保存为 +¾šèžýáíéúäô§ò

我正在使用 Visual Studio 2010 c++ express。

问题似乎是 mysql_query 不处理传递给它的 sql,它删除了 š、č、ľ 等特定字符。我尝试了很多转换,但是函数本身要求 sql 为 const char *

有没有什么方法可以使这个工作正常进行,以便 char * 变量能够正确保存给定的字符?

如果我从数据库中读取值,它们会正确显示...

最佳答案

在任何 DML 之前,尝试发出 SET names utf8 查询(或其他您需要的)

关于c++ - mysql_query 没有正确保存数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8820905/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com