C/C++ 下mysql应用封装(连接增删改查)
mysql - 初始化
- mysql_init():初始化数据库
- mysql_real_connect()(不推荐用Mysql_connect()):连接数据库
详细代码如下:
bool dataBase::initConnection()
{
try
{
if (mysql_init(&m_sqlCon) == NULL)
{
std::cout << "初始化数据库失败" << std::endl;
return false;
}
// localhost:服务器 root为账号密码 test为数据库名 3306为端口
if (!mysql_real_connect(&m_sqlCon, host, user, pass,databaseName, port, NULL, 0))
{
std::cout << "数据库连接失败" << std::endl;
return false;
}
std::cout << "数据库连接成功" << std::endl;
return true;
}
catch (...)
{
std::cout << "出错啦" << std::endl;
return false;
}
}
mysql - 查
1)mysql_query():进行查询语句
2)mysql_store_result():获得查询结果
3 ) mysql_fetch_field()以及mysql_fetch_row():获得结果集中的内容
4)mysql_free_result()
代码如下:
void dataBase::user_query(
{
if (mysql_query(&m_sqlCon, "select * from user"))
{
std::cout << "查询失败" << std::endl;
return;
}
std::cout << "查询成功" << std::endl;
MYSQL_RES *result;
result = mysql_store_result(&m_sqlCon);
if (result)
{
int row_num, col_num;
row_num = mysql_num_rows(result);
col_num = mysql_num_fields(result);
std::cout << "共有" << row_num << "条数据,以下为其详细内容:" << std::endl;
MYSQL_FIELD *fd;
while (fd = mysql_fetch_field(result))
{
std::cout << fd->name << "\t";
}
std::cout << std::endl;
MYSQL_ROW sql_row;
while (sql_row = mysql_fetch_row(result))
{
for (int i = 0; i < col_num; i++)
{
if (sql_row[i] == NULL) std::cout << "NULL\t";
else std::cout << sql_row[i] << "\t";
}
std::cout << std::endl;
}
}
if (result != NULL)
mysql_free_result(result);
}
mysql - 增
1)mysql_query()通过select判断是否已经存在(可以省略)
2 ) 通过mysql_query()进行插入
代码如下:
void dataBase::user_insert(UserBody &body)
{
char select_user[255];
char query[255];
MYSQL_RES *result;
sprintf(select_user, "select * from user where UserName='%s'", body.userName);
if (mysql_query(&m_sqlCon, select_user) || !(result = mysql_store_result(&m_sqlCon)))
{
std::cout << "插入查询失败" << std::endl;
return;
}
if (mysql_num_rows(result))
{
std::cout << "用户已存在" << std::endl;
mysql_free_result(result);
return;
}
mysql_free_result(result);
sprintf(query, "insert into user(UserName,UserPass,ConnectionNum,UseFor) values('%s','%s',%d,%d)", body.userName, body.userPass, body.connection, body.type);
if (mysql_query(&m_sqlCon, query))
{
std::cout << "插入数据失败" << std::endl;
return;
}
std::cout << "插入数据成功,共插入:" << mysql_affected_rows(&m_sqlCon) << "行" << std::endl;
}
mysql - 改
修改与添加的步骤类似,直接贴出代码就不做赘述了。
代码如下:
void dataBase::user_update(UserBody &body)
{
char query[255];
char select_user[255];
MYSQL_RES *result;
sprintf(select_user, "select * from user where UserName='%s'", body.userName);
if (mysql_query(&m_sqlCon, select_user) || !(result = mysql_store_result(&m_sqlCon)))
{
std::cout << "修改查询失败" << std::endl;
return;
}
if (mysql_num_rows(result) == 0) {
std::cout << "要修改的用户不存在" << std::endl;
mysql_free_result(result);
return;
}
mysql_free_result(result);
sprintf(query, "update user set UserPass='%s',ConnectionNum=%d,UseFor=%d where UserName='%s'", body.userPass, body.connection, body.type, body.userName);
if (mysql_query(&m_sqlCon, query))
{
std::cout << "修改失败" << std::endl;
return;
}
std::cout << "修改成功,共修改:" << mysql_affected_rows(&m_sqlCon) << "行" << std::endl;
}
mysql - 删
其实删除、修改和插入操作都是类似的,会其中一个其他应该都差不多了,我也就直接贴出代码了。
代码如下:
void dataBase::user_delete(char *userName)
{
char query[255];
char select_user[255];
MYSQL_RES *result;
sprintf(select_user, "select * from user where UserName='%s'", userName);
if (mysql_query(&m_sqlCon, select_user) || !(result = mysql_store_result(&m_sqlCon)))
{
std::cout << "删除查询失败" << std::endl;
return;
}
if (mysql_num_rows(result) == 0)
{
std::cout << "要删除的用户不存在" << std::endl;
mysql_free_result(result);
return;
}
mysql_free_result(result);
sprintf(query, "delete from user where UserName='%s'", userName);
if (mysql_query(&m_sqlCon, query))
{
std::cout << "删除失败" << std::endl;
return;
}
std::cout << "删除成功,共删除:" << mysql_affected_rows(&m_sqlCon) << "行" << std::endl;
}
C/C++ 下mysql应用封装(连接增删改查)的更多相关文章
- Python进阶----数据库的基础,关系型数据库与非关系型数据库(No SQL:not only sql),mysql数据库语言基础(增删改查,权限设定)
day37 一丶Python进阶----数据库的基础,mysql数据库语言基础(增删改查,权限设定) 什么是数据库: 简称:DataBase ---->DB 数据库即存放数据的仓库, ...
- python操作三大主流数据库(2)python操作mysql②python对mysql进行简单的增删改查
python操作mysql②python对mysql进行简单的增删改查 1.设计mysql的数据库和表 id:新闻的唯一标示 title:新闻的标题 content:新闻的内容 created_at: ...
- Vc数据库编程基础MySql数据库的表增删改查数据
Vc数据库编程基础MySql数据库的表增删改查数据 一丶表操作命令 1.查看表中所有数据 select * from 表名 2.为表中所有的字段添加数据 insert into 表名( 字段1,字段2 ...
- 使用 NodeJS+Express+MySQL 实现简单的增删改查
关于node.js暂时记录如下,以后有时间一定学习 文章来自简书,作者:sprint,2016-07 使用 Node.js + Express+MySQL 实现简单的增删改查 https://www. ...
- mysql 的基本操作总结--增删改查
本文只是总结一下mysql 的基本操作,增删改查,以便忘记的时候可以查询一下 1.创建数据库 语法:CREATE DATABASES 数据库名; 例子: CREATE DATABASES studen ...
- Mysql数据表的增删改查
---恢复内容开始--- Mysql数据表的增删改查 1.创建表 语法:CREATE TABLE 表名(字段1,字段2,字段3.......) CREATE TABLE `users` ( `us ...
- MySQL数据库安装,MySQL数据库库的增删改查,表的增删改查,表数据的基本数据类型
一 MySQL的安装 MySQL现在属于甲骨文公司,所以和java语言匹配度较高,同时甲骨文公司的另一种数据库为Oracle,两者同为关系型数据库,即采用关系模型来组织数据,以行和列的方法来存储数据的 ...
- 【Python + Mysql】之用pymysql库连接Mysql数据库并进行增删改查操作
用pip下载pymysql并引用 具体请参考文章: <Python之MySQL数据库增删改查操作> <python3.6 使用 pymysql 连接 Mysql 数据库及 简单的增删 ...
- python之MySQL学习——简单的增删改查封装
1.增删改查封装类MysqlHelper.py import pymysql as ps class MysqlHelper: def __init__(self, host, user, passw ...
- Node.js + MySQL 实现数据的增删改查
通过完成一个 todo 应用展示 Node.js + MySQL 增删改查的功能.这里后台使用 Koa 及其相应的一些中间件作为 server 提供服务. 初始化项目 $ mkdir node-cru ...
随机推荐
- Android 面试题之编程
1.排序 package cn.java.suanfa; public class SuanFa { public static void main(String[] args) { int[] ar ...
- 我告诉你 ,一个 window免费系统下载的网站!
一个 window免费系统下载的网站! https://msdn.itellyou.cn/
- php 后端刷新页面
public function index() { $b = date('Y-m-d H:i:s'); header('refresh:10'); $c = strtotime($b); $d = s ...
- html5手机浏览器启动微信客户端支付实例
html5手机浏览器启动微信客户端支付实例,外部浏览器html5微信支付技术,如何在手机浏览器微信支付,在微信客户端外的移动端网页使用微信支付 首先在微信支付官网https://pay.weixin. ...
- Python-type函数使用
- mkdir 的详细使用说明
mkdir 是make directory [dɪˈrɛktəri, daɪ-]的缩写,directory--目录的意思 mkdir在linux中是指新建文件目录 例如:mkdir test3 如果要 ...
- stm32按键FIFO的实现
学习目标: 1.理解FIFO的基本概念和设计按键FIFO的意义 2.写出实现按键FIFO的代码 1.设计按键FIFO的优点 要介绍实现按键FIFO的优点,首先要了解FIFO的一些基本概念.FIFO ...
- web前端知识点1
1. input属于窗体元素,层级显示比flash.其它元素都高.请判断这句话的正确与否. 错误 层级显示优先级: frameset > 表单元素 > 非表单元素 在html中,帧元素(f ...
- 浅析Vue.js 中的条件渲染指令
1 应用于单个元素 Vue.js 中的条件渲染指令可以根据表达式的值,来决定在 DOM 中是渲染还是销毁元素或组件. html: <div id="app"> < ...
- PTA(BasicLevel)-1007素数对猜想
一 问题描述-素数对 让我们定义素数差dn为:dn=pn+1−pn,其中pi是第i个素数.显然有d1=1,且对于n>1有dn是偶数.“素数对猜想”认为“ ...