• mysql connector c++ (vc2010)


      这几天一直在尝试c++连接mysql,尝试了mysql c api以及mysql connector c++ 这2种方法(还有一种方法是使用ado,但是撸主比较懒,还是喜欢比较直接点的方法),然而mysql c api 编译通过但是运行怎么都不行,所以换成了mysql connector c++ 这种方式。接下来我将会记录我在配置vc2010的过程

      0x00  环境

        IDE:vc2010

        c++库:boost(使用mysql connector c++需要先配置boost库),mysql connector c++ 1.1.5

        数据库:mysql5.6

      0x01  安装boost库以及mysql connector c++

        首先下载boost库以及mysql connector c++(这2项都能再各自的官网上下到,就不提供链接了)

        安装boost库,下载完boost-1.58.zip ,解压缩后运行bootstrap.bat,运行完成后会多出b2.exe以及bjam.exe这2个可运行程序,这里我们只需接着运行bjam.exe(这个程序运行的时间会比较长,可以看一集银魂的说^_^),结束后你可以把总的文件贴到你需要的文件夹内。

        至于mysql connector c++,我直接下载的是.msi安装文件,安装即可,默认目录为C:Program FilesMySQLMySQL Connector C++ 1.1.5

        并把C:Program FilesMySQLMySQL Connector C++ 1.1.6libopt下的mysqlcppconn.dll复制到C:WindowsSystem32下

        至此需要的文件已安装完毕,接下来就是配置vc2010了。

      0x02  配置vc2010

        1.首先创建一个空的工程,并添加一个cpp文件。

        2.为当前工程添加目录

          找到配置选项页:

            首先我们需要确认你的mysql版本以及mysql connector c++的版本是32位还是64位,如果是均为64位,我们需要将vc2010的平台设置为64位的,不然 编译无法通过。

            Project-->Properties选项页中有Pllatform这个选项,默认为一开始创建的32位,点击Configuration Manager修改为64位

            Project-->Properties-->C/C++  选择General 里的Additional Include Directories   添加mysql connector c++ 的include 文件夹以及boost的文件夹

            

            Project-->Properties-->Linker  选择General 里的Additional Library Directories   添加mysql connector c++ 的lib 文件夹以及boost的libs文件夹

            

            Project-->Properties-->Linker  选择Input 里的Additional Dependencies  添加mysqlcppconn.lib

            

            至此我们已经完成了vc2010的配置

       0x03  验证

        接下来就是验证环境是否已成功配置,我们可以写入以下的测试代码(首先要确保mysql有测试的database)

    #include <iostream>
    #include "mysql_driver.h"
    #include "mysql_connection.h"
    #include "cppconn/driver.h"
    #include "cppconn/statement.h"
    #include "cppconn/prepared_statement.h"
    #include "cppconn/metadata.h"
    #include "cppconn/exception.h"
    
    using namespace std;
    using namespace sql;
    
    int main()
    {
        sql::mysql::MySQL_Driver *my_driver = 0;
        sql::Connection *connect = 0;
    
        try//尝试连接testdb数据库
        {
            my_driver = sql::mysql::get_mysql_driver_instance();
            connect = my_driver->connect("tcp://localhost:3306/testdb", "root", "12345678");
            cout << "connect success!" << endl;
        }
        catch (exception e)//连接失败
        {
            cout << "connect fail!" << endl;
        }
        //取出示例数据
        sql::Statement* stat = connect->createStatement();
        stat->execute("set names 'gbk'");
        ResultSet *res;
        res = stat->executeQuery("SELECT * FROM user");
        while (res->next())
        {
            cout << "ID:" << res->getString("id") << endl;
            cout << "NAME:" << res->getString("name") << endl;
        }
        if (connect != 0)//释放连接
        {
            delete connect;
        }
        getchar();
    }

      0x04 结尾

        mysql c api估计也是版本问题,编译明明能通过,however, there is no egg use。所以遇到实在无法解决的问题可以尝试着换另一种方法(技术太渣,ouduok)

  • 相关阅读:
    HTTP Digest authentication
    HDU 1520 Anniversary party 树形DP
    Servlet过滤器
    Js apply 方法 具体解释
    java 读取固定目录下的文件(和上篇差点儿相同)
    使用nodeitk进行角点检測
    ~/.local/share/Trash/files
    mv,Directory not empty不能目录覆盖
    cp 提示 overwrite 问题
    cv:显示Linux命令运行进度
  • 原文地址:https://www.cnblogs.com/webFuckeeeer/p/4526278.html
Copyright © 2020-2023  润新知