我尝试着用ADO连接MySQL数据库,测试发现已经连接成功了,但接下来我在使用_ConnectionPtr 的Execute函数执行插入操作时发现,如果待执行的sql语句中有中文的话,该函数总是抛出异常,如果我修改一下sql语句,把中文换成数字或字母就能顺利执行。我是用VC写的程序,部分代码如下所示。请大家帮忙分析一下问题可能出在哪里,先谢谢了。CString strSQL;
int nID=0;
CString strName="张三"; //此处用中文会有问题,换成字母或数字就没有问题
strSQL.Format("INSERT INTO MYTABLE(id,name) VALUES(%d,'%s')",nID,strName);
_bstr_t bstrSQL=strSQL.AllocSysString();
m_pConnection->Execute(bstrSQL,...);
int nID=0;
CString strName="张三"; //此处用中文会有问题,换成字母或数字就没有问题
strSQL.Format("INSERT INTO MYTABLE(id,name) VALUES(%d,'%s')",nID,strName);
_bstr_t bstrSQL=strSQL.AllocSysString();
m_pConnection->Execute(bstrSQL,...);
MySQL跨平台,所以用的是Unicode
或者你把这条语句在MySQL带的工具(没用过MySQL,不知道有没有工具)中执行,有错一般会有提示的
int nID=0;
CString strName=_T("张三");
strSQL.Format("INSERT INTO MYTABLE(id,name) VALUES(%d,'%s')",nID,strName);
_bstr_t bstrSQL=strSQL.AllocSysString();
m_pConnection->Execute(bstrSQL,...);
运行还是会崩溃,Execute语句会抛出异常。
CString strSQL;
int nID=0;
CString strName="张三"; //此处用中文会有问题,换成字母或数字就没有问题
strSQL.Format("INSERT INTO MYTABLE(id,name) VALUES(%d,'%s')",nID,strName);
try
{
_bstr_t bstrSQL=strSQL.AllocSysString();
m_pConnection->Execute(bstrSQL,...);
}catch(_com_error e)
{
MessageBox(e.Description, e.ErrorMessage);
}看下提示什么错误.