mysql mariadb的VC客户端遇到的问题
在使用VS2017编写数据库客户端
具体设置可参见以下内容
https://dev.mysql.com/doc/connector-cpp/en/connector-cpp-apps-windows-visual-studio.html
http://www.cnblogs.com/flipped/p/6810216.html
遇到一些问题
只要涉及到sql的string操作 就会出现非法内存访问
经过一天排查 发现是关联lib有问题
要注意导入的mysql的lib是32位还是64位 且只能是release版本 比较疑惑的是 那么release如何debug呢? 仅仅靠打印么?
客户端的代码使用例子如下
pstmt = con->prepareStatement("INSERT INTO test(id,name) VALUES (?,?)");
for (int i = 1; i <= 10; i++) {
pstmt->setInt(1, i);
pstmt->setString(2, "test string");
pstmt->executeUpdate();
}
在识别类型上 应该使用pstmt->setInt 或者 pstmt->setString 。。。。还需要小小的封装
添加一个简单类型识别封装代码 这里添加一个简单例子作为示范
#include <string>
#include <iostream> template<typename T>
std::enable_if_t<std::is_integral<T>::value && std::is_same<T, int>::value, int>
bind(T item, size_t I)
{
std::cout << "call SetInt(" << I<<","<< item <<")" << std::endl;
return ;
} int bind(const std::string& item, size_t I)
{
std::cout << "call SetString(" << I << "," << item << ")" << std::endl;
return ;
} int bind( const char* p, size_t I)
{
std::cout << "call SetString(" << I << "," << p << ")" << std::endl;
return ;
} template<size_t I, typename Arg, typename... Args>
void bind(Arg& arg) {
bind(arg, I);
return;
} template<size_t I, typename Arg, typename... Args>
void bind(Arg&& arg, Args&&... args) {
bind(arg,I);
return bind<I + >((args)...);
} int main()
{
std::string s = "str1";
bind<>(,,"char*",s,std::string("s2"));
return ;
}
这里的函数通过变参模板 使用两个函数来遍历输入的变参
template<size_t I, typename Arg, typename... Args>
void bind(Arg& arg) {}
template<size_t I, typename Arg, typename... Args>
void bind(Arg&& arg, Args&&... args) {}
依次获取到参数后 使用模板进行类型TRAIT 获取参数类型 从而调用正确的函数setint()或者setstring()
代码运行结果如下
call SetInt(1,1)
call SetInt(2,2)
call SetString(3,char*)
call SetString(4,str1)
call SetString(5,s2)
请按任意键继续. . .
mysql mariadb的VC客户端遇到的问题的更多相关文章
- Docker笔记一:基于Docker容器构建并运行 nginx + php + mysql ( mariadb ) 服务环境
首先为什么要自己编写Dockerfile来构建 nginx.php.mariadb这三个镜像呢?一是希望更深入了解Dockerfile的使用,也就能初步了解docker镜像是如何被构建的:二是希望将来 ...
- 15 个有用的 MySQL/MariaDB 性能调整和优化技巧(转载的一篇好文)
MySQL 是一个强大的开源关系数据库管理系统(简称 RDBMS).它发布于 1995 年(20年前).它采用结构化查询语言(SQL),这可能是数据库内容管理中最流行的选择.最新的 MySQL 版本是 ...
- 在CentOS 7 MySQL / MariaDB
在CentOS7中,MariaDB 替代了MySQL;更多复杂的疑问可以在这里查看 MariaDB versus MySQL – Compatibility Install MySQL / Mari ...
- MySQL/MariaDB的锁
本文目录: 1.MariaDB/MySQL事务提交的方式 2.MariaDB/MySQL中的锁简介 2.1 不同存储引擎支持的锁级别 2.2 锁类型 2.3 锁兼容性 3.MyISAM的表级锁(loc ...
- 远程连接MySQL(MariaDB)数据库
网络环境: MySQL(MariaDB)服务器的操作系统为 CentOS 7 MySQL(MariaDB)服务器IP:172.16.230.15 客户端操作系统为 Windows 2008 R2 客户 ...
- 关于数据库管理系统DBMS--关系型数据库(MySQL/MariaDB)
数据库的结构(3种):层次,网状,关系型(用的最多): DBMS的三层模型: 视图层:面向最终用户: 逻辑层:面向程序员或DBA: 物理层:面向系统管理员: 关系型数据库管理系统——RDBMS: 主要 ...
- 记录CentOS 7.4 上安装MySQL&MariaDB&Redis&Mongodb
记录CentOS 7.4 上安装MySQL&MariaDB&Redis&Mongodb 前段时间我个人Google服务器意外不能用,并且我犯了一件很低级的错误,直接在gcp讲服 ...
- 详细介绍MySQL/MariaDB的锁
官方手册:https://dev.mysql.com/doc/refman/5.7/en/innodb-locking-transaction-model.html 1.事务提交的方式 在MariaD ...
- [译]在Linux上的提高MySQL/MariaDB安全性的12条建议
MySQL 是世界上最流行的开源数据库系统,而MariaDB(MySQL的一个分支)是世界上发展最快的开源数据库系统.安装MySQL服务器之后,它的默认配置是不安全的,保护它是一般数据库管理中的基本任 ...
随机推荐
- 安装FP
一.安装Oracle 11.2 64-bit数据库 1.安装数据库软件并将SEINESCM数据库还原到服务器上, 2.配置监听和TNS信息 二.安装数据库32位客户端(为SSIS配套使用).安装ORA ...
- 物料没加DUMMY
会加入DUMMY的表 IN_ITEM,IN_ITEM_SITE,IN_SALES_ORDER 加入DUMMY的存储过程名为SAP_MATERIAL_SO. FP_CHANGE_MO_ROUTING的第 ...
- spring boot 中统一异常处理
基于 spring boot 对异常处理的不友好,现在通过其他的方式来统一处理异常 步骤一:自定义异常类 public class UserNotExistException extends Runt ...
- 设置https以及http转https的问题
公司用的是阿里云服务器win2008server r2 ,环境是phpwamp,出现许多问题.2018-11-12 一 设置https 1.设置httpd.ini 取消以下三个配置的# LoadMod ...
- 用两个栈实现队列(python)
题目描述 用两个栈来实现一个队列,完成队列的Push和Pop操作. 队列中的元素为int类型. # -*- coding:utf-8 -*- class Solution: def __init__( ...
- 江西财经大学第一届程序设计竞赛 H题 求大数的阶乘
链接:https://www.nowcoder.com/acm/contest/115/H 来源:牛客网 晚上,小P喜欢在寝室里一个个静静的学习或者思考,享受自由自在的单身生活. 他总是能从所学的知识 ...
- stm32阅读代码工具source insight
不知道学stm32有没有这样的烦恼,想看一个项目的代码,但是用keil又发现建立工程太麻烦,单个打开文件又找不到函数和变量之间的依赖关系,变量和函数又不能高亮显示,linux下vim和emacs虽然很 ...
- 微信小程序开发——获取小程序带参二维码全流程
前言: 想要获取微信小程序带参数二维码,如这种: 官方文档只说了获取小程序码和二维码的三种接口及调用(参考链接:https://developers.weixin.qq.com/miniprogram ...
- vue滚动行为控制——页面跳转返回上一个页面保留滚动位置
需求分析: 一般这个功能在后台管理系统用的比较多,因为后台页面都是在当前页面打开,对于某些列表筛选页,如果列表数据比较多,页面就会滚动.当页面发生滚动,对列表数据进行查看或者编辑的时候,跳转到下一级页 ...
- python常见的数据结构
https://www.cnblogs.com/5poi/p/7466760.html