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 ...
随机推荐
- 深入学习c++--重新审视auto
1. auto推断变量类型 2. auto遍历 3. 自定义类可使用auto
- 谷歌浏览器linux,windows下载
https://www.chromedownloads.net/ 提取码自己行提取rpm安装包
- 【luogu P2831 愤怒的小鸟】 题解
题目链接:https://www.luogu.org/problemnew/show/P2831 写点做题总结:dp,搜索,重在设计状态,状态设的好,转移起来也方便. 对于一条抛物线,三点确定.(0, ...
- 接口测试Jmeter+Fiddler组合
接口测试Jmeter+Fiddler组合 在使用完Jmeter在做接口测试之后,个人感觉Jmeter比loadrunner好用,原因是界面操作更加直观,不必像loadrunner在写接口请求函数的时候 ...
- cocos2d-x开发:服务端基础库封装
元旦前面几天都在忙着面试,随后的几天也就一直在做服务端基础库开发方面的工作.对于服务端开发,是很久之前的事情了.那时候我还在大学读书,一直都是在倒腾服务端开发方面的东西,毕业后参加公司工作就是一直从事 ...
- 多线程系列之 Java多线程的个人理解(一)
前言:多线程常常是程序员面试时会被问到的问题之一,也会被面试官用来衡量应聘者的编程思维和能力的重要参考指标:无论是在工作中还是在应对面试时,多线程都是一个绕不过去的话题.本文重点围绕多线程,借助Jav ...
- 创建 个人 pod
创建一个自己的 pod 大致需要以下步骤 创建git repository 编辑.podspec 创建LICENSE(许可证/授权)文件 标记 tag 验证 注册CocoaPods 发布 搜索验证 1 ...
- 19-3-7Python中小数据池、数据类型的补充、set集合
一.小数据池(了解) “id” 获取内存地址 “==” 比较等号两端的值是否相等 “is” 身份运算:判断的是两个对象的内存地址是否相同. 代码块:一个文件就是一个代码块.(函数.类都是 ...
- 浅淡 RxJS WebSocket
const open$ = new Subject(); const ws = webSocket({ url: 'wss://echo.websocket.org', openObserver: o ...
- [译]C语言实现一个简易的Hash table(3)
上一章,我们讲了hash表的数据结构,并简单实现了hash表的初始化与删除操作,这一章我们会讲解Hash函数和实现算法,并手动实现一个Hash函数. Hash函数 本教程中我们实现的Hash函数将会实 ...