#pragma once
//#include "pch.h"
#include "public.h"
#include "Connection.h"
#include <iostream>
#include "logger.hpp"
using namespace std;
 
Connection::Connection()
{
	// 初始化数据库连接
	_conn = mysql_init(nullptr);
}
 
Connection::~Connection()
{
	// 释放数据库连接资源
	if (_conn != nullptr)
		mysql_close(_conn);
}
 
bool Connection::connect(string ip, unsigned short port,
	string username, string password, string dbname)
{
	// 连接数据库
	MYSQL *p = mysql_real_connect(_conn, ip.c_str(), username.c_str(),
		password.c_str(), dbname.c_str(), port, nullptr, 0);
	return p != nullptr;
}
 
bool Connection::update(string sql)
{
	// 更新操作 insert、delete、update
	if (mysql_query(_conn, sql.c_str()))
	{
		LOG("更新失败:" + sql);
		return false;
	}
	return true;
}
 
//刷新连接的起始空闲时间
void Connection:: refreshAlivetime()
{
	_alivetime = clock();
}
 
//返回存活时间
 
clock_t Connection:: getAliveTime()
{
	return clock() - _alivetime;
}
 
MYSQL_RES* Connection::query(string sql)
{
	// 查询操作 select
	if (mysql_query(_conn, sql.c_str()))
	{
		 Logger::udsf_server().error("mysql_real_query failure！SQL(%s) error:%s\n", sql.c_str(),mysql_error(_conn));
		return nullptr;
	}
	//return mysql_use_result(_conn);
	return mysql_store_result(_conn);
}