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语句不被成功执行,数据库中无记录,
??????????????????
到底是怎么回事呢??????????? 展开
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语句不被成功执行,数据库中无记录,
??????????????????
到底是怎么回事呢??????????? 展开
2个回答
展开全部
你的数据库表的字符集是不是也是UTF-8的?
如果table不是的话也会乱码的。
如果table不是的话也会乱码的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询