VS2017+MySQL8.0+MySQLconnector连接数据库 - Go语言中文社区

VS2017+MySQL8.0+MySQLconnector连接数据库


参考:
官网VisualStudio连接MySQL教程
使用MySQL connector/C++链接MySQL数据库
C++ API方式连接mysql数据库实现增删改查
C++连接mysql数据库的两种方法
【C++】VS2015/VS2017连接Mysql数据库教程

实验室需要使用C++进行数据库应用开发,现将MySQL连接的过程记录如下:

环境搭建

Windows10、VS2017、MySQL8.0、MySQL Connector/C++ 1.1.11、boost1.67.0

1、创建学生管理系统数据库

MySQL数据库的安装过程这里不详细介绍,具体参考win10系统,mysql-installer-community-5.7.21.msi安装安装好MySQLServer以后,在控制台中创建数据库,输入

create database university;

这里为了简单测试,只是创建一张学生表,创建的表如下:

create table student(
    Sno int ,
    Sname varchar (50),
    Ssex varchar(2),
    Sage int ,
    primary key (Sno)
    );

插入数据:
为简单起见,这里只插入俩条数据

insert into student(Sno, Sname, Ssex, Sage) values(20081001197,'李子聪','M',17);
insert into student(Sno, Sname, Ssex, Sage) values(20081001266,'蔡景学','F',19);

创建好的结果如下:
在数据库命令行查看:

select * from student;

这里写图片描述

项目配置

配置依赖前,先将默认的Debug模式改为Release模式
这里写图片描述
1、新建TestMySQLAPP 控制台项目
这里写图片描述
这里或者直接新建一个空项目也可以
2、依赖配置

右键项目->属性->VC++目录

包含目录
这里写图片描述
点击编辑
这里写图片描述
将已经下载解压好的Connector C++ 1.1.11include 文件夹添加进去
比如我的解压包路径是

C:Program FilesMySQLConector C++ 1.1.11mysql-connector-c++-noinstall-1.1.11-winx64include

以同样的方式将boost1.67.0 文件目录包含
我的解压包路径是:

D:Boost1.67.0boost_1_67_0

这里需要说一下为什么需要将boost 库包含进去,开始的时候我没有包含这部分,但是在运行过程中在mysql_connection.h 文件中又引用了这个库,我开始想着直接把其中引用部分的代码路径改一下,让其指向boost包对应的路径,结果发现修改后没有保存权限,所以还是老老实实将这个库目录包含进去
配置好以上的以后接下来将Connector/C++ 的lib包含进去,还是在项目的属性页

链接器->常规->附加库目录

以同样的方式添加,比如我的路径是

C:Program FilesMySQLConector C++ 1.1.11mysql-connector-c++-noinstall-1.1.11-winx64lib

添加以后的结果如下:
这里写图片描述
接着在链接器->输入 部分将mysqlcppconn.lib 添加
这里写图片描述
到这里基本上就将所有的配置完成,但是在运行过程中还是出现了一些错误,这部分没有截图,所以直接将解决的方法记录,参考的文章不记得是哪些博客,这里表示感谢
简单来说就是需要将对应的一些动态库添加到C:WindowsSystem32 目录中,这里我不太清楚为什么会出现错误,按照我的想法是在之前的配置中已经把Connectorlib 全部添加到了项目中,为什么这里还是要把一些动态的库文件放到C:WindowsSystem32 目录,但是确实结果是解决了问题。找到Connector/C++ 解压包路径,比如我的是

C:Program FilesMySQLConector C++ 1.1.11mysql-connector-c++-noinstall-1.1.11-winx64lib

将其中的.dll 文件全部拷贝粘贴到C:WindowsSystem32 目录,然后运行即可

测试连接

环境已经搭建完成,接下来测试一些简单的功能,在TestMySQLAPP.cpp 文件中
这里写图片描述
这个文件其实就是你创建空项目的Main.cpp ,也就是程序的入口,添加以下代码:

#include <stdafx.h>
#include <stdlib.h>
#include <iostream>

#include "mysql_connection.h"

#include <cppconn/driver.h>
#include <cppconn/exception.h>
#include <cppconn/resultset.h>
#include <cppconn/statement.h>

using namespace std;

int main()
{
    cout << endl;
    cout << "正在执行 SELECT sage from student where sno = '20081001197'" << endl;

    try {
        sql::Driver *driver;
        sql::Connection *con;
        sql::Statement *stmt;
        sql::ResultSet *res;

        /* 创建连接 */
        driver = get_driver_instance();
        con = driver->connect("tcp://127.0.0.1:3306", "root", "root"); // 需要修改为你数据库的用户密码
        /* 连接 MySQL 数据库 university  */
        con->setSchema("university");

        stmt = con->createStatement();
        res = stmt->executeQuery("SELECT sage from student where sno = '20081001197'"); // 标准sql语句
        while (res->next()) {
            cout << "t MySQL replies: ";
            /* 通过数字偏移量, 1 代表第一列 */
            cout << res->getInt(1)<< endl;
        }
        delete res;
        delete stmt;
        delete con;

    }
    catch (sql::SQLException &e) {
        cout << "# ERR: SQLException in " << __FILE__;
        cout << "(" << __FUNCTION__ << ") on line " << __LINE__ << endl;
        cout << "# ERR: " << e.what();
        cout << " (MySQL error code: " << e.getErrorCode();
        cout << ", SQLState: " << e.getSQLState() << " )" << endl;
    }

    cout << endl;

    return EXIT_SUCCESS;
}

结果:
这里写图片描述
与数据库中结果一致,正确连接!

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/YaboSun/article/details/81159125
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2020-03-07 18:10:21
  • 阅读 ( 1779 )
  • 分类:数据库

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢