Mysql数据库安装与C++配置

时间:2024-10-15 07:25:52

本文档旨在为需要安装和配置MySQL 8.3、MySQL Workbench以及C++ Connector的用户提供详细的步骤指导。在安装过程中,可能会遇到一些常见问题,如DLL文件缺失等,本指南也会提供相应的解决办法。

1.安装Mysql8.3

安装Mysql有很多教程,本人安装的为Mysql8.3版本,此版本默认安装在C盘

Mysql官方下载:MySQL :: Download MySQL Community Server

本地下载:Mysql8.3安装包资源-****文库

选择8.3版本的:

推荐安装链接:Mysql 8.3 安装及环境配置教程

安装完以后一定要配置好环境!!!

2.安装Workbench

Workbench为mysqil的可视化软件,由于8.3版本并没有自带Workbench,因此需要手动安装,有一些mysql版本在安装过程中自带Workbench,则不需要重复安装。

官方下载:MySQL :: Download MySQL Workbench

本地下载:MysqlWorkbench可视化软件资源

3.配置C++ connector

        接下来就是使用Visual Studio连接Mysql了,有一篇链接讲解的非常详细,完全可以按照此方法配置。VS2022配置C++ connector连接mysql

本地下载:【免费】MysqlC++connector8.3资源-****文库

如果安装有问题,本文提供了已经配置好的VS项目文件,并提供了如何新建一个项目,

一共安装了这些文件,放在同一个目录里。

如果你配置不好Visual Studio环境,可以使用本人已经配置好的程序:

【免费】Mysql数据库使用,C++版本资源-****文库

里面包含两个程序,分别是数据库的创建和数据库的写入(将TXT文件的内容写入到数据库)

数据库创建:

#include <jdbc/cppconn/statement.h>
#include <jdbc/cppconn/resultset.h>
#include <jdbc/cppconn/exception.h>
#include "jdbc/mysql_driver.h"
#include<windows.h>
int main() {
    std::string sql1 = "create database Expert";//sql1用于创建testmysql数据库
    SetConsoleOutputCP(CP_UTF8);
    try
    {
        // 注册MySQL驱动程序
        sql::mysql::MySQL_Driver* driver = sql::mysql::get_mysql_driver_instance();
        sql::Connection* con;
        sql::Statement* stmt;
        sql::ResultSet* res;
        //获取数据库连接对象
        con = driver->connect("tcp://localhost:3306", "root", "123456");
        //获取执行语句对象
        stmt = con->createStatement();
        stmt->execute(sql1);
        delete stmt;
        delete con;
    }
    catch (sql::SQLException& sqle)
    {
        std::cout << "SQLException: " << sqle.what() << std::endl;
        std::cout << "SQLState: " << sqle.getSQLState() << std::endl;
        std::cout << "ErrorCode: " << sqle.getErrorCode() << std::endl;
    }
    return 0;
}

 数据库写入:

#include <jdbc/cppconn/statement.h>
#include <jdbc/cppconn/resultset.h>
#include <jdbc/cppconn/exception.h>
#include "jdbc/mysql_driver.h"
#include <fstream>
#include <iostream>
#include <string>
#include <sstream>
using namespace std;
void insertDataFromTxt(const string& filename, sql::Connection* con) {
    try {
        // 打开文本文件
        ifstream file(filename);
        if (!file.is_open()) {
            cerr << "无法打开文件:" << filename << endl;
            return;
        }

        // 创建执行语句对象
        sql::Statement* stmt = con->createStatement();
    
         切换到已经创建的数据库
        stmt->execute("USE Expert");
    
        // 读取文件内容并插入数据库
        string line;
        while (getline(file, line)) {
            // 使用istringstream解析行中的五个整数
            istringstream iss(line);
            int intention, enemyNum, ourNum, ANum, BNum, CNum;
            if (!(iss >> intention >> enemyNum >> ourNum >> ANum>> BNum >> CNum)) {
                cerr << "文件格式错误:" << line << endl;
                continue;
            }
    
            // 执行插入操作
            string sql_insert = "INSERT INTO expert_data (intention, enemyNum, ourNum, ANum, BNum, CNum) VALUES (" +
                to_string(intention) + ", " +
                to_string(enemyNum) + ", " +
                to_string(ourNum) + ", " +
                to_string(ANum) + ", " +
                to_string(BNum) + ", " +
                to_string(CNum) + ")";
            stmt->execute(sql_insert);
        }
    
        // 关闭文件和数据库连接
        file.close();
        delete stmt;
    }
    catch (sql::SQLException& e) {
        cerr << "数据库操作出错:" << e.what() << endl;
    }

}

int main() {
    // 数据库连接参数
    string hostName = "tcp://localhost:3306";
    string userName = "root";
    string password = "123456";

    try {
        // 注册MySQL驱动程序
        sql::mysql::MySQL_Driver* driver = sql::mysql::get_mysql_driver_instance();
        // 获取数据库连接对象
        sql::Connection* con = driver->connect(hostName, userName, password);
    
        // 创建数据库
        sql::Statement* stmt = con->createStatement();
        stmt->execute("CREATE DATABASE IF NOT EXISTS Expert");
        delete stmt;
    
        // 创建表
        stmt = con->createStatement();
        stmt->execute("USE Expert");
        stmt->execute("CREATE TABLE IF NOT EXISTS expert_data (intention INT, enemyNum INT, ourNum INT, ANum INT, BNum INT, CNum INT)");
        delete stmt;
    
        // 将数据从文件导入到数据库
        insertDataFromTxt("Database.txt", con);
    
        // 关闭数据库连接
        delete con;
    }
    catch (sql::SQLException& e) {
        cerr << "数据库连接出错:" << e.what() << endl;
    }
    
    return 0;

}

4.注意事项(Dll文件缺失解决办法)

安装过程中可能会遇到DLL文件缺失,可以参考以下教程:

电脑运行库缺失、DLL报错修复

工具下载链接:

【免费】电脑DLL文件修复工具资源-****文库