本文档旨在为需要安装和配置MySQL 8.3、MySQL Workbench以及C++ Connector的用户提供详细的步骤指导。在安装过程中,可能会遇到一些常见问题,如DLL文件缺失等,本指南也会提供相应的解决办法。
1.安装Mysql8.3
安装Mysql有很多教程,本人安装的为Mysql8.3版本,此版本默认安装在C盘
Mysql官方下载:MySQL :: Download MySQL Community Server
本地下载:Mysql8.3安装包资源-CSDN文库
选择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资源-CSDN文库
如果安装有问题,本文提供了已经配置好的VS项目文件,并提供了如何新建一个项目,
一共安装了这些文件,放在同一个目录里。
如果你配置不好Visual Studio环境,可以使用本人已经配置好的程序:
【免费】Mysql数据库使用,C++版本资源-CSDN文库
里面包含两个程序,分别是数据库的创建和数据库的写入(将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文件修复工具资源-CSDN文库