mysql的常用操作的封装
1、概述:
为了把繁琐的操作简化成简单的类,设计了2个类用来封装了mysql的常用操作,以便使用者可以方便地使用。
2、组成
1)数据库操作类CDatabaseConnect
2)SQL对象类CSqlStatement
3、类的头文件代码
#include <winsock.h>
#include "mysql.h"
#include <string>
using namespace std;
//MYSQL的返回码类型
#define MYSQL_OK
0
#define MYSQL_FALSE
!(MYSQL_OK)
#define MYSQL_ERROR
1
//SQL的SQL语句类型
#define MYSQL_SQL_TYPE_INSERT
0
#define MYSQL_SQL_TYPE_QUERY
1
//字符串的大小
#define MYSQL_CHAR_SIZE
0xFF+1
#define MYSQL_STRING_SIZE
0xFF+1
#define MYSQL_VARCHAR_SIZE
0xFFFF+1
#define MYSQL_VAR_STRING_SIZE
0xFFFF+1
#define MYSQL_MEDIUMBLOB_SIZE
0xFFFFFF+1
#define MYSQL_LONGBLOB_SIZE
0xFFFFFFFF+1
//日志入口函数指针
typedef void(*PAddLogFunc)(const char *pszData);
//数据库连接参数
typedef struct tagSTConnectParam
{
char szUser[64+1];
//用户名称
char szPasswd[64+1];
//用户密码
char szHost[64+1];
//主机名称
char szDbName[64+1];
//数据库名称
char *pszSocket;
//socket
unsigned int nPort;
//端口号
unsigned long ucClientFlag;
//客户端标识
}STConnectParam, *PSTConnectParam;
//SQL预处理对象
class CSqlStatement
{
public:
CSqlStatement();
CSqlStatement(MYSQL* pDb);
virtual ~CSqlStatement();
private:
friend class CDatabaseConnect;
CSqlStatement(MYSQL* pDb, const char *pszSqlStatement);
public:
//行数
int GetRowCount(void);
//列数
int GetColumnCount(void);
//nPosIndex started by zero
//列名称
const char *GetColumnName(int nPosIndex);
//列ID
int GetColumnIndex(const char *pszColumnName);
//获取整型
int GetColumnValueInt(int nPosIndex);
//获取短字符串
const char *GetColumnValueVarChar(int nPosIndex);
//获取长字符串
const char *GetColumnValueString(int nPosIndex);
//获取字符串
const char *GetColumnValueBlob(int nPosIndex, int *pnLen);
//获取浮点型
double GetColumnValueDouble(int nPosIndex);
//绑定整型
bool BindInt(int nPosIndex, const int &nValue);
//绑定短字符串
bool BindChar(int nPosIndex, const char *pszValue);
//绑定长字符串
bool BindString(int nPosIndex, const char *pszValue);
//绑定字符串
bool BindBlob(int nPosIndex, const char *pszValue, int nBlobBytes);
//获取浮点型
bool BindDouble(int nPosIndex, const double &fValue);
//运行
bool Execute(void);
//下一行
bool NextRow(void);
//复位
bool Reset(void);
//写日志
int WriteDbLog(const char *pszMsg);
//设置SQL预处理对象
int SetSqlStatement(const char *pszSqlStatement);
private:
//初始化数据
bool InitData(void);
//释放数据
void FreeData(void);
private:
//日志函数接口
PAddLogFunc pAddLog;
MYSQL_STMT *m_pStmt;
MYSQL* m_pDb;
MYSQL_RES *m_pPrepareMetaResult;
MYSQL_BIND *m_pBind;
unsigned long *m_plStringLen;
my_bool *m_pbArray;
int *m_pnDataArray;
double *m_pfDataArray;
char **m_pszDataArray;
string m_strSql;
string m_strErrMsg;
int m_nRowCount;
int m_nColumnCount;
int m_nSqlType;
int m_nBindParamFlag;
};
typedef CSqlStatement *PCSqlStatement;
//数据库连接
class CDatabaseConnect
{
public:
CDatabaseConnect();
virtual ~CDatabaseConnect();
//打开
bool Open(PSTConnectParam pstParam);
//关闭
bool Close(void);
//获取MySQL对象指针
MYSQL *GetMySQL(void);
//获取指定表名称的记录个数
int GetTableRecordCount(const char *pszTabelName);
//写日志
int WriteDbLog(const char *pszMsg);
//运行SQL语句
bool DirectStatement(const char *pszSqlStatement);
//产生SQL预处理对象
CSqlStatement* SetSqlStatement(const char *pszSqlStatement);
//释放SQL对象
void ReleaseStatement(void);
//获取指定SQL语句的查询记录个数
int GetRecordCount(const char *szSql);
//事务
bool BeginTransaction(void);
bool CommitTransaction(void);
bool RollbackTransaction(void);
public:
MYSQL * m_pDb;
private:
PAddLogFunc pAddLog;
CSqlStatement *m_pSqlStatement;
string m_strDbName;
string m_strSql;
string m_strErrMsg;
};
mysql的常用操作的封装的更多相关文章
- DBA必备:MySQL数据库常用操作和技巧
DBA必备:MySQL数据库常用操作和技巧 2011-02-25 15:31 kaduo it168 字号:T | T MySQL数据库可以说是DBA们最常见和常用的数据库之一,为了方便大家使用,老M ...
- Linux下mysql的常用操作
Linux下mysql的常用操作: 显示数据库 show databases; 选择数据库 use 数据库名; 显示数据库中的表 show tables; 显示数据表的结构 describe 表名; ...
- ubuntu下安装mysql及常用操作
1.可通过ps -ef | grep mysql命令查看系统中是否有安装mysql 如果出现类似上述的页面,就证明是已经安装过了mysql,否则就是没有. 2.安装mysql 很简单,只需要键入如下命 ...
- 网站用户行为分析——在Ubuntu下安装MySQL及其常用操作
安装MySQL 使用以下命令即可进行mysql安装,注意安装前先更新一下软件源以获得最新版本: sudo apt-get update #更新软件源 sudo apt-get install mysq ...
- Linux下MySql数据库常用操作
1.显示数据库 show databases; 2.选择数据库 use 数据库名; 3.显示数据库中的表 show tables; 4.显示数据表的结构 describe 表名; 5.显示表中记录 S ...
- mysql之常用操作
1. 数据库介绍 什么是数据库? 数据库(Database)是按照数据结构来组织.存储和管理数据的仓库,每个数据库都有一个或多个不同的API用于创建,访问,管理,搜索和复制所保存的数据.我们也可以将数 ...
- mysql的常用操作
基本操作 #1 操作文件夹(库) 增 create database db1 charset utf8; --指定格式为utf8 查 show databases; --查看所有的数据库 show c ...
- Mysql之常用操作(2)
Windows服务 -- 启动MySQL net start mysql -- 创建Windows服务 sc create mysql binPath= mysqld_bin_path(注意:等号与值 ...
- MySQL数据库常用操作和技巧
MySQL数据库可以说是DBA们最常见和常用的数据库之一,MySQL的广泛应用,也使更多的人加入到学习它的行列之中.下面是老MySQL DBA总结的MySQL数据库最常见和最常使用的一些经验和技巧,分 ...
随机推荐
- mysql增量备份 percona-xtrabackup
先说下实际环境 阿里云买的ESC跑的mysql服务,目前由于数据量过大,数据库目前有800多GB,每次全备需要等20多个小时才能够完成,然后就想到做增量备份,写下此文档 一.测试环境 [root@lo ...
- 高性能WEB开发(6) - web性能測试工具推荐
WEB性能測试工具主要分为三种.一种是測试页面资源载入速度的,一种是測试页面载入完成后页面呈现.JS操作速度的,另一种是整体上对页面进行评价分析,以下分别对这些工具进行介绍,假设谁有更好的工具也请一起 ...
- MySql命令——函数
1.拼接字段——Concata() 把多个串连接起来形成一个较长的串. select concat(value,'(',id,')') from test; 2.去掉空格 RTrim() 去掉右边的空 ...
- C# 类属性封装、字段的详解
今日敲代码时,突然感觉对类的属性封装.字段有点犯迷糊了..连基础的都不知道了,那敲的代码怎么能严谨高效的.果断拿起各种高级编程.大全啥的翻起来~~这不再把自己的理解写下来(定义都是直接抄书的),献给同 ...
- 公司项目笔记-导出excel
一.asp.net中导出Excel的方法: 在asp.net中导出Excel有两种方法,一种是将导出的文件存放在服务器某个文件夹下面,然后将文件地址输出在浏览器上:一种是将文件直接将文件输出流写给浏览 ...
- Android --------- 标签include位置设置无效
给include设置below或align无效,是因为没有给include设置width和height.
- React react-ui-tree的使用
公司需要做一个IDE,要做IDE当然少不了文件列表了.下面我就来展示一下刚刚研究的一个库. 下面是链接:https://react.rocks/example/react-ui-tree 至于如何导入 ...
- Flex 扩展combobox 实现复选功能
前段时间,老大召唤,给个任务,研究一下flex的combobox控件 实现复选功能(flex自带的combobox控件不可以复选),小兵能力有限,哪里可以扩展呀,网上看了别人写的,发现总是有点瑕疵(关 ...
- 1203.4——循环语句 之 for
for循环的一般形式为:for(表达式1; 表达式2; 表达式3){ 语句块} 它的执行过程如下:1) 先求解表达式1. 2) 求解表达式2,若其值为真(非0),则执行循环体,否则结束循环. 3 ...
- ural 1297 Palindrome(Manacher模板题)
转载请注明出处: http://www.cnblogs.com/fraud/ ——by fraud 求最长回文子串. http://acm.timus.ru/problem.aspx ...