VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 834|回复: 2

[求助] 关于vc++连接SQL Server数据库的编码问题

[复制链接]
92_avatar_middle
在线会员 发表于 2018-3-30 17:31:22 | 显示全部楼层 |阅读模式
3驿站币
vc++调用SQL api查询语句后,结果里的中文可以正常显示,但是如果SQL语句语法有误,利用SAException中的ErrText()函数获取出错信息,此时出错里的中文就乱码了,变成了‘?’一个中文字符对应一个‘?’
  1. try{
  2.         //此处查询语句语法有误
  3. }
  4. catch(SAException &x)
  5. {
  6.         try
  7.         {
  8.                 con.Rollback();
  9.         }
  10.         catch(SAException &)
  11.         {
  12.                
  13.         }
  14.         AfxMessageBox((const char*)x.ErrText());//此处获取错误信息,对话框弹出后显示乱码
  15.         return;
  16. }
复制代码


在Server Management stdio中显示‘)’附近有语法错误。
程序中对话框弹出为42000 ‘)’????????

数据库编码方式为GBK,vc++为默认ASCII

  1. SAException::ErrText
  2. SAString ErrText() const;

  3. Gets an error text.

  4. Return values
  5. A string of the exception description. Includes descriptions for all exception related errors (all nested exception error messages).

  6. Remarks
  7. To get the single exception message call ErrMessage method.
复制代码


GBK是可以与ASCII兼容的,难道SQL的消息和结果不是一个编码方式?
求助大神





上一篇:DirectX 新版现在播放怎么播放音乐 dmusici.h 已经没有了
下一篇:SDK开发中,如何注册编辑框改变事件?
87_avatar_middle
在线会员 发表于 2018-3-30 19:23:56 | 显示全部楼层
(const char*) 这是啥,中文两个字节,你强转成一个字节了
51_avatar_middle
online_admins 发表于 2018-3-30 22:23:28 | 显示全部楼层
ErrText 函数的返回值类型是什么?BSTR 吗?
如果是的话,你强制转成 const char* 就会出问题的,BSTR 是个宽字节的
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号tongdun|网站地图wx_jqr

GMT+8, 2019-8-22 03:46

Powered by Discuz! X3.4

© 2009-2019 cctry.com

快速回复 返回顶部 返回列表