高分求助:ado访问db中文编码

hhf 2010-05-20 11:06:00
环境:vc2005 - ado - sqlserver2000


create procedure sp_person1(@a integer,@b varchar(50),@d varchar(100) output)
as
select id,name,@b as 'other' from person1 where id=@a
set @d='存储过程'
go



m_pParam1=pCommand->CreateParameter("a",adInteger,adParamInput,-1,(_variant_t)"1");
pCommand->Parameters->Append(m_pParam1);
m_pParam2=pCommand->CreateParameter("b",adVarChar,adParamInput,50,(_variant_t)L"中文");
pCommand->Parameters->Append(m_pParam2);
m_pParam3=pCommand->CreateParameter("d",adVarChar,adParamOutput,100);
pCommand->Parameters->Append(m_pParam3);



int id = 0;
_variant_t var;
int name=0;
_bstr_t other;

var = pRs->GetCollect(_variant_t("id"));
var.ChangeType(VT_I2);
id = var.iVal;

var = pRs->GetCollect(_variant_t("name"));
var.ChangeType(VT_I2);
name=var.iVal;

var = pRs->GetCollect(_variant_t("other"));
other=_bstr_t(var);

wprintf(L"%d\t%d\t%s\r\n", id, name,other.GetBSTR());


我传到存储过程的@b以other字段输出,是中文,但是没有存入数据库,只是传给存储过程然后用ado读出来,出现乱码了,把自己搞得很晕,请同行帮忙看看,谢谢。
...全文
234 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
zyq5945 2010-05-20
  • 打赏
  • 举报
回复
hhf 2010-05-20
  • 打赏
  • 举报
回复
试了nvarchar,不行呢
jason176374 2010-05-20
  • 打赏
  • 举报
回复
nvarchar试一下
尹成 2010-05-20
  • 打赏
  • 举报
回复
目前常用的中文操作系统,至少在界面表达上用的都不是unicode(win nt系列在内部使用 unicode)可能和这个有关
hhf 2010-05-20
  • 打赏
  • 举报
回复
晕死。。把wprintf改为printf,然后other类型转为char*,就正常了。。请问为何这样子??
hhf 2010-05-20
  • 打赏
  • 举报
回复
用了,感觉不是特别好用。。

4,011

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 数据库
社区管理员
  • 数据库
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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