使用ADOStoredProc时遇到Unicode参数的问题

c1aud 2008-03-27 01:34:52
我使用的数据库是Microsoft SQL Server 2000
里面有这样一张数据表:MessageInfo
字段名称 数据类型
MsgId INT
MsgText NVARCHAR(200)

有这样一个存储过程:UpdateMsg
CREATE PROCEDURE UpdateMsg
@MsgId INT, @MsgText NVARCHAR(200)
AS
Update MessageInfo
set MsgText=@MsgText
where MsgId=@MsgId
return 0
GO

我使用C++ Builder6,里面有这样的代码:
TADOStoredProc *AdoSp1;
.......
AdoSp1->Close();
AdoSp1->ProcedureName = L"UpdateMsg";
AdoSp1->Parameters->Clear();
AdoSp1->Parameters->CreateParameter(L"@MsgId", ftInteger, pdInput, 50, id);
AdoSp1->Parameters->CreateParameter(L"@MsgText", ftWideString, pdInput, AnsiString(text).Length(), text);
AdoSp1->ExecProc();

但是我尝试把一段韩文字符串导入到数据库当中,却总是得到"?????????????????"
请问该如何书写这段C++代码,把字符串正确导入?
...全文
116 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
c1aud 2008-03-27
  • 打赏
  • 举报
回复
明白了, 谢谢。
僵哥 2008-03-27
  • 打赏
  • 举报
回复
Refresh就不需要你自己去创建参数,而会直接接收服务器当中的定义。
c1aud 2008-03-27
  • 打赏
  • 举报
回复
谢谢,呵呵,能否解释一下为什么用个Refresh就可以了呢?
僵哥 2008-03-27
  • 打赏
  • 举报
回复
AdoSp1->Close(); 
AdoSp1->ProcedureName = L"UpdateMsg";
AdoSp1->Parameters->Refresh();
AdoSp1->Parameters->ParamByName(L"@MsgId")->Value = id;
AdoSp1->Parameters->ParamByName(L"@MsgText)->Value = text;
AdoSp1->ExecProc();
c1aud 2008-03-27
  • 打赏
  • 举报
回复
提供一段韩文给大侠测试,呵呵。

한국마이크로소프트에 오신 것을 환영합니다.
c1aud 2008-03-27
  • 打赏
  • 举报
回复
补充一下:C++的代码中:
int id;
WideString text;

1,178

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 数据库及相关技术
社区管理员
  • 数据库及相关技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧