使用ADO时,如果sql语句中包含中文字符不可以吗?


我尝试着用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,...);

9 个解决方案

#1


sql 用的是ANSI
MySQL跨平台,所以用的是Unicode

#2


你可以获取错误信息,不就知道原因了
或者你把这条语句在MySQL带的工具(没用过MySQL,不知道有没有工具)中执行,有错一般会有提示的

#3


引用 1 楼 soswaidao 的回复:
sql 用的是ANSI
MySQL跨平台,所以用的是Unicode
我的程序就是基于多字节的,没有设置成Unicode,如果修改成Unicode的话,那要改动的地方就太多了。像我上面的那几行代码,该怎么修改才能正常工作呢?

#4


引用 1 楼 soswaidao 的回复:
sql 用的是ANSI
MySQL跨平台,所以用的是Unicode
我把工程改成是Unicode格式的,代码改成如下:

CString  strSQL;
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语句会抛出异常。

#5


该回复于2010-06-21 13:51:15被版主删除

#6


厄。。。这个问题 学习~~

#7


坐等高人解决!!我连接mysql都是用MYSQL C API的

#8



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);
}

看下提示什么错误.

#9


请问楼主,这个问题究竟是如何解决的啊?

注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2021 ITdaan.com