mysql - 初始化

  1. mysql_init():初始化数据库
  2. 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应用封装(连接增删改查)的更多相关文章

  1. Python进阶----数据库的基础,关系型数据库与非关系型数据库(No SQL:not only sql),mysql数据库语言基础(增删改查,权限设定)

    day37 一丶Python进阶----数据库的基础,mysql数据库语言基础(增删改查,权限设定) 什么是数据库:    简称:DataBase ---->DB    数据库即存放数据的仓库, ...

  2. python操作三大主流数据库(2)python操作mysql②python对mysql进行简单的增删改查

    python操作mysql②python对mysql进行简单的增删改查 1.设计mysql的数据库和表 id:新闻的唯一标示 title:新闻的标题 content:新闻的内容 created_at: ...

  3. Vc数据库编程基础MySql数据库的表增删改查数据

    Vc数据库编程基础MySql数据库的表增删改查数据 一丶表操作命令 1.查看表中所有数据 select * from 表名 2.为表中所有的字段添加数据 insert into 表名( 字段1,字段2 ...

  4. 使用 NodeJS+Express+MySQL 实现简单的增删改查

    关于node.js暂时记录如下,以后有时间一定学习 文章来自简书,作者:sprint,2016-07 使用 Node.js + Express+MySQL 实现简单的增删改查 https://www. ...

  5. mysql 的基本操作总结--增删改查

    本文只是总结一下mysql 的基本操作,增删改查,以便忘记的时候可以查询一下 1.创建数据库 语法:CREATE DATABASES 数据库名; 例子: CREATE DATABASES studen ...

  6. Mysql数据表的增删改查

    ---恢复内容开始--- Mysql数据表的增删改查 1.创建表   语法:CREATE TABLE 表名(字段1,字段2,字段3.......) CREATE TABLE `users` ( `us ...

  7. MySQL数据库安装,MySQL数据库库的增删改查,表的增删改查,表数据的基本数据类型

    一 MySQL的安装 MySQL现在属于甲骨文公司,所以和java语言匹配度较高,同时甲骨文公司的另一种数据库为Oracle,两者同为关系型数据库,即采用关系模型来组织数据,以行和列的方法来存储数据的 ...

  8. 【Python + Mysql】之用pymysql库连接Mysql数据库并进行增删改查操作

    用pip下载pymysql并引用 具体请参考文章: <Python之MySQL数据库增删改查操作> <python3.6 使用 pymysql 连接 Mysql 数据库及 简单的增删 ...

  9. python之MySQL学习——简单的增删改查封装

    1.增删改查封装类MysqlHelper.py import pymysql as ps class MysqlHelper: def __init__(self, host, user, passw ...

  10. Node.js + MySQL 实现数据的增删改查

    通过完成一个 todo 应用展示 Node.js + MySQL 增删改查的功能.这里后台使用 Koa 及其相应的一些中间件作为 server 提供服务. 初始化项目 $ mkdir node-cru ...

随机推荐

  1. Java 获取指定包下的所有类

    package com.s.rest.util; import java.io.File; import java.io.FileFilter; import java.io.IOException; ...

  2. 谷歌浏览器linux,windows下载

    https://www.chromedownloads.net/ 提取码自己行提取rpm安装包

  3. C#中如果用await关键字来await一个为null的Task对象会抛出异常

    await & async模式是C#中一个很重要的特性,可以用来提高异步程序(多线程程序)的执行效率.但是如果尝试用await关键字来await一个为null的Task对象,会导致程序抛出Nu ...

  4. WebSocket的原理,以及和Http的关系 (转载)

    一.WebSocket是HTML5中的协议,支持持久连接:而Http协议不支持持久连接. 首先HTMl5指的是一系列新的API,或者说新规范,新技术.WebSocket是HTML5中新协议.新API. ...

  5. Python 学习笔记(十二)Python文件和迭代(二)

    迭代 基本含义 迭代是重复反馈过程的活动,其目的通常是为了接近并到达所需的目标或结果.每一次对过程的重复被称为一次“迭代”,而每一次迭代得到的结果会被用来作为下一次迭代的初始值.  在计算科学中,迭代 ...

  6. 01迷宫题解(bfs,联通块)

    题目https://www.luogu.org/problemnew/show/P1141 这个题解主要针对我个人出现的一些问题和注意的地方. 解题思路 首先说一下联通块 联通块这个比较抽象,举个例子 ...

  7. codeforces 979 C. Kuro and Walking Route

    C. Kuro and Walking Route time limit per test 2 seconds memory limit per test 256 megabytes input st ...

  8. jqGrid 分页

    这两天一直在搞jqGrid分页,焦头烂额,不过还是有点收获的(主要是后台分页):   jqGrid分页可以分为两种,远程数据(服务器数据)分页和本地数据分页,     先看远程数据分页:   $(&q ...

  9. Python中级 —— 07标准库

    标准库学习 1. The Python Standard Library[https://docs.python.org/3.5/library/] ( 3.5.5 Documentation ) 1 ...

  10. 我的 Delphi 学习之路 —— Delphi 助手的安装

    标题:我的 Delphi 学习之路 -- Delphi 助手的安装 作者:断桥烟雨旧人伤 Delphi 助手的安装 CnWizards 类似于 VS 中的番茄助手,在编写 Delphi 代码时帮助极大 ...