mysql c 简单工具类
#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;
}
#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;
}
- 数据库
