安装好MySQL,建好数据表的前提下。

如果只是想简单实现添加数据或者其他一个操作数据,可以参考另一篇博客。
https://www.cnblogs.com/ming-4/p/11544514.html

先定义一个数据库管理的cpp文件和头文件。

MySQLManager.h 文件:

/*MySQLManager.h 文件:
文件名: MySQLManager.h
内 容: MySQL连接数据库管理类
创建日期: 2016年10月18日
创建人: AceTan
*/ #pragma once // 网络通信头文件
#include <WinSock.h> // 引入mysql头文件(比较好的做法是把文件夹拷到工程目录,也可以在vc目录里面设置)
#include "include/mysql.h" #include <Windows.h> // 包含附加依赖项,也可以在工程--属性里面设置
#pragma comment(lib, "wsock32.lib")
#pragma comment(lib, "libmysql.lib") // 连接数据库的一些必要信息
struct ConnectionInfo
{
const char* host; // 主机地址
const char* user; // 用户名
const char* password; // 密码
const char* database; // 数据库名
unsigned int port; // 端口号
const char* unix_socket; // unix连接标识
unsigned long clientflag; // 客户端连接标志 // 构造函数,设置一些默认值
ConnectionInfo() :
host("127.0.0.1"),
port(),
unix_socket(NULL),
clientflag()
{ }
}; class MySQLManager
{
public: // 连接数据库
bool Init(ConnectionInfo& info); // 释放连接
bool FreeConnect(); // 增加数据
// bool InsertData(const char* sql); // 删除数据
// bool DeleteData(const char* sql); // 更新数据
// bool UpdateData(const char* sql); // 执行sql语句, 包括增加、删除、更新数据
bool ExecuteSql(const char* sql); // 查询数据
MYSQL_RES* QueryData(const char* sql); // 打印结果集
void PrintQueryRes(); private:
MYSQL m_mysql; // mysql连接
MYSQL_RES* m_res; // 查询结果集 };

MySQLManager.cpp 文件:

#include <iostream>
#include <stdio.h>
using namespace std; // 连接数据库
bool MySQLManager::Init(ConnectionInfo& info)
{
// 初始化mysql,连接mysql,数据库
mysql_init(&m_mysql); // 连接失败
if (!(mysql_real_connect(&m_mysql, info.host, info.user, info.password, info.database, info.port, info.unix_socket, info.clientflag)))
{
return false;
} return true;
} // 释放连接
bool MySQLManager::FreeConnect()
{
//释放资源
mysql_free_result(m_res);
mysql_close(&m_mysql); return false;
} // 执行sql语句, 包括增加、删除、更新数据
bool MySQLManager::ExecuteSql(const char * sql)
{
if (mysql_query(&m_mysql, sql))
{
// 打错误log,这里直接显示到控制台
cerr << "执行sql语句失败,错误信息为: " << mysql_error(&m_mysql) << endl;
return false;
}
else
{
cout << "执行sql语句成功!" << endl;
} return true;
} // 查询数据
MYSQL_RES* MySQLManager::QueryData(const char* sql)
{
if (mysql_query(&m_mysql, sql))
{
// 打错误log,这里直接显示到控制台
cerr << "查询语句执行失败,错误信息为: " << mysql_error(&m_mysql) << endl;
return nullptr;
}
else
{
cout << "查询语句执行成功!" << endl;
} // 存储查询结果
m_res = mysql_store_result(&m_mysql); return m_res;
} // 遍历结果集
void MySQLManager::PrintQueryRes()
{
if (nullptr == m_res || NULL == m_res)
{
return;
} // 获取行数
// unsigned int rows = mysql_affected_rows(m_mysql); // 字段列数组
MYSQL_FIELD* field = nullptr;
//存字段名二维数组
char fieldName[][]; // 获取字段名
for (int i = ; field = mysql_fetch_field(m_res); ++i)
{
strcpy_s(fieldName[i], field->name);
} // 获取列数
int columns = mysql_num_fields(m_res);
for (int i = ; i < columns; ++i)
{
// 使用C语言的printf格式化更方便一点
printf("%10s\t", fieldName[i]);
}
cout << endl; MYSQL_ROW row;
while (row = mysql_fetch_row(m_res))
{
for (int i = ; i < columns; ++i)
{
printf("%10s\t", row[i]);
} cout << endl;
} }

main函数:

#include <iostream>
#include "MySQLManager.h" using namespace std; int main()
{
MySQLManager mysql;
ConnectionInfo info;
// 填充ConnectionInfo这个结构体,项目中一般从配置文件这读取
info.user = "root";
info.password = "your_password";
info.host = "localhost";
info.port = ;
info.database = "test";
info.unix_socket = NULL;
info.clientflag = ; // mysql连接
if (!mysql.Init(info))
{
return -;
} // 增加数据测试
const char* sql1 = "insert into user values (NULL, 'Ada', 'password')";
mysql.ExecuteSql(sql1); // 删除数据测试
const char* sql2 = "delete from user where name = 'AceTan'";
mysql.ExecuteSql(sql2); // 修改数据测试
const char* sql3 = "update user set password='update_password' where name = 'Ada'";
mysql.ExecuteSql(sql3); // 查询数据测试
const char* sql4 = "select * from user";
mysql.QueryData(sql4);
mysql.PrintQueryRes(); // 释放mysql资源
mysql.FreeConnect(); return ;
}

C++实现对MySQL数据库的连接,以及增删改查的更多相关文章

  1. mysql数据库的连接以及增删改查Java代码实现(转载)

    每天叫醒自己的不是闹钟,而是梦想 数据库: create table t1(id int primary key not null auto_increment,name varchar(32),pa ...

  2. 使用JDBC分别利用Statement和PreparedStatement来对MySQL数据库进行简单的增删改查以及SQL注入的原理

    一.MySQL数据库的下载及安装 https://www.mysql.com/ 点击DOWNLOADS,拉到页面底部,找到MySQL Community(GPL)Downloads,点击 选择下图中的 ...

  3. MySQL数据库之表的增删改查

    目录 MySQL数据库之表的增删改查 1 引言 2 创建表 3 删除表 4 修改表 5 查看表 6 复制表 MySQL数据库之表的增删改查 1 引言 1.MySQL数据库中,数据库database就是 ...

  4. 在python中连接mysql数据库,并进行增删改查

    数据库在开发过程中是最常见的,基本上在服务端的编程过程中都会使用到,mysql是较常见的一种数据库,这里介绍python如果连接到数据库中,并对数据库进行增删改查. 安装mysql的python扩展 ...

  5. python3.6 使用 pymysql 连接 Mysql 数据库及 简单的增删改查操作

    1.通过 pip 安装 pymysql 进入 cmd  输入  pip install pymysql   回车等待安装完成: 安装完成后出现如图相关信息,表示安装成功. 2.测试连接 import ...

  6. Java连接MySQL数据库,并进行增删改查

    1.具体的代码实现 import java.sql.*; public class DatabaseService { /** * Create Connection * * @param dbtyp ...

  7. Mysql数据库和表的增删改查以及数据备份&恢复

    数据库 查看所有数据库 show databases; 使用数据库 use 数据库名; 查看当前使用的数据库 select database(); 创建数据库 create database 数据库名 ...

  8. Python操作MySQL数据库完成简易的增删改查功能

    说明:该篇博客是博主一字一码编写的,实属不易,请尊重原创,谢谢大家! 目录 一丶项目介绍 二丶效果展示 三丶数据准备 四丶代码实现 五丶完整代码 一丶项目介绍 1.叙述 博主闲暇之余花了10个小时写的 ...

  9. MySQL数据库 | 数据表的增删改查

    MySQL数据的增删改查(crud) 本文结构 一.增加 create 二.修改 update 三.查询 retrieve(简单查询,下篇详细展开) 四.删除 delete 首先,创建简单的class ...

  10. 关于利用PHP访问MySql数据库的逻辑操作以及增删改查实例操作

    PHP访问MySql数据库 <?php //造连接对象$db = new MySQLi("localhost","root","",& ...

随机推荐

  1. python3练习100题——018

    原题链接:http://www.runoob.com/python/python-exercise-example18.html 题目:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个 ...

  2. jdk8-》日期时间及其格式处理类特性

    一.JDK8之时间⽇期处理类 核⼼类: LocalDate:不包含具体时间的⽇期. LocalTime:不含⽇期的时间. LocalDateTime:包含了⽇期及时间. LocalDate 常⽤API ...

  3. Custom LED Keychain, Small And Surefire Gifts

    The    LED Keychain    makes it easy for people to carry their keys with them and carry them with th ...

  4. HTML5学习(6)a元素

    a元素代表超链接 href属性 hyper reference:通常代表跳转地址 target属性:_self在本窗口中打开(默认),_blank在新窗口中打开. id属性:全局属性,表示元素在文档中 ...

  5. honoka和格点三角形(牛客寒假训练营day1)

    可以把面积为1的好三角形分成两类分开统计:两条边和两个坐标轴平行:只有一条边和某个坐标轴平行. 对于第一种情况,一定是1*2或者2*1的形式,一个1*2的矩形中含有4个不同的三角形.总数是4*((n- ...

  6. 左偏树(p3377)

    题目描述 如题,一开始有N个小根堆,每个堆包含且仅包含一个数.接下来需要支持两种操作: 操作1: 1 x y 将第x个数和第y个数所在的小根堆合并(若第x或第y个数已经被删除或第x和第y个数在用一个堆 ...

  7. Linux /dev/sda1磁盘满了,清理办法

    转:https://blog.csdn.net/h_8410435/article/details/86303995 查看内存使用情况 df -lh Filesystem      Size  Use ...

  8. Go标准库之Context

    文章引用自   Go标准库Context 在 Go http包的Server中,每一个请求在都有一个对应的 goroutine 去处理.请求处理函数通常会启动额外的 goroutine 用来访问后端服 ...

  9. 前端——语言——Core JS——《The good part》读书笔记——第八章节(Methods)

    本章介绍JS核心对象的方法.这些对象包括Array,Function,Number,Object,RegExp,String.除这些常用的核心对象还有Date,JSON. 本章更偏向于API文档,介绍 ...

  10. 每天进步一点点------Error: Can't place pins assigned to pin location Pin_K22 (IOPAD_X41_Y19_N14)

    在QII中的Assignments----Device----Device and pin option-----(选项卡)Dual purpose pin将nCE0 的设置改为: use as re ...