mysql c 简单工具类

本文介绍了一个使用C++实现的简易MySQL工具类,包括连接数据库、执行查询和更新操作的方法。该工具类封装了MySQL的C API,提供了一种简单的方式来进行数据库操作,适用于需要在C++环境中进行MySQL数据库交互的场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

mysql c 简单工具类

  • mysqltools.h
#pragma once

#include <mysql.h>
#include <iostream>
#include <string>
#include <map>

using namespace std;

class MySqlTools
{
public:
    MySqlTools(string ip, string usern, string passw, string database, int port);
    ~MySqlTools();

	map<int, map<int, string>> Query(std::string query_sql_string);
	int Exec(string exSqlStr);

private:
    MYSQL conn;
	int num_fields;
	map<int, map<int, string>> mapsql;
	map<int, string> mapone;
};

MySqlTools::MySqlTools(string ip,string usern,string passw,string database,int port)
{
    mysql_init(&conn);
	num_fields = 0;

    if (mysql_real_connect(&conn, ip.c_str(), usern.c_str(), passw.c_str(), database.c_str(), port, NULL, CLIENT_FOUND_ROWS))
    {
        printf("connect success!\n");
    }
}

MySqlTools::~MySqlTools()
{
    mysql_close(&conn);
}

map<int, map<int, string>> MySqlTools::Query(std::string query_sql_string) {
	const char* query_buffer = query_sql_string.c_str();
	if (mysql_query(&conn, query_buffer))
	{
		printf("Query failed(%s)\n", mysql_error(&conn));
	}
	else
	{
		num_fields = 0;
		mapsql.clear();
		mapone.clear();

		printf("Query success\n");
		MYSQL_RES*  res = mysql_store_result(&conn);
		num_fields = mysql_num_fields(res);
		printf_s("num_fields: %d\n", num_fields);
		MYSQL_ROW row;
		
		int i = 0;
		while ((row = mysql_fetch_row(res)) != NULL)
		{
			int i2 = 0;
			while (i2 <= num_fields)
			{
				mapone[i2] = row[i2];

				i2++;
			}
			mapsql[i] = mapone;
			i++;
		}

		/*map<int, map<int, string>>::iterator iter;
		for (iter = mapsql.begin(); iter != mapsql.end(); iter++)
		{ 
			std::cout << iter->second[0] << "  " << iter->second[1] << std::endl;
		}*/

		mysql_free_result(res);    //释放内存    
		delete row;
		return mapsql;
	}
}

int MySqlTools::Exec(string exSqlStr)
{
	int res = mysql_query(&conn, exSqlStr.c_str());
	if (res)
	{
		printf("error\n");
	}
	else
	{
		printf("OK\n");
	}
	return res;
}
  • main.cpp
#include "mysqltools.h"

int main()
{
	MySqlTools sqldb("127.0.0.1", "root", "123456", "test", 3306);

	map<int, map<int, string>> mapsql = sqldb.Query("SELECT * FROM `t2`");

	map<int, map<int, string>>::iterator iter;
	for (iter = mapsql.begin(); iter != mapsql.end(); iter++)
	{
		std::cout << iter->second[0] << "  " << iter->second[1] << std::endl;
	}

	map<int, map<int, string>> mapsql2 = sqldb.Query("SELECT * FROM `t1`");
	for (iter = mapsql2.begin(); iter != mapsql2.end(); iter++)
	{
		std::cout << iter->second[0] << "  " << iter->second[1] << std::endl;
	}

	sqldb.Exec("UPDATE `position` SET fee = 0");
	return 0;
}
  • 数据库
  • 在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值