mysql c 开发库_[C/C++]硬货 数据库开发之mysql

#include "MysqlDB.h"

#include

#include

#include

#include

using namespace std;

MysqlDB::~MysqlDB()

{

if (&connector != NULL)

{

mysql_close(&connector);

m_bConnected = false;

}

}

MysqlDB::MysqlDB(string host, string user, string pwd, string dbname)

{

// 初始化和验证参数

m_bConnected = false;

this->setHost(host);

this->setUser(user);

this->setPwd(pwd);

this->setDbname(dbname);

}

void MysqlDB::setHost(string host)

{

if (host.empty())

{

cout << "没有指定主机地址,默认:localhost" << endl;

this->m_cpHost = new char[10];

strcpy_s(this->m_cpHost, 10, "localhost");

}

else {

this->m_cpHost = new char[strlen(host.c_str()) + 1];

strcpy_s(this->m_cpHost, strlen(host.c_str()) + 1, host.c_str());

}

}

void MysqlDB::setUser(string user)

{

if (user.empty())

{

cout << "没有指定数据库用户名,默认:root" << endl;

this->m_cpUser = new char[5];

strcpy_s(this->m_cpUser, 5, "root");

}

else {

this->m_cpUser = new char[strlen(user.c_str()) + 1];

strcpy_s(this->m_cpUser, strlen(user.c_str()) + 1, user.c_str());

}

}

void MysqlDB::setPwd(string pwd)

{

if (pwd.empty())

{

cout << "没有指定数据库密码,默认:123456" << endl;

this->m_cpPwd = new char[7];

strcpy_s(this->m_cpPwd, 7, "123456");

}

else {

this->m_cpPwd = new char[strlen(pwd.c_str()) + 1];

strcpy_s(this->m_cpPwd, strlen(pwd.c_str()) + 1, pwd.c_str());

}

}

void MysqlDB::setDbname(string dbname)

{

if (dbname.empty())

{

cout << "没有指定数据库名称,默认地址:mysql" << endl;

this->m_cpDbname = new char[6];

strcpy_s(this->m_cpDbname, 6, "mysql");

}

else {

this->m_cpDbname = new char[strlen(dbname.c_str()) + 1];

strcpy_s(this->m_cpDbname, strlen(dbname.c_str()) + 1, dbname.c_str());

}

}

int MysqlDB::initDB()

{

if (m_bConnected)

{

cout << "已经连接到数据库" << endl;

return 0;

}

// 初始化数据库连接变量

mysql_init(&connector);

// 访问数据库

if (!mysql_real_connect(&connector, m_cpHost, m_cpUser, m_cpPwd, m_cpDbname, 0, NULL, 0))

{

cout << "数据库连接失败: " << mysql_errno(&connector) << ", " << mysql_error(&connector) << endl;

return -1;

}

m_bConnected = true;

return 0;

}

int MysqlDB::query(string sql) {

if (!m_bConnected)

{

cout << "没有连接到数据库" << endl;

return -1;

}

if (sql.empty())

{

cout << "sql语句为空" << endl;

return -1;

}

mysql_query(&connector, "set names gbk");

int flag = mysql_real_query(&connector, sql.c_str(), (unsigned long)strlen(sql.c_str()));

if (flag < 0)

{

cout << "查询出错: " << mysql_errno(&connector) << ", " << mysql_error(&connector) << endl;

return -1;

}

res = mysql_store_result(&connector); // 将查询结果读取到内存中 如果数据很多的情况会比较耗内存

//res = mysql_use_result(&connector); // 需要用到的时候,每次从服务器中读取一行

vector objectValue;

while ((row = mysql_fetch_row(res)))

{

objectValue.clear();

for (size_t i = 0; i < mysql_num_fields(res); i++)

{

objectValue.push_back(row[i]);

}

this->m_vvQueryResult.push_back(objectValue);

}

// 释放结果集

mysql_free_result(res);

return 0;

}

int MysqlDB::insert(string sql)

{

if (!m_bConnected)

{

cout << "没有连接到数据库" << endl;

return -1;

}

if (sql.empty())

{

cout << "sql语句为空" << endl;

return -1;

}

int res = mysql_query(&connector, sql.c_str());

if (res < 0)

{

cout << "插入出错: " << mysql_errno(&connector) << ", " << mysql_error(&connector) << endl;

return -1;

}

int rows = mysql_affected_rows(&connector);

cout << "插入行:" << rows << " 成功" << endl;

return rows;

}

vector> MysqlDB::getQueryResult()

{

return this->m_vvQueryResult;

}main.cpp

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值