VC 下用C*api连接mysql数据库,编码问题

MYSQL*mysql;//数据库连接句柄CStringsql;if(mysql=mysql_init((MYSQL*)0)){}else{return0;}if(mys... MYSQL * mysql; //数据库连接句柄
CString sql;
if(mysql=mysql_init((MYSQL*)0)){}else{return 0;}
if(mysql_real_connect(mysql, "127.0.0.1", "root", "123456",
"evaluateweb_int_flyoadb", 3306, NULL, 0))
{
//AfxMessageBox("连接成功");
}else{AfxMessageBox("连接失败");}

if(mysql_set_character_set(mysql,"utf8")){AfxMessageBox("utf8设置不成功!");return 0;}

if ( mysql_select_db(mysql,"evaluateweb_int_flyoadb" ) < 0 ) {
mysql_close(mysql); return 0;
}

int num;
MYSQL_RES * res ;
MYSQL_FIELD * fd ;
MYSQL_ROW row ;

CString ddtt, dd, tt ;
SYSTEMTIME st; GetLocalTime(&st);
ddtt.Format("%d-%d-%d %d:%d:%d",
st.wYear,st.wMonth,st.wDay,
st.wHour,st.wMinute,st.wSecond);
dd.Format("%d-%d-%d",st.wYear,st.wMonth,st.wDay);
tt.Format("%d:%d:%d",st.wHour,st.wMinute,st.wSecond);
char pptm[1];

CString usqlA ="insert into t_evaluateinfo (SATISFACTION, EMP_NAME, NETADDR_NAME,DDTT, NETADDR_NO, DESCC) values('";

CString usqlB = empEval+"','"+empName+"','"+wdNameTemp+"','"+ddtt+"','"+wdNo+"','descc')";
CString insertMysql = usqlA+usqlB;

if ( !mysql_query(mysql,insertMysql ))
{
int a =0 ; a +=a;
}
else{
//ppp->outPrintScreen("更新数据库失败!!",d,99);
}
=============================================================
数据库mysql的编码是utf8,我vs2005环境的字符集是多字节,
如果不添加这行:
if(mysql_set_character_set(mysql,"utf8")){AfxMessageBox("utf8设置不成功!");return 0;}
能够正常insert,但是查询出来的是乱码,
如果填这行,insert语句不被成功执行,数据库中无记录,
??????????????????
到底是怎么回事呢???????????
展开
 我来答
百度网友f0ffc16aa
2010-06-28 · 超过19用户采纳过TA的回答
知道答主
回答量:53
采纳率:0%
帮助的人:0
展开全部
你的数据库表的字符集是不是也是UTF-8的?
如果table不是的话也会乱码的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
瓮靖荷0gw
2010-07-08 · 超过16用户采纳过TA的回答
知道答主
回答量:38
采纳率:0%
帮助的人:51万
展开全部
if(mysql_set_character_set(mysql,"gb2312")){AfxMessageBox("utf8设置不成功!");return 0;}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式