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", "3342125");
    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 = 0;
    while (resultSet->next()) {
        cout << ", label = '" << resultSet->getString("ACCOUNT") << "'" << endl;
        i++;
    }

    cout<<"共"<<i<<"条"<<endl;

    con->close();
    delete stmt;
    delete con;

END:
    system("pause");

    return 0;
}
时间: 2024-10-28 02:01:43

mysql Connector C++ 操作数据库 vs2012的相关文章

mysql5.7在centos下编写c语言程序操作数据库时,头文件#include&amp;amp;lt;mysql/mysql.h&amp;amp;gt;报错

问题描述 mysql5.7在centos下编写c语言程序操作数据库时,头文件#include<mysql/mysql.h>报错 mysql5.7在centos下编写c语言程序操作数据库时,头文件#include报错 解决方案 这是没有找到plugin_auth_common.h文件啊,你对照一下目录下面有没有这个文件啊...另外这个/usr/include/mysql/mysql目录看起来有点奇怪啊,你是不是多建了一层mysql目录

初涉MySQL——操作数据库

初涉MySQL--操作数据库 一.数据库创建:CREATE 1.语法:CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name [DEFAULT] CHARACTER SET [=] charset_name. 2.DATABASE和SCHEMA是相同的,任选其一 3.IF NOT EXISTS:如果创建的数据库存在,则不只报出warning,不写会报错 4.CHRARCTER SET gbk:为表设置编码方式,如果不设置则用mysql默认的编码方式

mysql之字符串操作

写在前面 上篇文章学习了mysql常用的日期操作的函数,这篇文章将学习mysql的字符串操作的函数. 系列文章 mysql之创建数据库,创建数据表 mysql之select,insert,delete,update mysql之group by,order by mysql之count,max,min,sum,avg,celing,floor mysql之日期函数 mysql实战 1.ASCII(str) select ascii('a'); select ascii('ab'); select

statement-用Statement可以操作数据库PrepareStatement不行吗,为什么,看如下代码。

问题描述 用Statement可以操作数据库PrepareStatement不行吗,为什么,看如下代码. import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement; public class JdbeTest {

ASP操作数据库的类,让数据操作变得简单

对于ASP的使用者来说,在数据库操作上越简单,就有更多的时间去考虑逻辑上和应用上的代码,效率也会更高.今天俺在这里给大家提供一种数据库操作的思路,这些代码是俺在长期的ASP应用中不断完成和修正的,也已经用它完成了很多项目了,应该说直接拿去用是没有问题的.当然本人能力也有限,希望大家一起来讨论. 说明:此帖代码均是VBScript版本.另外最好你对手写ASP已经有一定的基础. 先简单介绍一下俺这个类的一些特点: 1.可同时操作多个不同类型的数据库.2.完全不用考虑数据类型的差别,再也不用想字符型字

PHP操作数据库 动态创建字段

PHP操作数据库时自动创建字段,如下代码: <html>  <head>  <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />  <title>动态创建字段 - www.cxybl.com</title>  <style type="text/css">  <!--  .STYLE

使用 PHP + MySQL 处理负载过重的数据库问题思考和总结

以下是我对使用 PHP + MySQL 处理负载过重的数据库问题思考和总结,经验方面一定有着不少欠缺的地方,欢迎高手前来指教: 在设计时考虑合理的表结构和相应大概要承受多少访问压力,需不需要分表,如果需要分表每个表放多少条记录合适: 对于分表的实现可以采用 PHP 处理或是 MySQL 自带的 MERGE 表类型(即 MRG_MyISAM)来处理: ⑴如果是使用 PHP 处理有两种情况: ①没有数据的新库新表要为抗压做准备,比如一个聊天室一开始就要考虑可能有多个子聊天室,可以根据一些条件来进行,

PHP连接MySQL数据的操作要点

 MySQL扩展库操作MySQL数据库的步骤如下: 1:获取连接. 2:选取书库. 3:设置操作编码. 4:发送SQL指令(MySQL数据库可以分为四种指令: 4.1:ddl: 数据定义语言. 4.2:dml:数据操语言(如CURD): 4.3:dql:数据查询语言.(如select) 4.4:dtl:数据事物语言. 5:接收返回结果,并且处理. 6:断开连接. 具体的示例代码如下: 代码如下: <?php //1:连接数据库 $con=mysql_connect("localhost&q

PHP入门教程之使用Mysqli操作数据库的方法(连接,查询,事务回滚等)_php技巧

本文实例讲述了PHP入门教程之使用Mysqli操作数据库的方法.分享给大家供大家参考,具体如下: Demo1.php <?php //使用 mysqli 对象操作数据库 //创建 mysqli 对象(资源句柄) $_mysqli = new mysqli(); //连接数据库 1.主机名(ip) 2.账户 3.密码 4.数据库 //mysqli_connect 函数 == $_mysqli -> connect(); $_mysqli -> connect('localhost','ro