MySQL社区

标题: VC6.0下使用ODBC连接mysql出现乱码 [打印本页]

作者: liangc    时间: 2008-11-18 19:29
标题: VC6.0下使用ODBC连接mysql出现乱码
mysql字符集是GB2312,在数据库中没有任何问题,试过用JSP连接数据库也没有乱码,最近用VC6.0下用ODBC连接MYSQL然后select出来的东西显示出来全都是问号????,英文没有什么问题,使用INSERT插入也没有什么问题。
代码
    CDatabase db;
    db.Open(NULL,FALSE,FALSE,"ODBC;DSN=book;UID=rootWD=123451");
    CRecordset rs(&db);
    rs.Open(CRecordset::forwardOnly,_T("select * from book;"));
作者: kider    时间: 2008-11-18 20:09
有类似问题,SQL前加set names gb2312;试试

或参考标签:
http://www.mysqlpub.com/tag.php?name=%C2%D2%C2%EB
作者: liangc    时间: 2008-11-18 21:54
有类似问题,SQL前加set names gb2312;试试

或参考标签:
http://www.mysqlpub.com/tag.php?name=%C2%D2%C2%EB
kider 发表于 2008-11-18 20:09

能不能具体说一下前面指的是哪?那么我的SQL语句因该改成什么?
作者: kider    时间: 2008-11-18 23:47
rs.Open(CRecordset::forwardOnly,_T("set names gb2312;select * from book;"));
作者: liangc    时间: 2008-11-19 11:27
rs.Open(CRecordset::forwardOnly,_T("set names gb2312;select * from book;"));
kider 发表于 2008-11-18 23:47

加上之后编译没有错误,一执行就报错debug assertion failed
作者: liangc    时间: 2008-11-19 12:11
5# liangc
找了两天终于解决了,最后还是放弃了使用MFC提供的类,直接使用了mysql提供的API来连接数据库,加上一行语句
mysql_query(&mysql, "SET NAMES 'gb2312'");
具体代码如下:
MYSQL mysql;
    mysql_init(&mysql);
    if(!mysql_real_connect(&mysql,"localhost","root","123451","book",3306,NULL,0))
    {
        MessageBox("数据库连接失败");
        return FALSE;
    }

    mysql_query(&mysql, "SET NAMES 'gb2312'");//加上这句就好了

    char *ch_query;
    ch_query="select * from book";
    if(mysql_real_query(&mysql,ch_query,(UINT)strlen(ch_query))!=0)
    {
        MessageBox("数据库表格出错");
    }
    CString str;
    MYSQL_RES *result;
    MYSQL_ROW row;
    if(!(result=mysql_use_result(&mysql)))
    {
        MessageBox("读取数据集失败");
    }
int i=0;
    while(row=mysql_fetch_row(result))
    {
        //做你要做的事情
        i++;
    }
    mysql_free_result(result);//释放结果集
    mysql_close(&mysql);//释放数据库连接
作者: liangc    时间: 2008-11-19 12:12
6# liangc
顺便说一句:挺喜欢这个论坛的,也挺喜欢MYSQL的
作者: kider    时间: 2008-11-19 12:30


你的问题总结很经典...




欢迎光临 MySQL社区 (http://www.mysqlpub.com/) Powered by Discuz! X3.2