我通过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的配置文件中已经设置了字符集,
通过命令行操作数据库返回的结果正常(可以使用中文列名,中文数据)所以请教下大家,这种情况下应该如何处理?

解决方案 »

  1.   

    connection string
    [align=center]====  ====
    [/align]
      

  2.   

    可是,我是用如下的C的API来连接数据库的 :
            //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来调节字符串呢?我再找找看。
      

  3.   

    换个驱动试试[align=center]====  ====
    [/align]
      

  4.   

    本问题用如下代码搞定 :
            _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
    结帖,散分
      

  5.   

    [align=center]====  ====
    [/align]