VS配置项
MySQL.h
#pragma once
#include <iostream>
#include <WinSock2.h>
#include <mysql.h>
#include <string>
#include <vector>
using namespace std;
class MySQL {
public:
MySQL();
//连接mysql
bool ConnectionMySql(const char* host, const char* user, const char* passward, const char* dbName, int port = 3306);
~MySQL();
//增
bool Insert(const string& strSQL);
//删
bool Delete(const string& strSQL);
//改
bool Update(const string& strSQL);
size_t GetCount(const string& strSQL);
vector<vector<string>> Select(const string& strSQL);
//切换数据库
bool SelectDB(const string& daName);
private:
MYSQL* _mysql;
string _dbName;
vector<string> _tables;
};
MySQL.cpp
#include "MySQL.h"
MySQL::MySQL() {
//初始化mysql
_mysql = mysql_init(nullptr);
}
bool MySQL::ConnectionMySql(const char* host, const char* user, const char* passward, const char* dbName, int port) {
//连接mysql
if (!mysql_real_connect(_mysql, host, user, passward, dbName, port, NULL, 0)) {
return false;
}
/*
解决mysql中文显示乱码问题
*/
mysql_query(_mysql, "set names 'gbk'");
return true;
}
bool MySQL::Insert(const string& strSql) {
//执行sql语句
if (mysql_query(_mysql, strSql.c_str())) {
return false;
}
return true;
}
bool MySQL::Update(const string& strSQL) {
if (mysql_query(_mysql, strSQL.c_str()))
return false;
return true;
}
vector<vector<string>> MySQL::Select(const string& sql) {
vector<vector<string>> vRet;
if (mysql_query(_mysql, sql.c_str())) {
string vsRet(mysql_error(_mysql));
return vRet;
}
//检查完整的数据集到客户端
MYSQL_RES* res = mysql_store_result(_mysql);
if (res == NULL) {
return vRet;
}
//用来保存结果集中行的信息
MYSQL_ROW rows;
//结果集中总共多少行数据
int num_fields = mysql_num_fields(res);
while (rows = mysql_fetch_row(res)) {
int i = 0;
vector<string> vItem;
vItem.resize(num_fields);
for (i = 0; i < num_fields; ++i) {
vItem[i] = rows[i];
}
vRet.push_back(std::move(vItem));
}
const char* str = mysql_error(_mysql);
mysql_free_result(res);
return std::move(vRet);
}
size_t MySQL::GetCount(const string& strSQL) {
//指定SQL语句
if (mysql_query(_mysql, strSQL.c_str())) {
return 0;
}
//检索完整的数据集到客户端
MYSQL_RES* res = mysql_store_result(_mysql);
if (res == NULL) {
return 0;
}
return mysql_num_fields(res);
}
bool MySQL::Delete(const string& strSQL) {
if (mysql_query(_mysql, strSQL.c_str()))
return false;
return true;
}
MySQL::~MySQL() {
mysql_close(_mysql);
}
main.cpp
#include <stdio.h>
#include "MySQL.h"
//如果MySQL是64位的vs的编译模式也得是64位!!!
//如果MySQL是32位的vs的编译模式也得是32位!!!
//上方有图!!!
//#include <mysql.h> 如果配置ok就可以直接包含这个文件
int main(void)
{
MySQL sql;
sql.ConnectionMySql("localhost", "/*用户名*/", "/*密码*/", "test");
std::vector<std::vector<std::string>> ret = sql.Select("select * from student");
sql.Update("UPDATE student SET name = '郭靖' WHERE id = '201902'");
return 0;
}