文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

[Mysql | C++] C++中使用Mysql数据库

2023-10-25 16:09

关注

目录

一、环境安装

二、环境配置

 三、编写程序


一、环境安装

1.Mysql 8.0

2.Microsoft Visual Studio 2017

注意:vs2019版本及以下才支持Mysql,若使用高版本可以使用SQL Server

二、环境配置

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

打开项目属性页面

[调试]中的[环境]改为bin文件夹地址

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

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

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

7.根据自己的系统位数(64/32)添加libmysql.dll:

(1)从这位博主的网盘获取动态链接库:

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

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

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

(4)把64位libmysql.dll放到cpp同目录下

注意:这一步(7)是为了解决我遇到的两个问题,一个是缺少libcrypto-1_1-x64.dll和libssl-1_1-x64.dll两个动态链接库;另一个是“无法定位程序于xxx”。

将运行平台改为x64,完成

 三、编写程序

#define _CRT_SECURE_NO_WARNINGS#include "bits/stdc++.h"#include "mysql.h"class Mysql {private:MYSQL mysql;MYSQL_RES* res;public:Mysql() {res = nullptr;mysql_init(&mysql); // initmysql_options(&mysql, MYSQL_SET_CHARSET_NAME, "gbk"); // 设置编码}void connectToDatabase(const char* password) {// 函数参数自行百度,其中"mysql"是mysql原来就有的数据库,可以暂时连接到它if (mysql_real_connect(&mysql, "localhost", "root", password, "mysql", 3306, NULL, 0) != NULL) {std::cout << "mysql连接成功" << "\n";}else {std::cout << "mysql连接失败" << "\n";}}void createDatabase(std::string name) {std::string query = "create database if not exists " + name + ";";if (mysql_query(&mysql, query.c_str()) == 0) { // 0 是能执行std::cout << name << "创建成功" << "\n";}else {std::cout << name << "已存在" << "\n";}}void useDatabase(std::string name) {std::string query = "use " + name + ";";if (mysql_query(&mysql, query.c_str()) == 0) {std::cout << "正在使用" + name << "\n";}else {std::cout << "使用失败" << "\n";}}void writeInfo(std::string query) {if (mysql_query(&mysql, query.c_str()) == 1) {std::cout << "错误原因" << mysql_error(&mysql) << "\n";return;}res = mysql_store_result(&mysql);int field_num = mysql_num_fields(res);MYSQL_FIELD *field_name = mysql_fetch_fields(res);std::cout << "\n";for (int i = 0; i < field_num; ++i) {std::cout << field_name[i].name << " \n"[i == field_num - 1];}MYSQL_ROW row;while (row = mysql_fetch_row(res)) {for (int i = 0; i < field_num; ++i) {if (row[i] != NULL) {if (strlen(row[i]) > 0) std::cout << row[i] << " ";else std::cout << "NULL";}else std::cout << "NULL" << " ";}std::cout << "\n";}std::cout << "\n";}};signed main() {Mysql op;// 连接到默认数据库op.connectToDatabase("010214");// 创建数据库op.createDatabase("newDatabase");// 使用数据库op.useDatabase("newDatabase");// ......}

注意:

代码完成了Mysql类的实现,各个函数自行百度。

在 useDatabase() 调用后,就可以根据自己的需要创建表,插入数据等等操作,核心思想就是用 mysql_query(string) 发起请求。

writeInfo() 实现了结果集的输出。

如果插入的数据量很大,可以自定义结构体莱实现insert,如下:

(具体情况见专栏第二篇https://blog.csdn.net/joyride_run/article/details/130496869

#define _CRT_SECURE_NO_WARNINGS#include "bits/stdc++.h"struct TableS {std::string sno, sname, city;int status;TableS() = default;TableS(std::string sno, std::string sname, int status, std::string city) {this->sno = sno;this->sname = sname;this->status = status;this->city = city;}static std::string query(TableS t) {std::string query = "insert into s(sno, sname, status, city) values('" + t.sno + "', '" + t.sname + "', " + std::to_string(t.status) + ", '" + t.city + "');";return query;}static void cinData(std::string filePath, std::vector  &v) {std::cout << filePath << "\n";FILE *fp = fopen(filePath.c_str(), "r");char a[20], b[20], d[20]; int c;// 会有编码问题,需要进行转码while (fscanf(fp, "%s %s %d %s", a, b, &c, d) != EOF) {v.push_back(TableS(std::string(a), std::string(b), c, std::string(d)));}fclose(fp);}};

C++在Mysql中的基本使用就是这些,欢迎纠错。

来源地址:https://blog.csdn.net/joyride_run/article/details/130403835

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-数据库
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯