VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

有编程疑问吗?还请到提问专区发帖提问!
搜索
查看: 646|回复: 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
在线会员 xiaotao701 发表于 2018-3-30 19:23:56 | 显示全部楼层
(const char*) 这是啥,中文两个字节,你强转成一个字节了

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复

使用道具 举报

51_avatar_middle
online_admins Syc 发表于 2018-3-30 22:23:28 | 显示全部楼层
ErrText 函数的返回值类型是什么?BSTR 吗?
如果是的话,你强制转成 const char* 就会出问题的,BSTR 是个宽字节的

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

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

GMT+8, 2018-12-15 04:45

Powered by Discuz! X3.4

© 2009-2018 cctry.com

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