VS C++ 访问MySql

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;
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C++访问MySQL #include "stdafx.h" #include <windows.h> #include <iostream> #include <D:TDdownloadMySQL111includemysqlmysql.h> int main(int argc,char* argv[])   {     char *user ="root", *pwd ="123456", *dbname = "chardb";     MYSQL  mysql;     MYSQL_RES  *mysql_ret;     MYSQL_ROW  mysql_row;     unsigned  long  num_rows;     int  ret;     mysql_init(&mysql);     if(mysql_real_connect(&mysql,NULL,user,pwd,dbname,0,NULL,0))     {       printf("连接成功!n");       ret  =  mysql_query(&mysql,"select  *  from  accounts");       if(!ret)       {         printf("查询成功!n");         mysql_ret  =  mysql_store_result(&mysql);         if(mysql_ret  !=  NULL)         {           printf("存储结果成功!n");           num_rows  =  mysql_num_rows(mysql_ret);           if(num_rows  !=  0)           {             printf("%dn",num_rows);             while(mysql_row  =  mysql_fetch_row(mysql_ret))             {               printf("%st%st%st%st%st%sn",mysql_row[0],mysql_row[1],mysql_row[2],mysql_row[3],mysql_row[4],mysql_row[5]);             }           }           else           {             exit(-1);           }           mysql_free_result(mysql_ret);           exit(0);         }  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值