c++配置链接mysql

 

一、环境安装

1.Mysql 8.0

2.Microsoft Visual Studio 2017

下载mysql库:

从这位博主的网盘获取动态链接库

32位/64位 libmysql.dll和libmysql.lib下载_libmysql.dll下载_不吃水果的太空人的博客-CSDN博客

二、环境配置

1.检查Mysql 8.0的安装文件夹中是否包含include和lib文件夹,若不存在,需要重新安装

 

2.在项目属性中配置相关配置(主要配置头文件路径,链接库路径)

  1)配置头文件include目录

  将[c/c++]中的[常规]的[附加包含目录]追加为include文件夹地址

   2)配置链接库

a. 将[链接器]下的[常规]中的[附加库目录]改为lib文件夹地址

 

b. 将[链接器]下的[输入]中的[附加依赖项]改为libmysql.lib的地址

 

  3)根据自己的系统位数(64/32)添加libmysql.dll:(把libmysql.dll放到cpp同目录下,病解决一些报错)

  a.在Mysql 8.0的安装文件夹中打开bin,复制libcrypto-1_1-x64.dll和libssl-1_1-x64.dll两个动态链接库,粘贴到system32文件夹中

注意:

以64位为例,把下载好的64位dll放到system32文件夹(存放64位文件),把32位dll放到sysWOW64文件夹(存放32位文件)

 

  b.把64位libmysql.dll放到cpp同目录下(如果放到其他目录,需要在项目属性中设置)

 

 

三、编写程序

 

#include <iostream>
using namespace std;
#include <mysql.h>

int main() {
    cout << " std ";
    char host[10] = "localhost";//端口号 
    char user[10] = "root";//用户 
    char password[10] = "89757";//密码 
    char database[10] = "mysql";//数据库 
    MYSQL* conn;//设置数据库连接上下文

    mysql_library_init(0,0,0);
    conn = mysql_init(NULL);//初始化连接句柄 
    /*MYSQL conn;
    mysql_init(&conn);*/
    if (!conn) {
        puts("初始化失败!");
        return EXIT_FAILURE;
        //exit(1); 
    }
    //设定超时3秒提示
    int to = 3;
    int re  = mysql_options(conn,MYSQL_OPT_CONNECT_TIMEOUT,&to);
    if ( re != 0 ) {
        cout << "mysql_opt failed:" << mysql_error(conn)  <<endl;
    }


    conn = mysql_real_connect(conn, host, user, password, database, 0, NULL, 0);//连接数据库 
    if (conn)  puts("数据库连接成功!");//判断数据库是否连接成功 
    else {
        printf("数据库连接失败,错误:%s", mysql_error(conn));
        mysql_close(conn);
        return EXIT_FAILURE;
        //exit(1);
    }

    //字符编码,解决乱码
    if (mysql_set_character_set(conn, "utf8"))    puts("字符集设置错误!");
    else    puts("字符集设置成功!");

    char query[20] = "select * from user";
    //mysql_real_query(conn,query,strlen(query));
    if (mysql_query(conn, query))    printf("查询失败,错误:%s\n", mysql_error(conn));
    else    puts("查询成功!");

    MYSQL_RES* mysql_res;
    mysql_res = mysql_use_result(conn);
    

    int field_num = mysql_num_fields(mysql_res);//列数量
    MYSQL_FIELD* field_name = mysql_fetch_fields(mysql_res);//列数组
    for (int i = 0; i < field_num; ++i) {
        std::cout << field_name[i].name << " \n"[i == field_num - 1];
    }


    MYSQL_ROW mysql_row;
    while(mysql_row = mysql_fetch_row(mysql_res)) {
        cout << "row1:" << mysql_row[0] << "row2:" << mysql_row[1] << endl;
    }

    mysql_free_result(mysql_res);//查完释放



    mysql_library_end();
    return 0;
}

 

 

 

 

 

 

 

 

 

转: https://blog.csdn.net/joyride_run/article/details/130403835

https://blog.csdn.net/wddkxg/article/details/129001324

https://blog.csdn.net/Chasingthewinds/article/details/130344853

posted @ 2023-11-01 17:31  与f  阅读(42)  评论(0编辑  收藏  举报