MFC采用UNICODE连接采用UTF-8的MySQL数据库的查询数据的有关问题
MFC采用UNICODE连接采用UTF-8的MySQL数据库的查询数据的问题
我的项目是采用MFC架构,项目编码采用UNICODE,连接的数据库是UTF-8格式的的MySQL数据库。现在我已经连接成功了。也能写数据了,但是查询时候WHERE 里面有中文的时候就查询不成功?请问这是为什么呢?
代码:
快过年了,希望年前把这个问题解决噢。希望各位大小不吝赐教啊
------解决方案--------------------
为什么要用CString,直接
我的项目是采用MFC架构,项目编码采用UNICODE,连接的数据库是UTF-8格式的的MySQL数据库。现在我已经连接成功了。也能写数据了,但是查询时候WHERE 里面有中文的时候就查询不成功?请问这是为什么呢?
代码:
- C/C++ code
MYSQL mysql; //数据库连接句柄 mysql_init(&mysql); if(!mysql_real_connect(&mysql,"localhost","root","hongran","mes",3306,NULL,0)) { AfxMessageBox(_T("数据库连接失败")); return; } CString cstId,prtId; CString sqlCmd; cstId = _T("cst_00001"); prtId = _T("prt_00001"); sqlCmd.Format(_T("SELECT * FROM S_PORT_T WHERE PORT_DESC = '小白兔aaa'")); string mstring = WideCharToMultiChar( (LPCTSTR)sqlCmd ); const char *ch = mstring.c_str(); if(mysql_real_query(&mysql,ch,sqlCmd.GetLength())!=0) { const char * errorMes = mysql_error(&mysql); AfxMessageBox(_T("数据库表格出错")); return; } MYSQL_RES *result; MYSQL_ROW row; if(!(result = mysql_use_result(&mysql))) { AfxMessageBox(_T("读取数据集失败")); return; } int i = 0; while(row = mysql_fetch_row(result)) { char* tst = row[1]; int yy = 0; } mysql_free_result(result); mysql_close(&mysql);
快过年了,希望年前把这个问题解决噢。希望各位大小不吝赐教啊
------解决方案--------------------
为什么要用CString,直接
- C/C++ code
CHAR szSql[] = "SELECT * FROM S_PORT_T WHERE PORT_DESC = '小白兔aaa'"
------解决方案--------------------
顶一个,我也遇到同样的问题,请楼主共享下答案呗
------解决方案--------------------
连接成功后
mysql_set_character_set(&mysql, "gbk");