mysql Connector C++ 操作数据库 vs2012
最近想写一个应用程序,要连接和操作mysql数据库,以前只是用c++ builder 操作过mysql数据库,那是用控件操作的,感觉比较弱智,但是c++ builder vcl控件感觉在多线程里比较坑,所以用vs2012做了。
c++连接mysql有两种方式,1是原始的方法,2是用 Connector c++ 。Connector c++ 只是一种封装,使之更加方便.本方只记下关于 Connector c++ 操作数据库。
想写一个demo 测试一下。
mysql connector c++ 调用 方式 有两种,一种是动态链接库调用 ,一种是静态库调用。静态库试了一整天不行,都是以 get_mysql_driver_instance() 没有链接到而靠终,后来才知道 新版本的connector c++ 如果以静态方式调用的话是不再用这个函数了 可是官方文档中没有说不用get_mysql_driver_instance这个函数是怎么操作数据库的。静态失败了,搞动态吧。
动态库调用方式是若干 .h 文件和一个 mysqlcppconn.lib 链接之后在运行期间会调用mysqlcppconn.dll貌似运行期间还要调用 libmysql.dll 。
下面说步骤
1.首先把把connector c++ include文件夹 加到工程包含目录里
2.其次链接lib 其中分为debug版和 release 版
#ifdef _DEBUG
#pragma comment(lib,"..\\dynamic_lib\\Debug_\\mysqlcppconn.lib")
#else
#pragma comment(lib,"..\\dynamic_lib\\Release_\\mysqlcppconn.lib")
#endif // DEBUG
3.直接调用函数了 ,以下代码测试正确 vs2012 win7 64位
// TestMySql.cpp : 定义控制台应用程序的入口点。
// #include "stdafx.h"
#include "mysql_connection.h"
#include "mysql_driver.h"
#include "mysql_error.h" #include <cppconn/driver.h>
#include <cppconn/exception.h>
#include <cppconn/resultset.h>
#include <cppconn/statement.h>
#include <cppconn/prepared_statement.h> #include <iostream>
using namespace std; #ifdef _DEBUG
#pragma comment(lib,"..\\dynamic_lib\\Debug_\\mysqlcppconn.lib")
#else
#pragma comment(lib,"..\\dynamic_lib\\Release_\\mysqlcppconn.lib")
#endif // DEBUG int _tmain(int argc, _TCHAR* argv[])
{
sql::mysql::MySQL_Driver *driver = NULL;
sql::Connection *con = NULL;
driver = sql::mysql::get_mysql_driver_instance();
if(driver == NULL)
{
cout<<"driver is null"<<endl;
goto END;
}
con = driver->connect("tcp://localhost:3306", "root", "");
if(con == NULL)
{
cout<<"conn is null"<<endl;
goto END;
} cout<<"连接数据库成功"<<endl; sql::Statement * stmt = NULL;
stmt = con->createStatement();
if(stmt == NULL)
{
cout<<"stmt is null"<<endl;
goto END;
}
stmt->execute("SET CHARSET GB2312");
stmt->execute("USE zhanbao");
sql::ResultSet * resultSet = stmt->executeQuery("这里写查询语句 ");
int i = ;
while (resultSet->next()) {
cout << ", label = '" << resultSet->getString("ACCOUNT") << "'" << endl;
i++;
} cout<<"共"<<i<<"条"<<endl; con->close();
delete stmt;
delete con; END:
system("pause"); return ;
}
mysql Connector C++ 操作数据库 vs2012的更多相关文章
- Mysql使用终端操作数据库
使用终端操作数据库 1.如何查看有什么数据库? show databases; 2.如何选择数据库? use databasesName; 3. ...
- MySQL—Dos命令操作数据库
MySQL 是一个关系型数据库,存在表的概念 结构,数据库可以存放多张表,每个表可以存放多个字段,每个字段可以存放多个记录 Dos命令操作数据库 PhpStudy使用终端打开数据库 第一次打开默认的密 ...
- mysql一:操作数据库
创建数据库是指在数据库空间中划出一块空间用来存储相关的数据,表就是存储在对应的数据库里面.首先来看下查看数据库的命令:show databases. 这个是用来查询数据库空间下所有的数据库,其中inf ...
- PHP mysql扩展整理,操作数据库的实现过程分析
相关文章:PHP mysqli扩展整理,包括面向过程和面向对象的比较\事务控制\批量执行\预处理 PHPmysqli扩展整理,包括面向过程和面向对象的比较\事务控制\批量执行\预处理 从某种程度上 ...
- MySQL创建和操作数据库表demo
[1]建立员工档案表要求字段:员工员工编号,员工姓名,性别,工资,email,入职时间,部门. [2]合理选择数据类型及字段修饰符,要求有NOT NULL,auto_increment, primar ...
- 使用navicat for mysql图形界面操作数据库、使用node.js操作数据库写接口
1.先启动MYSQL服务 2.打开navicat for mysql, 点击链接,输入如下的内容: 3.新建数据表 4.数据库(新建一个db.js) //数据库链接配置 module.exports ...
- MySql笔记之操作数据库
看前引导 ♦MySQL默认的端口号:3306 ♦MySQL中的超级用户:root ♦SQL语句结尾必须以分号结尾 ♦语法使用介绍 花括号 必须有的部分 中括号 可选项 ,可有可无 竖线 从这个当 ...
- mysql基础_操作数据库以及表
1.数据库的操作 create database 数据库名:#一般创建方式 create database 数据库名 show databases;#查看所有数据 drop database 数据库名 ...
- mysql:SQL语句操作数据库中表和字段的COMMENT值
转载:http://blog.163.com/inflexible_simple/blog/static/167694684201182601221758/ 参考文档不太给力啊,表注释和字段注释的资料 ...
随机推荐
- 获取apk的appPackage和appActivity方法
aapt dump badging +客户端包所在路径+客户端包名称; aapt是SDK\tools侠的工具: adb shell logcat | grep cmp= 将 ...
- win7 安全模式开启声音
下载运行这个reg文件 http://files.cnblogs.com/files/bushe/Activate_Sound_in_SafeMode.rar
- 【堆】bzoj1293 [SCOI2009]生日礼物
考虑poj3320尺取法的做法,与此题基本一样,但是此题的 位置 的范围到2^31 尺取法不可. 将每种珠子所在的位置排序. 每种珠子要维护一个指针,指到已经用到这个种类的哪个珠子. 所以尺取法用堆优 ...
- 【强联通分量缩点】【最短路】【spfa】bzoj1179 [Apio2009]Atm
缩点后转化成 DAG图上的单源最长路问题.spfa/dp随便. #include<cstdio> #include<queue> #include<algorithm&g ...
- @RequestParam注解的使用
自SpringMVC4.2之后,RequestParam内部有4个参数: 1.String name; 2.String value; 3.boolean required; 4.String def ...
- cocos2d-x引擎优化 修改记录
3.13 一些无聊的bug etc1 在android 平台不能正常显示,包括 cc.Button,setGray,clipeNode 3.13.1优化记录 7月 2.公式计算改为长整型, ...
- jvm-监视管理控制台-jconsole
命令: jconsole 作用: jvm进程运行状态的实时.可视化工具 效果: 连接远程jvm进程: 1.首先远程jvm进程,开启了jmx服务: -Dcom.sun.management.jmxrem ...
- <摘录>字节对齐(强制对齐以及自然对齐)
struct {}node; 32为的x86,window下VC下sizeof(node)的值为1,而linux的gcc下值为0: 一.WINDOWS下(VC--其实GCC和其原理基本一样,象这种问题 ...
- 如何提高码农产量,基于ASP.NET MVC的敏捷开发框架之工作流开发随笔三
前言 “厂长,APP的那几个功能都差不多了,接下来要做工作流,工作流这东西我完全没概念啊.” “查尔斯,一般来说工作流就是指将指定的数据.文件.任务按照预定的规则进行传递流转.比如说你要请假,拿个请假 ...
- 更合理的 setState()
原文发表在我的博客:http://www.erichain.me/2017/04/17/2017-04-17-more-reasonable-setstate/ React 是我做前端以来接触到的第三 ...