1.安装Mysql

  • 下载并安装mysql
  • 设置环境变量
  • (网上有很多教程,按需选择,不再展示)

2.访问Mysql数据库

  1. 打开mysql的安装目录(默认:C:\Program Files\MySQL\MySQL Server 8.0),检查lib和include目录
  2. 新建一个空工程,解决方案选择x64(mysql 8.0以上必须)
  3. 右键工程选择属性 — VC++目录 — 包含目录 — 添加mysql安装路径下include的路径:
  4. c++连接mysql数据库增删改查 c++如何连接mysql数据库_数据库

  5. VC++目录 — 库目录 — 添加mysql安装路径下lib的路径:
  6. c++连接mysql数据库增删改查 c++如何连接mysql数据库_mysql_02

  7. 要指明使用哪个库文件。属性 — 链接器 — 输入 — 附加依赖项,添加lib目录下的libmysql.lib文件名
  8. c++连接mysql数据库增删改查 c++如何连接mysql数据库_mysql_03

    c++连接mysql数据库增删改查 c++如何连接mysql数据库_mysql_04

  9. 因为单独点击编译后的可执行文件运行(或者命令行运行)的时候需要调用libmysql.dll文件,所以需要将它复制到 C:\windows\system32(或复制到生成可执行文件的目录(一般是x64/Devyg)下) 目录下
  • System32是系统目录,很多应用程序放在System32下,执行时只需要输入或调用xxx.exe即可(一般系统会默认加载)
  • 在上面添加mysql安装路径下lib的路径到库目录后,直接在vs中运行时不需要添加libmysql.dll到任何地方,vs运行时会直接索引到需要的dll附加到可执行文件(.exe)中

3.增删改查代码示例

// TestConnectMysql.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//

#include <iostream>
#include <mysql.h>
using std::cout;
using std::endl;

int main()
{
    std::cout << "Hello World!\n";
    MYSQL mysql; //数据库句柄
    MYSQL_RES* res = nullptr; //查询结果集
    MYSQL_ROW row; //记录结构体

    mysql_init(&mysql); //初始化数据库
    mysql_options(&mysql, MYSQL_SET_CHARSET_NAME, "gbk"); //设置字符编码

    do {
        //连接数据库
        if (!mysql_real_connect(&mysql, "127.0.0.1", "root", "supercoder6821", "TestConnectCpp", 3306, NULL, 0)) {
            cout << "Error : " << mysql_error(&mysql) << endl;
            break;
        }

        //插入数据 成功返回0,查询失败返回随机值
        int ret = mysql_query(&mysql, "insert into test values(3, '王五', 25)");
        if (ret) {
            cout << "Error: Query[insert] fail." << endl;
            break;
        }
        cout << "Query[insert] success." << endl;
        if (mysql_query(&mysql, "select * from test where id = 3")) { //查询数据
            cout << "Query[select] fail." << endl;
            break;
        }
        res = mysql_store_result(&mysql); //查询结果集
        row = mysql_fetch_row(res);
        cout << "ID: " << row[0] << " Name: " << row[1] << " Age: " << row[2] << endl;

        //删除数据  成功返回0,查询失败返回随机值
        if (mysql_query(&mysql, "delete from test where id = 3")) {
            cout << "Error: Query[delete] fail." << endl;
            break;
        }
        cout << "Query[delete] success." << endl;

        //修改数据  成功返回1,查询失败返回0
        if (mysql_query(&mysql, "update test set name = 'Test', age = 10 where id = 2")) {
            cout << "Error: Query[update] fail." << endl;
            break;
        }
        cout << "update success." << endl;


        //查询数据 成功返回0,查询失败返回随机值
        if (mysql_query(&mysql, "select * from test;")) {
            cout << "Query[select] fail." << endl;
            break;
        }
        res = mysql_store_result(&mysql); //查询结果集
        //根据结果集获取数据,如果不为空则打印
        while (row = mysql_fetch_row(res)) { //mysql_fetch_row:检索结果集的下一行
            cout << "ID: " << row[0] << " Name: " << row[1] << " Age: " << row[2] << endl;
        }

    }while(0);
    
    if (res != nullptr) {
        mysql_free_result(res); //释放结果集
    }

    mysql_close(&mysql);

    system("pause");

    return 0;
}