C++读写Mysql数据库
前言:
一直以来操作数据库我用的都是python,第一次使用C++来操作Mysql数据库,中间遇到了许多问题,特别是Mysql版本为64位,但想在x86或win32下开发Mysql的问题。把这些经验进行总结,希望可以帮到遇到同样问题的朋友。如果对您有帮助,您的三连是对我最大的鼓励,谢谢。
顺带一提:
python操作Mysql数据的经验总结
环境配置:
操作系统:win10 64bit
开发环境:Visual Studio 2019
使用的Mysql版本:8.0
首先是运行环境,因为系统是64位系统,下载的Mysql也是64位,而visual sutido 2019创建的项目默认是32位的。这时就会报错:
刚开始完全没有思路怎么解决,后来才知道,其实只要把运行环境改成x64就行,即:
(以上办法是针对只在x64下运行,如果要想在win32或x86下运行,请跳转至步骤6的位置)此时运行代码,依然会报错:缺少libmysql.dll
解决办法:设置项目属性
步骤1:打开项目属性
步骤2:将MySQL Server下的include文件路径添加至【配置属性——C/C++——常规——附加包含目录】
步骤3:将MySQL Server下的lib文件路径添加至【配置属性——链接器——常规——附加包含目录】
步骤4:在【配置属性——链接器——输入——附件依赖项】中添加libmysql.lib
步骤5:把MySQL Server 8.0\lib下的libmysql.dll文件拷贝至C:\Windows\System32中。重启。
(这是我的libmysql.dll文件的路径:C:\Program Files\MySQL\MySQL Server 8.0\lib)
步骤6:
针对Mysql版本是64位,但是想在x86或win32下开发Mysql的解决办法。
步骤2-4不变以外,针对步骤5变化。
首先下载32位的libmysql.dll文件和libmysql.lib文件。将32位的libmysql.dll文件保存至C:\Windows\SysWOW64中。将32位的libmysql.lib文件与原文件进行替换。原文件夹(MySQL Server 8.0\lib)下面64位的libmysql.dll文件可以不用管。
下载地址:
libmysql.dll与libmysql.lib 32位与64位下载
至此环境上配置完毕
代码:
#include <iostream>
#include "C:\Program Files\MySQL\MySQL Server 8.0\include\mysql.h"
//mysql.h文件路径会根据自己的情况发送改变,注意
using namespace std;void main()
{MYSQL m_sql;mysql_init(&m_sql);if (!mysql_real_connect(&m_sql, "localhost", "root", "1111", "mysql_test", 3306, NULL, 0)){cout << "fail" << endl;}//修改数据char update[200] = "UPDATE control_message SET m_start=5 WHERE message_id=0;";mysql_query(&m_sql, update);//插入数据char insert[200] = "insert into laser_message(message_id,m_start,m_info) values(0,0,"ABC");";mysql_query(&m_sql, insert);//读取char select[200] = "select * from laser_message";//各种语言字符集,根据需求设定//mysql_query(&m_sql, "set names utf8");//mysql_query(&m_sql, "set names gbk");//mysql_query(&m_sql, "set names sjis");mysql_query(&m_sql, select);MYSQL_RES* result;result = mysql_store_result(&m_sql);//打印列表名MYSQL_FIELD *fields;fields = mysql_fetch_fields(result); //返回所有列auto num = mysql_num_fields(result);for (auto j = 0; j<num; j++){cout << fields[j].name << " ";}cout << endl;//打印列表值MYSQL_ROW row;unsigned int i, num_c;num_c = mysql_num_fields(result); while (row = mysql_fetch_row(result)){for (i = 0; i < num_c; i++){cout << row[i] << " ";}cout << endl;}mysql_free_result(result);
}
注意:数据库的读写存在编码转换的问题,不然会乱码,如果可以尽量用英文来设计数据库,这样可以有效避免这个问题。
C++读写Mysql数据库相关推荐
- pandas读写MySQL数据库详解及实战
pandas读写MySQL数据库详解及实战 SQLAlchemy是Python中最有名的ORM工具. 关于ORM: 全称Object Relational Mapping(对象关系映射). 特点是操纵 ...
- java读写mysql数据库_Java读写MySQL数据库小实例
Java读写MySQL数据库小实例 首先需要安装和配置好MySQL数据库.接下来,先创建一个数据库,Java代码连接此数据库,然后读写. 假设基于MySQL命令行创建一个叫做:phildatab ...
- Zeppelin上通过Spark读写mysql数据库
Zeppelin上通过Spark读写mysql数据库 一.从mysql数据库获取数据 二.把处理后的数据再插入到mysql数据库 一.从mysql数据库获取数据 %spark val df = spa ...
- 使用php读写mysql数据库并显示到网页上
由于工作的原因,需要了解下bs模式下的读写数据库的流程,将试验过程梳理一下. 我采用的是phpstudy搭建数据库,mysql数据库已经搭建完成,名称为2018版本,如下图: 由于我前期安装过apac ...
- datagridview控件读写mysql数据库表格的方法_C#读写Access数据库、表格datagridview窗体显示代码实例...
C#读写Access数据库.表格datagridview窗体显示代码实例 最近项目中用到C#对于Access数据库表读写.mdb操作,学习了下相关的东西,这里先整理C#对于Access数据库的操作,对 ...
- c语言多线程mysql_多线程读写mysql数据库
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 unsigned int __stdcall scan(PVOID pM) { char ip[20]; strcpy(ip, (char*)pM); M ...
- c 多线程mysql_多线程读写mysql数据库
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 unsigned int __stdcall scan(PVOID pM) { char ip[20]; strcpy(ip, (char*)pM); M ...
- 多线程写mysql数据库_多线程读写mysql数据库
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 unsigned int __stdcall scan(PVOID pM) { char ip[20]; strcpy(ip, (char*)pM); M ...
- python后台架构Django教程——连接读写mysql数据库
全栈工程师开发手册 (作者:栾鹏) python教程全解 本文衔接至python后台架构Django开发全解. 有其他问题请先阅读:http://blog.csdn.net/luanpeng82548 ...
最新文章
- 物资管理信息系统5 -- 删除用户界面
- 极致CMS个人博客企业官网模板
- RS232应用----电功率计
- 折纸机器人的步骤图解_折纸图解公牛
- 我们的系统是否需要EJB3?
- 宝塔更换域名_搭建小程序之BT宝塔面板的操作使用教程
- 用计算机进行实时自动采集,动态数据采集
- 如何通过VISIO来画网络拓扑图
- cloudstack vpc network egress-ingress rules
- ROS应用开发入门 服务数据的定义和使用
- 如何利用手机访问电脑本地的localhost?
- html中spry的长度怎么更改,Dreamweaver中Spry区域功能说明
- 我心爱的吉他坏了,心里像少了什么一样:(
- 前端比较好用的一个Flex布局样式包
- 《草书识别》隐私政策
- 中标麒麟系统u盘安装_U盘安装中标麒麟Linux桌面版的方法
- 【译】Java编程动态性,第 2部分: 反射简介
- python 特殊方法是什么_Python类的特殊方法
- PCM混音算法 C++实现 (包括归一化加权算法,时间片切割算法,幅值简单叠加算法)
- latex写姓名_用Latex写学术论文:作者(Author)摘要(Abstract)