c 连mysql帮助类_C++中访问MySql数据库的帮助类

1、头文件

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

#pragma once

// 网络通信头文件

#include

// 引入mysql头文件(比较好的做法是把文件夹拷到工程目录,也可以在vc目录里面设置)

#include

#include

// 包含附加依赖项,也可以在工程--属性里面设置

//#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(3306),

unix_socket(NULL),

clientflag(0)

{

}

};

class MysqlHelper

{

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; // 查询结果集

};

View Code

2、源文件

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

#include

#include

#include "MysqlHelper.h"

using namespace std;

// 连接数据库

bool MysqlHelper::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 MysqlHelper::FreeConnect()

{

//释放资源

mysql_free_result(m_res);

mysql_close(&m_mysql);

return false;

}

// 执行sql语句, 包括增加、删除、更新数据

bool MysqlHelper::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* MysqlHelper::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 MysqlHelper::PrintQueryRes()

{

if (nullptr == m_res || NULL == m_res)

{

return;

}

// 获取行数

// unsigned int rows = mysql_affected_rows(m_mysql);

// 字段列数组

MYSQL_FIELD* field = nullptr;

//存字段名二维数组

char fieldName[64][32];

// 获取字段名

for (int i = 0; field = mysql_fetch_field(m_res); ++i)

{

strcpy_s(fieldName[i], field->name);

}

// 获取列数

int columns = mysql_num_fields(m_res);

for (int i = 0; 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 = 0; i < columns; ++i)

{

printf("%10s\t", row[i]);

}

cout << endl;

}

}

View Code

标签:info,const,数据库,MySql,C++,char,bool,sql,mysql

来源: https://www.cnblogs.com/LY-HeroesRebor/p/12022551.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值