我想使用以下代码将数据发送到Mysql数据库:
#include "StdAfx.h"
#include <iostream>
#include "my_global.h"
#include "mysql.h"
#pragma comment(lib, "libmysql")
#pragma comment(lib, "mysqlclient")
using namespace std;
MYSQL *connection, mysql;
MYSQL_RES *result;
MYSQL_ROW row;
int query_state;
int main()
{mysql_init(&mysql);
//connection = mysql_real_connect(&mysql,"host","user","password","database",0,0,0);
connection = mysql_real_connect(&mysql,"localhost","testc++","mypassword","testc++",0,0,0);
if (connection == NULL)
cout << mysql_error(&mysql) << endl;
else
cout << "connection established" << endl;
mysql_query(connection, "CREATE TABLE writers(name VARCHAR(25))");
mysql_query(connection, "INSERT INTO writers VALUES('攻殻機動隊')");
mysql_query(connection, "INSERT INTO writers VALUES('ブルージェンダー')");
mysql_query(connection, "INSERT INTO writers VALUES('Honore de Balzac')");
mysql_query(connection, "INSERT INTO writers VALUES('Lion Feuchtwanger')");
mysql_query(connection, "INSERT INTO writers VALUES('Emile Zola')");
query_state = mysql_query(connection, "select user_count()");
if (query_state !=0) {
cout << mysql_error(connection) << endl;
mysql_close(connection);
cin.get();
// This code disconnects the mysql connection.
mysql_free_result(result);
mysql_close(connection);
return 1;
}
我遇到的问题是日本图标被保存为????而不是ブルージェンダー 我该如何解决这个问题? 我正在使用visual studio 2010。
答案 0 :(得分:1)
您是否将mysql字段中的字符编码设置为UTF8,或者是latin1,它不支持国际字符。
您可以像这样设置字段编码:
"CREATE TABLE writers(name VARCHAR(25) CHARACTER SET utf8 COLLATE utf8_unicode_ci)"
编辑1
如果这不是解决方案,这可能是一个视觉工作室问题,可以这样解决:
wchar_t query_string = L"INSERT INTO writers VALUES('攻殻機動隊')";
您需要使用this one here
等转换器将“攻壳机动队”转换为unicode字符串我选择了UTF = 8但我无法知道这些是否正确或如何使用它们,你需要通过跟踪找出哪一个是正确的序列而且我很害怕。
为了让您的生活更轻松,可以找到library的链接,可以为您完成所有这些操作。