使用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