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

news2024/11/28 2:51:53

本文档旨在为需要安装和配置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文库

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2201355.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

体感魂斗罗(二)姿势/手势与键位

文章目录 姿势/手势与键位映射 姿势/手势与键位映射 姿势/手势与键位映射暂时定为如下表的映射&#xff0c;搞出来一版&#xff0c;后续再优化 姿势/手势键位手掌上抬键位-上手掌下压键位-下手掌左挥键位-左手掌右挥键位-右挥拳A键抬腿B键OK手势暂停-开始

105. 从前序与中序遍历序列构造二叉树【 力扣(LeetCode) 】

文章目录 零、LeetCode 原题一、题目描述二、测试用例三、解题思路四、参考代码 零、LeetCode 原题 105. 从前序与中序遍历序列构造二叉树 一、题目描述 给定两个整数数组 preorder 和 inorder &#xff0c;其中 preorder 是二叉树的先序遍历&#xff0c; inorder 是同一棵树的…

『网络游戏』客户端使用PESorket发送消息到服务器【14】

上一章服务器已经完成使用PESorket 现在我们将其导出在客户端中使用 生成成功后复制 粘贴到Unity项目中 进入Assets文件夹 粘贴两个.dll 创建脚本:ClientSession.cs 编写脚本: ClientSession.cs 编写脚本:GameStart.cs 将GameStart.cs脚本绑定在摄像机上 运行服务器 运行客户端…

【python实操】python小程序之封装(家具管理)

引言 python小程序之封装&#xff08;家具管理&#xff09; 文章目录 引言一、封装&#xff08;家具管理&#xff09;1.1 题目1.2 代码1.3 代码解释1.3.1 类 HouseItem1.3.2 类 House1.3.3 实例化与调用1.3.4 运行结果 四、思考 一、封装&#xff08;家具管理&#xff09; 1.1…

基于IDEA+SpringBoot+Vue+Uniapp的投票评选小程序系统的详细设计和实现

2. 详细视频演示 文章底部名片&#xff0c;联系我获取更详细的演示视频 3. 论文参考 4. 项目运行截图 代码运行效果图 代码运行效果图 代码运行效果图 代码运行效果图 代码运行效果图 5. 技术框架 5.1 后端采用SpringBoot框架 Spring Boot 是一个用于快速开发基于 Spring 框…

令牌桶算法自学笔记

令牌桶算法可以处理大流浪场景。 令牌以恒定的速率向一个令牌通中放入令牌&#xff0c;每一个请求必须要从桶中拿到令牌&#xff0c;才可以完成后续处理请求的操作。如果一个请求没有拿到令牌&#xff0c;那么就解决请求。 可以处理固定桶数量的请求&#xff0c;当请求数量超…

【hot100-java】二叉树展开为链表

二叉树篇。 /*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode() {}* TreeNode(int val) { this.val val; }* TreeNode(int val, TreeNode left, TreeNode right) {* …

进阶功法:SQL 优化指南

目录标题 SQL 优化指南1. 插入数据优化1.1 批量插入数据1.2 手动提交事务1.3 主键顺序插入1.4 大批量插入数据步骤&#xff1a; 2. 主键优化主键设计原则拓展知识 3. ORDER BY 优化3.1 Using filesort3.2 Using index示例 3.3 ORDER BY 优化原则 4. GROUP BY 优化示例 4.1 GROU…

社工字典生成工具 —— CeWL 使用手册

GitHub - digininja/CeWL: CeWL is a Custom Word List GeneratorCeWL is a Custom Word List Generator. Contribute to digininja/CeWL development by creating an account on GitHub.https://github.com/digininja/CeWL/ 0x01&#xff1a;CeWL 简介 CeWL&#xff08;Cust…

[YM]模板-归并排序

概念&#xff1a; 归并排序&#xff0c;其实是一种分治和递归算法 将大问题转化为一个个小问题处理&#xff0c;最终整合成一个大问题 模板&#xff1a; const int N 2e5 5; int a[N],b[N],n;void mergeSort(int l, int r){if(l>r) return;int mid(lr)>>1; merge…

Vue 响应式的本质

在 Vue 开发中&#xff0c;最容易出问题的地方往往是对 Vue 响应式系统的误解。 响应式的核心不在于“数据一变&#xff0c;页面就刷新”&#xff0c;这是表象。真正的本质是数据和函数的关联。 当数据与函数关联后&#xff0c;数据的变化会触发相应函数的重新运行。这里要明…

【深度学习基础模型】玻尔兹曼机BM|受限玻尔兹曼机RBM|深度置信网络DBN详细理解并附实现代码。

【深度学习基础模型】玻尔兹曼机Boltzmann machines (BM)|受限玻尔兹曼机Restricted Boltzmann machines (RBM)|深度置信网络Deep belief networks (DBN)详细理解并附实现代码。 【深度学习基础模型】玻尔兹曼机Boltzmann machines (BM)|受限玻尔兹曼机Restricted Boltzmann m…

65 切面AOP

65 切面AOP 切面基础概念 AOP&#xff1a;Aspect Oriented Programming&#xff0c;面向切面编程。是通过预编译方式&#xff08;aspectj&#xff09;或者运行期动态代理&#xff08;Spring&#xff09;实现程序功能的统一维护的技术。 面试问题&#xff1a; Spring的两大核心…

上市公司企业平台生态嵌入数据(2001-2023年)

一、资料名称&#xff1a;2023-2001年上市公司企业平台生态嵌入数据 二、测算方式&#xff1a;参考C刊《管理学刊》陈南旭&#xff08;2024&#xff09;老师的做法&#xff0c;从上市公司年报中爬取“平台生态嵌入”的有关词频来衡量其嵌入程度具有可行性与科学性。 为更好地…

dfs +剪枝sudoku———poj2676

目录 前言 lowbit函数 数独 suduku 问题描述 输入 输出 问题分析 子网格位置 优化搜索顺序剪枝1 优化搜索顺序剪枝2 可行性剪枝 代码 前言 lowbit函数 这是一个利用二进制位运算取出二进制数最后一位’1‘的函数 数独 数独大家肯定都玩过&#xff0c;…

26届日常实习 momenta一面(牛客)

26届日常实习 momenta一面 八股问答sql 40min java的集合&#xff1a;list map set底层数据结构&#xff0c;特性&#xff0c;线程安全 get post区别 mysql跟redis以外你还知道哪些数据库&#xff1a;回答了大二参加大数据竞赛用的hive hbase 你觉得hbase链式存储的优势是什么…

与鸿蒙同行,Java Solon v3.0 正式发布(向下兼容)

与 HarmonyOS NEXT 10月8日公测同行。Solon &#xff08;开放原子开源基金会&#xff0c;孵化项目&#xff09; v3.0 正式发布&#xff0c; 且将在 2025 年启动华为编程语言 “仓颉” 版开发&#xff08;届时会有 Solon-Java 和 Solon-CJ 两大版本&#xff09;。本次大版本更新…

离散数学概述

离散数学概述 离散数学&#xff08;Discrete Mathematics&#xff09;是计算机科学、信息科学、数学等领域的基础学科之一。与连续数学&#xff08;如微积分&#xff09;不同&#xff0c;离散数学主要研究离散对象&#xff0c;如整数、图、逻辑公式等。在大学的课程中&#xf…

大学的离散数学:探索数学的逻辑之美

大学的离散数学&#xff1a;探索数学的逻辑之美 离散数学&#xff0c;作为数学的一个分支&#xff0c;它研究的是离散而非连续的对象。在大学课程中&#xff0c;离散数学是计算机科学、信息科学、电子工程等专业的重要基础课程。它不仅为学生提供了必要的数学工具&#xff0c;…

qt打包程序后运行提示缺少dll文件(使用官方打包程序)

qt打包程序后运行提示缺少dll文件(使用官方打包程序) 当使用Qt完成程序打包后&#xff0c;把程序生成的文件全部复制到另外的一台没有Qt开发环境的电脑上&#xff0c;双击运行.exe可执行程序&#xff0c;提示缺少一系列的.dll程序。 提示找不到 libstdc-6.dll libwinpthread-1…