• C++使用ODBC连接数据库遇到的问题
    • 1、SQL语句中包含中文无法正常执行的问题
    • 2、字符与宽字符相互转化的问题

C++使用ODBC连接数据库遇到的问题

1、SQL语句中包含中文无法正常执行的问题

例如:

SQLCHAR S[512]="INSERT INTO Test.dbo.DATA(name,sex,IDCard) VALUES ('张三','男','012345678912345678');";

此时执行SQLExecDirect进行数据库数据插入时可能会失败,返回值为-1。这是由于中文占用两个字节引发的错误,所以在这里,我们要使用宽字符和SQLExecDirectW函数进行插入

    SQLWCHAR SS[512] = L"INSERT INTO Test.dbo.DATA(name,sex,IDCard) VALUES ('张三','男','012345678912345678');";SQLRETURN ret = SQLExecDirectW(this->hstmt, SS, SQL_NTS);

2、字符与宽字符相互转化的问题

上文提到,当SQL包含中文时需要使用宽字符才能执行,所以还涉及到一个宽字符拼接的问题
MultiByteToWideChar函数详解

//将char转化为wchar
wchar_t *Char2Wchar(const char *szStr) {//第一个参数为字符集,根据自己的设置进行更改int nLen = MultiByteToWideChar(CP_UTF8, MB_PRECOMPOSED, szStr, -1, NULL, 0);if (nLen == 0) {return nullptr;}auto *pResult = new wchar_t[nLen];MultiByteToWideChar(CP_UTF8, MB_PRECOMPOSED, szStr, -1, pResult, nLen);return pResult;
}SQLWCHAR SQL[512];
//宽字符串拼接函数,与普通拼接用法一致
wsprintfW(SQL, L"INSERT INTO Test.dbo.DATA(name,sex,IDCard) VALUES ('%s','%s','%s');", L"张三", L"男",L"012345678912345678");//效果与上述一样
SQLWCHAR *buf=Char2Wchar("张三");
wsprintfW(SQL, L"INSERT INTO Test.dbo.DATA(name,sex,IDCard) VALUES ('%s','%s','%s');", bufs, L"男",L"012345678912345678");

C++使用ODBC连接数据库遇到的问题相关推荐

  1. ODBC连接数据库使用动态密码

    ODBC连接数据库使用动态密码 | 火苗999℃的博客 先修改使用到的记录集的GetDefaultConnect()函数为: CString CTask_Info::GetDefaultConnect ...

  2. ProcessDB实时/时序数据库——JAVA使用ODBC连接数据库

    目录 前言 一.安装ProcessDB-ODBC驱动 1.下载ProcessDB-ODBC驱动 2.安装ProcessDB-ODBC驱动 二.配置ProcessDB数据源 三.JAVA连接Proces ...

  3. ODBC连接数据库以SQLserver为例

    ODBC连接数据库以SQLserver为例 什么是ODBC 利用ODBC进行数据库连接 配置数据库(以SQL server为例) 首先打开SSMS(SQL server management stud ...

  4. 配置 | 使用ODBC连接数据库

    可通过ODBC连接多种数据库,如DM数据库.ORACLE数据库等 若程序需要与数据库进行交互(连接数据库.执行某些SQL等),可以通过配置ODBC实现 ODBC配置成功后,应用程序便拥有了与数据库交互 ...

  5. php链接odbc,PHP使用ODBC连接数据库的方法

    PHP使用ODBC连接数据库的方法 发布于 2015-09-27 06:54:06 | 56 次阅读 | 评论: 0 | 来源: 网友投递 PHP开源脚本语言PHP(外文名: Hypertext Pr ...

  6. ODBC连接数据库1

    ODBC 作为一种简单易用的数据库连接方式,其完备的功能,良好的移植性使得其在数据库编程领域受到广泛的推崇.IBM 公司根据国际 ODBC 标准推出的 DB2 ODBC 驱动,在实现了 ODBC 主要 ...

  7. ODBC 连接数据库 SQL server 2008

    1.打开[控制面板]-> [系统和安全] -> [管理工具]-> [数据源(ODBC)] 2.双击[数据源(ODBC)]-> 选中[系统DSN] 3.单击[添加],会弹出如下对 ...

  8. 以JavaScript连接mysql数据库为例说明通过ODBC连接数据库的通用方法

    ODBC简介 开放数据库连接(Open Database Connectivity),ODBC是为解决异构数据库间的数据共享而产生的,ODBC 为异构数据库访问提供统一接口,允许应用程序以SQL 为数 ...

  9. linux odbc连接数据库失败,在Linux中使用RODBC连接到SQL Server时出错

    我在linux服务器上运行不同的r程序.程序因数据库连接失败而出现以下错误: - 1: In odbcDriverConnect(paste0("DRIVER={SQL Server}; s ...

  10. 【笔记】LR配置ODBC连接数据库进行参数化(mysql )未完待续

    很多时候我们需要大量的参数数据,但是光光靠手填写是非常麻烦的,既然被测对象的数据都在数据库,那么我们直接读取数据库回来就轻松简便很多. data  wizard 提供了一个从ODBC的连接获得数据转化 ...

最新文章

  1. android notification 定时显示,Android编程使用Service实现Notification定时发送功能示例...
  2. 6.win03安全策略
  3. TCP客户端服务端编程模型
  4. HGE2D引擎按键消息分析
  5. java Switch里面的类型问题
  6. ise verilog多模块编译_如何使用ISE高效开发Verilog项目(新手)
  7. 如何使用TreeView控件
  8. Asp.net 中 IHttpHandlerFactory接口 对应web.config 中的节点
  9. pos费率怎么用计算机计算,刷卡机费率怎么算出来的(简单有效的方法)
  10. 专网网速测试软件,wlan网络测试项目和方法 常用测试软件介绍.ppt
  11. Signature Pad 使用
  12. 基于神经网络的车牌识别系统
  13. ***.jar!\BOOT-INF\classes!\***.xml没有此文件
  14. 家庭用电都是交流电,为何会有零线和火线的区别?
  15. 自控带宽频率等相关介绍
  16. mysql upsert语法_Mysql - Upsert功能实现
  17. X86 将死?RISC-V 正当立
  18. 证明残差的平均值等于0,残差以x加权的平均值为0
  19. mix2s刷Android7,小米Mix2s刷机教程
  20. 大数据杀熟 算法_大数据杀熟如何防范?

热门文章

  1. JLINK 驱动安装和配置ADS使用,ADX调试
  2. 荣耀盒子无线网连接不上电脑连接服务器,华为荣耀盒子无法连接有线网络怎么解决...
  3. Linux自学之旅-安装篇(挂载)
  4. STATA:面板数据滞后需要注意(同一家企业滞后出现空缺数据的原因)
  5. 项目中用到的ws2811炫彩灯控制程序
  6. 5G及移动边缘计算(MEC)学习笔记(1)
  7. win10家庭版开启远程桌面(带rdpwrap.ini)
  8. 制造业erp整体业务流程
  9. 精通python自然语言处理_精通Python自然语言处理(异步图书) 欢迎来到异步社区!...
  10. 良心安利Unity3D U3D游戏源码素材网站