用C++写一个自己的QQ(二、使用MySQL读写数据)

32 篇文章 0 订阅
9 篇文章 2 订阅
本文介绍了如何在C++中新建数据库表格并进行项目配置,包括创建`tb_account`和`tb_department`表,设置include和lib文件夹,并放置必要的mysql头文件和库。同时,提供了一个简单的MysqlUtil单例类实现,用于连接、查询和操作数据库,包括连接、选择数据和执行操作的方法。此外,还给出了类的成员变量和相关常量的定义。
摘要由CSDN通过智能技术生成

一、新建数据库

新建一张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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值