读书人

当ADOStoredProc中参数为中文时报错

发布时间: 2013-03-12 11:19:35 作者: rapoo

当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");

读书人网 >C++ Builder

热点推荐