广告
返回顶部
首页 > 资讯 > 数据库 >c++ 连接mysql数据库
  • 870
分享到

c++ 连接mysql数据库

数据库 2023-09-03 20:09:40 870人浏览 八月长安
摘要

        使用vs2019对window11中的数据库进行连接 1. 配置连接环境         首先需要把Mysql中的头文件和库文件放入到c++项目工程中 打开安装mysql的目录,在windows系统中如果是默认路径,应该和我

        使用vs2019对window11中的数据库进行连接

1. 配置连接环境

        首先需要把Mysql中的头文件和库文件放入到c++项目工程中

打开安装mysql的目录,在windows系统中如果是默认路径,应该和我的是一样的:C:\Program Files\Mysql\MySQL Server 8.0

找到include,和lib文件,include文件是包含的头文件,lib文件是包含的库文件

 3.在创建的c++工程中加入include,lib文件路径,按一下步骤

        1.工程中的项目找到属性

        2.到 VC++ 目录 中的包含目录和库目录分别加入include文件和lib文件的路径,

                这是我的路径:include文件路径:C:\Program Files\MySQL\MySQL Server 8.0\include

                                         lib文件路径:C:\Program Files\MySQL\MySQL Server 8.0\lib

         3. 到 链接器 中的 输入 中的 附加依赖项中 加入 libmysql.lib 的依赖:

         4.还需要把下图中的 libmysql.dll 的文件复制到 C:\Windows\System32 目录中

 

连接mysql可以参考 mysql参考手册 进行查看

2.代码实现连接

        1. mysql_read_connect函数,连接成功会返回MYSQL*连接句柄,返回得值与第一个参数得值相同,连接失败返回一个null:

mysql_real_connect(    MYSQL *mysql,   ///< 数据库句柄    const char *host, ///< 主机名    const char *user, ///< 用户名    const char *passwd,///< 密码    const char *db, ///< 数据库名    unsigned int port, ///< 端口号(MySQL为3306)    const char *unix_Socket,///< unix_socket–unix连接方式,为NULL时表示不使用socket或管道机制    unsigned long clientflag ///< clientflag–Mysql运行为ODBC数据库的标记,一般取0    );

        例子:

#define _CRT_SECURE_NO_WARNINGS#include#include#include#includeint main(){int sr;srand((unsigned)time(NULL));sr = rand() % 50 + 1;//固定不变的MYSQL mysql;    //一个数据库结构体  MYSQL_RES* res; //一个结果集结构体MYSQL_ROW row; //char** 二维数据,存放一条条记录//初始化数据库mysql_init(&mysql);//设置编码方式mysql_options(&mysql, MYSQL_SET_CHARSET_NAME, "gbk");//连接数据库                    //ip地址   //用户名 //密码       //数据库名if (mysql_real_connect(&mysql, "localhost", "root", "Z20020803", "box_man", 3306, NULL, 0) == NULL){printf("错误原因:%s\n", mysql_error(&mysql));printf("连接失败\n");exit(-1);}//往数据库中插入一个随机数char* str1 = "insert into rand values(";char sql_insert[200];sprintf(sql_insert, "%s%d%s", str1, sr, ")");mysql_query(&mysql, sql_insert); //sql语句提交//查询数据mysql_query(&mysql, "select * from rand");//获取结果集res = mysql_store_result(&mysql);//给ROW赋值,判断ROW是否为空,不为空就打印数据while (row = mysql_fetch_row(res)){printf("%s\n", row[0]);}//释放结果集mysql_free_result(res);//关闭数据库mysql_close(&mysql);//停留等待system("pause");return 0;}

        使用c++语句对数据库进行增删改查,在使用c++中string类型时,需要把string类型转换为c中的类型,使用mysql_query函数把sql语句提交,查询成功返回0,结果会被保存到mysql对象中,查询失败会返回非0值:

#define _CRT_SECURE_NO_WARNINGS#include#include#includeusing namespace std;int main(){MYSQL mysql;MYSQL_RES* res;MYSQL_ROW row;mysql_init(&mysql);if (mysql_real_connect(&mysql, "localhost", "root", "Z20020803", "box_man", 3306, NULL, 0) == NULL){printf("错误提示:%s\n", mysql_error(&mysql));printf("连接失败\n");}//设置字符集mysql_options(&mysql, MYSQL_SET_CHARSET_NAME, "gbk");string str1 = "alter table tb_77 modify sex varchar(20);";//修改表类型失败mysql_query(&mysql, str1.c_str());string str = "insert into tb_77 values(5,'sdMQy','h');";//增加数据成功,不可以增加汉字mysql_query(&mysql, str.c_str());printf("%s", str.c_str());string str2 = "delete from tb_77 where sex = '女';";//删除数据成功mysql_query(&mysql, str2.c_str());string str3 = "update tb_77 set name = 'ttb' where id = 2;";//更改也行mysql_query(&mysql, str3.c_str());mysql_close(&mysql);return 0;}

        各个类说明:

1.  mysql句柄类

1MYSQL mysql;

        该类在c++中操作数据库都要使用到

2.MYSQL_RES查询结果集

2MYSQL_RES * res=nullptr;

        用来保存查询到的所有结果

3.MYSQL_ROW获取结果集中的内容

3.MYSQL_ROW row

        该变量可以获取到结果集中的数据,并且输出

4.获取查询结果集

1mysql_store_result(查询结果集变量)
2mysql_use_result(查询结果集变量)

        第一种调用mysql_store_result(查询结果集变量),把mysql数据库中指定的表的数据全部进行保存,把服务端得数据保存到客户端

        第二种调用mysql_use_result(查询结果集变量),初始化检索,方便后面一行一行读取结果集,速度快,占用内存少,但是会阻止其它线程使用,

5.读取结果集

1mysql_fetch_row(查询结果集)

        从结果集中获取到一行数据,有数据保存改行的每个字段值,没有返回一个null

3.一些函数说明

        1.mysql_num_fields(MYSQL_RES*)

                该函数可以拿表中的列数,返回值是一个unsigned类型

        2.mysql_fetch_fields(MYSQL_RES*)

                该函数可以拿到表中每一列的字段名,返回的是一个结构体数组

        3.mysql_fetch_lengths(MYSQL_RES*)

                该函数拿到行中每一列的字段长度,返回结果是一个unsigned类型

        4.mysql_free_result(MYSQL_RES*)

                该函数释放结果集

        5.事务设置:
        在mysql中事务是默认自动提交的,如果需要提交的事务多,对我们的操作会有影响,所以需要设置事务为手动提交

  • mysql_autocommit(MYSQL* , mode)  设置事务是否自动提交函数

        参数:mode如果为“1”,自动提交,为“0”为手动提交   返回值:提交成功返回0,否则返回非0

  • mysql_commit(MYSQL* mysql)  事务提交函数

        返回值:成功返回0,否则返回非0

  • mysql_rollback(MYSQL* mysql)  事务回滚函数

        返回值:成功返回0,否则返回非0

        6.打印错误信息:

  • const char* mysql_error(MYSQL* mysql):返回错误信息的描述
  • const char* mysql_errno(MYSQL* mysql):返回错误的编号

代码使用的例子

#define _CRT_SECURE_NO_WARNINGS#include#includeusing namespace std;int main(){//创建句柄MYSQL mysql;//创建数据集变量MYSQL_RES* res = nullptr;//创建结果集变量MYSQL_ROW row;//创建一个结构体MYSQL_FIELD* field;//初始化数据库句柄mysql_init(&mysql);//设置字符集//mysql_options(&mysql, MYSQL_SET_CHARSET_NAME, "gbk");mysql_set_character_set(&mysql, "gbk");//开始连接数据库if (mysql_real_connect(&mysql, "localhost", "root", "Z20020803", "box_man", 3306, NULL, 0)){cout << "连接成功" << endl;}else{cout << "连接失败" << endl;return 0;}//设置事务mysql_autocommit(&mysql, "1");//增加数据string str1 = "insert into tb_912 values(2, 'xiaoming', '李四');";char ssql[1024];//使用sprintf拼出来的语句是一个标准的C语言字符串,可以使用该函数插入变量值sprintf(ssql, "insert into tb_912 values(%d, '%s', '%s');", 3, "daming", "17777777772");if (mysql_query(&mysql, ssql))//该语句提交成功返回0,失败放回1{cout << "提交失败" << endl;}else{cout << "提交成功" << endl;}//提交语句mysql_query(&mysql, str1.c_str());//删除数据string str3 = "delete from tb_912 where id = 2;";mysql_query(&mysql, str3.c_str());//修改数据string str4 = "update tb_912 set name = '张三' where id = 1;";mysql_query(&mysql, str4.c_str());//查询数据string str2 = "select * from tb_912;";mysql_query(&mysql, str2.c_str());//事务提交mysql_commit(&mysql);//获取里面的结果集res = mysql_store_result(&mysql);//拿到结果集得列数,调用的是 mysql_store_result() 的返回值,unsigned int a = mysql_num_fields(res);cout <<"表得列数:"<< a << endl;//使用 mysql_fetch_fields() 函数获取列的名字,返回的是一个结构体数组field = mysql_fetch_fields(res);for (unsigned i = 0; i < a; i++){cout << "当前列的名字:" << field[i].name << endl;//取出名字}unsigned long* lengths;//从结果集中获取到数据 mysql_fetch_row() 获取结果集中的一行数据,//成功:返回记录当前行中每个字段的值,失败:返回一个nullwhile (row = mysql_fetch_row(res)){printf("%s %s %s \n", row[0], row[1], row[2]);//获取列中字段的长度lengths = mysql_fetch_lengths(res);//返回的是一个数组地址for (unsigned int i = 0; i < a; i++){cout << "当前列的长度:" << lengths[i] << endl;//列数会构成一个数组}}//释放结果集mysql_free_result(res);//关闭mysql实例mysql_close(&mysql);return 0;}

来源地址:https://blog.csdn.net/weixin_62859191/article/details/126819020

您可能感兴趣的文档:

--结束END--

本文标题: c++ 连接mysql数据库

本文链接: https://www.lsjlt.com/news/392723.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • C#连接MySQL数据库
    目录 一、引用MySql.Data.dll文件 二、连接、关闭数据库 三、数据库增删改查 附:完整代码 一、引用MySql.Data.dll文件 创建C#窗体应用程序,解决方案资源管理器中找到“引用”,右键,选择添加引用。 在MyS...
    99+
    2023-10-28
    c# 数据库 mysql
  • C# 连接 MySQL 数据库
    目录 一、需求 二、新建 C# 项目 三、MySQL数据库 四、MySqlHelper 五、测试 一、需求 C# 使用 MySQL 数据库的情况还是比较少的,大部分使用 Windows 平台一般使用 SQL Server,在两年前我...
    99+
    2023-09-02
    c# 数据库
  • c++ 连接mysql数据库
            使用vs2019对window11中的数据库进行连接 1. 配置连接环境         首先需要把mysql中的头文件和库文件放入到c++项目工程中 打开安装MySQL的目录,在windows系统中如果是默认路径,应该和我...
    99+
    2023-09-03
    数据库
  • Linux下C++/C连接MySQL数据库
        用c++/c连接 MySQL 数据库有两种方法:    第一种:利用ADO连接    第二种:利用...
    99+
    2022-10-18
  • C#如何连接MySQL数据库
    本文章是建立在已经安装MySQL数据库的前提,默认安装在C:\Program Files (x86)\MySQL,建议在安装时选中Connector.NET 6.9的安装,里面有MySQL与C#连接的动态链接库。  ...
    99+
    2022-05-24
    c# mysql c# 连接数据库 c# 连接MySQL数据库
  • C++连接并使用MySQL数据库
    本文实例为大家分享了C++连接并使用MySQL数据库的具体代码,供大家参考,具体内容如下 1. C++连接MySQL数据库 首先在VS里新建C++工程项目,右键工程项目名,选择属性。 选择平台选择 选择配置管理器...
    99+
    2022-05-24
    C++ MySQL
  • C#连接Mysql数据库的方法
    C#连接Mysql数据库的方法?这个问题可能是我们日常学习或工作经常见到的。希望通过这个问题能让你收获颇深。下面是小编给大家带来的参考内容,让我们一起来看看吧!本文讲的是C#连接Mysql数据库,下文附有详...
    99+
    2022-10-18
  • C++中怎么连接MySqL数据库
    这期内容当中小编将会给大家带来有关C++中怎么连接MySqL数据库,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。C++连接MySqL数据库代码示例:#include < stdi...
    99+
    2023-06-17
  • C# (江湖小新)- 连接Mysql数据库
    依赖插件 MySql.Data安装  使用之前需要先在 vs中安装MySql.Data 插件,本文采用 Nuget 方式安装 ,步骤如下: 选中项目右键——》管理Nuget程序包  输入 MySql.Data ,搜索安装即可 ...
    99+
    2023-10-04
    数据库 c# .net wpf mysql
  • c#连接mysql数据库 工具类DbHelper
    C#连接mysql数据库, 安装Mysql.Data 写DbHelper(SqlUtils) using System;using System.Data;using MySql.Data.MySqlClient;namespace Con...
    99+
    2023-09-10
    数据库 mysql c#
  • 在c#中如何连接Mysql数据库
    在mysql官网https://dev.mysql.com/downloads/connector/net 下载".NET&MONO"版本的mysql connector。在c#的refe...
    99+
    2022-10-18
  • c#怎么用mysql数据库连接池
    c#用mysql数据库连接池的示例:class DbConn{private const int MaxPool=10;//最大连接数private const int MinPool=5;//最小连接数private const bool...
    99+
    2022-10-13
  • C#连接Access数据库
    C#连接Access数据库  Microsoft Office Access是由微软发布的关系数据库管理系统。它结合了 MicrosoftJet Database Engine 和&nb...
    99+
    2022-10-18
  • mysql 连接数据库
    1、首先启动mysql 并链接数据 小意思吧!都会了是吧    mysql -uroot -p //连接数据    net start mysql /...
    99+
    2022-05-21
    连接数据库 mysql
  • c\c++如何连接mysql数据库(超易上手)
    第一步:打开mysql安装目录,默认安装目录如下:C:\Program Files\MySQL\MySQL Server 8.0,确认lib目录和include目录是否存在。 这里推荐下载一个软件(everything),该软件能很快速的查...
    99+
    2023-09-08
    mysql 数据库
  • C++怎么连接并使用MySQL数据库
    这篇文章主要为大家展示了“C++怎么连接并使用MySQL数据库”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“C++怎么连接并使用MySQL数据库”这篇文章吧。1...
    99+
    2022-10-18
  • C#连接MySQL数据库的方法步骤
    目录一、需求二、新建 C# 项目三、MySQL数据库四、MySqlHelper五、测试总结一、需求 C# 使用 MySQL 数据库的情况还是比较少的,大部分使用 Windows 平台...
    99+
    2023-01-11
    c#连接mysql数据库配置 c连接mysql数据库 c#连接mysql数据库语法
  • Node.js 连接 mysql 数据库
    目录 一、安装驱动 二、连接数据库 1、数据库连接的配置信息 数据库连接参数说明 2、封装 mysql 的执行语句 3、后端路由文件  三、数据库操作( CURD ) 1、查询数据 2、插入数据 3、更新数据 4、删除数据 4、获取受影响的...
    99+
    2023-09-09
    mysql 数据库 node.js
  • python连接MySQL数据库
    模块功能:connect()方法 * connect()方法用于连接数据库,返回一个数据库连接对象。如果要连接一个位于host.remote.com服务器上名为fourm的MySQL数据库,连接串可以这样写: ...
    99+
    2023-01-31
    数据库 python MySQL
  • JSP连接MySQL数据库
    ✅作者简介:热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏:JAVA开发者成长之路 ✨...
    99+
    2023-08-16
    java mysql tomcat
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作