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服务器之后,它的默认配置是不安全的,保护它是一般数据库管理中的基本任 ...
随机推荐
- Spring read-only="true" 只读事务的
概念:从这一点设置的时间点开始(时间点a)到这个事务结束的过程中,其他事务所提交的数据,该事务将看不见!(查询中不会出现别人在时间点a之后提交的数据) 应用场合: 如果你一次执行单条查询语句,则没有必 ...
- Mono vs IL2CPP
[Mono vs IL2CPP] 参考:http://blog.csdn.net/gz_huangzl/article/details/52486255
- love is ... ...
16 years old, love is dream.20 years old, love is sex.30 years old, love is marriage. 40 years old, ...
- Could not open Selected VM debug port (8700) (转)
版权声明:本文为博主原创文章,未经博主允许不得转载. 在运行项目的时候,eclipse弹出提示框“Could not open Selected VM debug port (8700). Make ...
- tensorflow(深度学习框架)详细讲解及实战
还未完全写完,本人会一直持续更新!~ 各大深度学习框架总结和比较 各个开源框架在GitHub上的数据统计,如下表: 主流深度学习框架在各个维度的评分,如下表: Caffe可能是第一个主流的工业级深度学 ...
- 103. Binary Tree Zigzag Level Order Traversal (Tree, Queue; BFS)
Given a binary tree, return the zigzag level order traversal of its nodes' values. (ie, from left to ...
- HandlerMapping和HandlerAdapter配置须知
---------------------siwuxie095 HandlerMapping 和 HandlerAdapter 配置须知 ...
- layer使用
1引入js <script src="${pageContext.request.contextPath }/js/jquery-1.9.1.min.js" type=&qu ...
- ubuntu系统ssh遇到port 22:No route to host问题
ssh遇到这个port 22:No route to host这个问题 检查防火墙状态 (iptables -L) 检查ssh状态 (ps -elf |grep ssh) 检查网络状态(换根网线)
- git--(3)分支 合并
git branch test //新建分支 git branch //列出分支 git branch -r //列出远程分支 git branch -m | -M oldbranch newbran ...