C++使用ODBC连接数据库遇到的问题
- 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连接数据库遇到的问题相关推荐
- ODBC连接数据库使用动态密码
ODBC连接数据库使用动态密码 | 火苗999℃的博客 先修改使用到的记录集的GetDefaultConnect()函数为: CString CTask_Info::GetDefaultConnect ...
- ProcessDB实时/时序数据库——JAVA使用ODBC连接数据库
目录 前言 一.安装ProcessDB-ODBC驱动 1.下载ProcessDB-ODBC驱动 2.安装ProcessDB-ODBC驱动 二.配置ProcessDB数据源 三.JAVA连接Proces ...
- ODBC连接数据库以SQLserver为例
ODBC连接数据库以SQLserver为例 什么是ODBC 利用ODBC进行数据库连接 配置数据库(以SQL server为例) 首先打开SSMS(SQL server management stud ...
- 配置 | 使用ODBC连接数据库
可通过ODBC连接多种数据库,如DM数据库.ORACLE数据库等 若程序需要与数据库进行交互(连接数据库.执行某些SQL等),可以通过配置ODBC实现 ODBC配置成功后,应用程序便拥有了与数据库交互 ...
- php链接odbc,PHP使用ODBC连接数据库的方法
PHP使用ODBC连接数据库的方法 发布于 2015-09-27 06:54:06 | 56 次阅读 | 评论: 0 | 来源: 网友投递 PHP开源脚本语言PHP(外文名: Hypertext Pr ...
- ODBC连接数据库1
ODBC 作为一种简单易用的数据库连接方式,其完备的功能,良好的移植性使得其在数据库编程领域受到广泛的推崇.IBM 公司根据国际 ODBC 标准推出的 DB2 ODBC 驱动,在实现了 ODBC 主要 ...
- ODBC 连接数据库 SQL server 2008
1.打开[控制面板]-> [系统和安全] -> [管理工具]-> [数据源(ODBC)] 2.双击[数据源(ODBC)]-> 选中[系统DSN] 3.单击[添加],会弹出如下对 ...
- 以JavaScript连接mysql数据库为例说明通过ODBC连接数据库的通用方法
ODBC简介 开放数据库连接(Open Database Connectivity),ODBC是为解决异构数据库间的数据共享而产生的,ODBC 为异构数据库访问提供统一接口,允许应用程序以SQL 为数 ...
- linux odbc连接数据库失败,在Linux中使用RODBC连接到SQL Server时出错
我在linux服务器上运行不同的r程序.程序因数据库连接失败而出现以下错误: - 1: In odbcDriverConnect(paste0("DRIVER={SQL Server}; s ...
- 【笔记】LR配置ODBC连接数据库进行参数化(mysql )未完待续
很多时候我们需要大量的参数数据,但是光光靠手填写是非常麻烦的,既然被测对象的数据都在数据库,那么我们直接读取数据库回来就轻松简便很多. data wizard 提供了一个从ODBC的连接获得数据转化 ...
最新文章
- android notification 定时显示,Android编程使用Service实现Notification定时发送功能示例...
- 6.win03安全策略
- TCP客户端服务端编程模型
- HGE2D引擎按键消息分析
- java Switch里面的类型问题
- ise verilog多模块编译_如何使用ISE高效开发Verilog项目(新手)
- 如何使用TreeView控件
- Asp.net 中 IHttpHandlerFactory接口 对应web.config 中的节点
- pos费率怎么用计算机计算,刷卡机费率怎么算出来的(简单有效的方法)
- 专网网速测试软件,wlan网络测试项目和方法 常用测试软件介绍.ppt
- Signature Pad 使用
- 基于神经网络的车牌识别系统
- ***.jar!\BOOT-INF\classes!\***.xml没有此文件
- 家庭用电都是交流电,为何会有零线和火线的区别?
- 自控带宽频率等相关介绍
- mysql upsert语法_Mysql - Upsert功能实现
- X86 将死?RISC-V 正当立
- 证明残差的平均值等于0,残差以x加权的平均值为0
- mix2s刷Android7,小米Mix2s刷机教程
- 大数据杀熟 算法_大数据杀熟如何防范?
热门文章
- JLINK 驱动安装和配置ADS使用,ADX调试
- 荣耀盒子无线网连接不上电脑连接服务器,华为荣耀盒子无法连接有线网络怎么解决...
- Linux自学之旅-安装篇(挂载)
- STATA:面板数据滞后需要注意(同一家企业滞后出现空缺数据的原因)
- 项目中用到的ws2811炫彩灯控制程序
- 5G及移动边缘计算(MEC)学习笔记(1)
- win10家庭版开启远程桌面(带rdpwrap.ini)
- 制造业erp整体业务流程
- 精通python自然语言处理_精通Python自然语言处理(异步图书) 欢迎来到异步社区!...
- 良心安利Unity3D U3D游戏源码素材网站