一、新建数据库
新建一张tb_account表,用来存放账户信息
新建一张tb_department表,用来存放部门信息
二、项目配置
新建include,lib文件夹
include下放入mysql的头文件
lib下放入mysql的库
路径包涵
附加依赖项
三、封装类
一个简单的单例模式封装
.cpp文件
#include "pch.h"
#include "MysqlUtil.h"
MysqlUtil* MysqlUtil::m_Instance = nullptr;
MysqlUtil::MysqlUtil()
{
m_IsConn = false;
mysql_init(&m_myCont);
Connect();
}
MysqlUtil* MysqlUtil::GetInstance()
{
if (m_Instance == nullptr) {
m_Instance = new MysqlUtil();
}
return m_Instance;
}
MysqlUtil::~MysqlUtil()
{
}
bool MysqlUtil::IsConnect()
{
return m_IsConn;
}
bool MysqlUtil::SelectData(vector<vector<string>>& result, string item)
{
int res = mysql_query(&m_myCont, item.c_str());//查询
if (res){
return false;
}
m_result = mysql_store_result(&m_myCont);
if (!m_result||m_result->row_count==0) {
return false;
}
for (int i = 0; i < m_result->row_count; i++) {
if (!(m_sqlRow = mysql_fetch_row(m_result))) {
break;
}
vector<string> temp;
for (int j = 0; j < m_result->field_count; j++) {
if(m_sqlRow[j]) temp.push_back(m_sqlRow[j]);
}
result.push_back(temp);
}
return true;
}
bool MysqlUtil::OperateData(string item)
{
int res = mysql_query(&m_myCont, item.c_str());//查询
if (res) {
return false;
}
return true;
}
bool MysqlUtil::Connect(string username, string password, string ip, int port /*= DEFAULT_MYSQL_PORT*/)
{
if (!mysql_real_connect(&m_myCont, ip.c_str(), username.c_str(), password.c_str(), DEFAULT_CONNECT_DATABASE, port, NULL, 0)) {
return false;
}
mysql_query(&m_myCont, "SET NAMES gbk"); //设置编码格式
return m_IsConn = true;
}
.h文件
#pragma once
#include <mysql.h>
#include <string>
#include <vector>
#define DEFAULT_MYSQL_PORT 3306
#define DEFAULT_CONNECT_DATABASE "db_myqq"
#define DEFAULT_USER_NAME "root"
#define DEFAULT_PASSWORD "你的密码"
#define DEFAULT_IP "127.0.0.1"
using namespace std;
class MysqlUtil
{
private:
MysqlUtil();
public:
static MysqlUtil* m_Instance;
static MysqlUtil* GetInstance();
~MysqlUtil();
public:
bool IsConnect();
void DiscConnect();
bool SelectData(vector<vector<string>> &result, string item);
bool OperateData(string item);
private:
bool Connect(string username = DEFAULT_USER_NAME, string password = DEFAULT_PASSWORD, string ip = DEFAULT_IP, int port = DEFAULT_MYSQL_PORT);
private:
MYSQL m_myCont;
MYSQL_RES* m_result = nullptr;
MYSQL_ROW m_sqlRow;
bool m_IsConn;
};
四、说明
如果大家有什么不了解的,可以先看一下我的这篇文章C++ 如何操作mysql