我通过C的API来使用MySQL数据库,
代码片断如下 :
int iRes = mysql_query(_mysqlConnection, "SELECT GRP FROM linker GROUP BY GRP");
if(0 != iRes) {
_strErrorInfo = mysql_error(&_mysqlObj);
return false;
}
MYSQL_RES * sqlRes = mysql_store_result(_mysqlConnection);
MYSQL_ROW sqlRow;
while((sqlRow = mysql_fetch_row(sqlRes)) != NULL) {
if(NULL == sqlRow[0]) {
rstVecLGroup.push_back("NULL");
}
else {
rstVecLGroup.push_back(sqlRow[0]);
}
}
mysql_free_result(sqlRes);
程序得到的结果如果是英文的则正常,如果是中文的,则显示"??"。MySQL的配置文件中已经设置了字符集,
通过命令行操作数据库返回的结果正常(可以使用中文列名,中文数据)所以请教下大家,这种情况下应该如何处理?
代码片断如下 :
int iRes = mysql_query(_mysqlConnection, "SELECT GRP FROM linker GROUP BY GRP");
if(0 != iRes) {
_strErrorInfo = mysql_error(&_mysqlObj);
return false;
}
MYSQL_RES * sqlRes = mysql_store_result(_mysqlConnection);
MYSQL_ROW sqlRow;
while((sqlRow = mysql_fetch_row(sqlRes)) != NULL) {
if(NULL == sqlRow[0]) {
rstVecLGroup.push_back("NULL");
}
else {
rstVecLGroup.push_back(sqlRow[0]);
}
}
mysql_free_result(sqlRes);
程序得到的结果如果是英文的则正常,如果是中文的,则显示"??"。MySQL的配置文件中已经设置了字符集,
通过命令行操作数据库返回的结果正常(可以使用中文列名,中文数据)所以请教下大家,这种情况下应该如何处理?
[align=center]==== 思想重于技巧 ====
[/align]
//connect to database
if(!mysql_init(&_mysqlObj)) {
throw exception("failed init MYSQL object");
}
_mysqlConnection = mysql_real_connect(&_mysqlObj, "localhost", strUser.c_str(),
strPW.c_str(), strDBName.c_str(), 0, 0, 0);
if(!_mysqlConnection) {
throw CExceptionEx("failed connection to database because %s", mysql_error(&_mysqlObj));
}
用到的C的API接口不知道在哪里添加字符集定义。是否有对应的C 的API来调节字符串呢?我再找找看。
[/align]
_mysqlConnection = mysql_real_connect(&_mysqlObj, "localhost", strUser.c_str(),
strPW.c_str(), strDBName.c_str(), 0, 0, 0);
if(!_mysqlConnection) {
throw CExceptionEx("failed connection to database because %s", mysql_error(&_mysqlObj));
}
int state = mysql_set_character_set(_mysqlConnection, "gbk");
if(0 != state) {
throw CExceptionEx("failed change character set because %s", mysql_error(&_mysqlObj));
}
使用MySQL的C的API函数:
mysql_set_character_set
结帖,散分
[/align]