liangc 发表于 2008-11-18 19:29:53

VC6.0下使用ODBC连接mysql出现乱码

mysql字符集是GB2312,在数据库中没有任何问题,试过用JSP连接数据库也没有乱码,最近用VC6.0下用ODBC连接MYSQL然后select出来的东西显示出来全都是问号????,英文没有什么问题,使用INSERT插入也没有什么问题。
代码
    CDatabase db;
    db.Open(NULL,FALSE,FALSE,"ODBC;DSN=book;UID=root;PWD=123451");
    CRecordset rs(&db);
    rs.Open(CRecordset::forwardOnly,_T("select * from book;"));

kider 发表于 2008-11-18 20:09:48

有类似问题,SQL前加set names gb2312;试试

或参考标签:
http://www.mysqlpub.com/tag.php?name=%C2%D2%C2%EB

liangc 发表于 2008-11-18 21:54:43

有类似问题,SQL前加set names gb2312;试试

或参考标签:
http://www.mysqlpub.com/tag.php?name=%C2%D2%C2%EB
kider 发表于 2008-11-18 20:09 http://www.mysqlpub.com/images/common/back.gif
能不能具体说一下前面指的是哪?那么我的SQL语句因该改成什么?

kider 发表于 2008-11-18 23:47:42

rs.Open(CRecordset::forwardOnly,_T("set names gb2312;select * from book;"));

liangc 发表于 2008-11-19 11:27:58

rs.Open(CRecordset::forwardOnly,_T("set names gb2312;select * from book;"));
kider 发表于 2008-11-18 23:47 http://www.mysqlpub.com/images/common/back.gif
加上之后编译没有错误,一执行就报错debug assertion failed

liangc 发表于 2008-11-19 12:11:57

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:29

6# liangc
顺便说一句:挺喜欢这个论坛的,也挺喜欢MYSQL的

kider 发表于 2008-11-19 12:30:43

:victory:

你的问题总结很经典...
页: [1]
查看完整版本: VC6.0下使用ODBC连接mysql出现乱码