首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

当ADOStoredProc中参数为中文时报错,如何避免

2013-03-12 
当ADOStoredProc中参数为中文时报错,如何处理当ADOStoredProc中参数为中文时如何处理?数据库是mysql存储过

当ADOStoredProc中参数为中文时报错,如何处理
当ADOStoredProc中参数为中文时如何处理?

数据库是mysql
存储过程为
CREATE PROCEDURE sp_save_patient(prmName char(24), prmMedno char(24))
BEGIN
insert into tbl_patient values(prmName, prmMedno);
END

BCB中的代码为
ADOStoredProc->Close();
ADOStoredProc->ProcedureName = "sp_save_patient";
ADOStoredProc->Parameters->Clear();
ADOStoredProc->Parameters->CreateParameter("@prmName", ftString, pdInput, 30, NULL);
ADOStoredProc->Parameters->CreateParameter("@prmMedno", ftString, pdInput, 30,NULL);
ADOStoredProc->Parameters->ParamByName("@prmName")->Value = "张三";
ADOStoredProc->Parameters->ParamByName("@prmMedno")->Value = "0001";
ADOStoredProc->ExecProc();

以上代码出错,如果参数“@prmName”为英文就可以,
ADOStoredProc->Parameters->ParamByName("@prmName")->Value = "zhangsan";
怎么解决
[解决办法]
数据库是UTF-8的?那这样再试试:

ADOStoredProc->Parameters->ParamByName("@prmName")->Value = AnsiToUtf8("张三");
ADOStoredProc->Parameters->ParamByName("@prmMedno")->Value = AnsiToUtf8("0001");

热点排行