⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mysql.cpp

📁 LINUX下实现对MYSQL数据的操作
💻 CPP
字号:
#include "MySql.h"

CMySql::CMySql()
{
	m_bConnect = false;
	m_num_field = 0;
	m_num_count = 0;
	m_query = NULL;

	memset(m_mySqlIP,0,100);
	memset(m_user,0,100);
	memset(m_pass,0,100);
	memset(m_sid,0,100);
}

CMySql::~CMySql()
{
	if(m_bConnect)
		DisConnectDB();
}

/*
 *	连接数据库;
 */
bool CMySql::ConnectDB(char *mySqlIP,char *user,char *pass,char *sid)
{
	if(m_bConnect == true)
		return true;

	if (!mysql_init(&m_mysql))
	{
		printf("mysql_init is err!\n");
		return false;
	}

	if (mysql_real_connect(&m_mysql,mySqlIP,user,pass,sid, 0, NULL, 0) == NULL)
	{
		printf("mysql_read_connect is err=%s!\n",mysql_error(&m_mysql));
		mysql_close(&m_mysql);
		return false;
	}

	strcpy(m_mySqlIP,mySqlIP);
	strcpy(m_user,user);
	strcpy(m_pass,pass);
	strcpy(m_sid,sid);

	m_bConnect = true;
		
	return true;
}

/*
 *	断开数据库;
 */
void CMySql::DisConnectDB()
{
	if(m_bConnect == false)
		return;

	FreeResult();

	mysql_close(&m_mysql);

	m_bConnect = false;
}

/*
 *	执行数据库sql语句;
 */
bool CMySql::ExecSQL(char *sqlStr)
{
	if(m_bConnect == false)
		return false;

	int ret=mysql_query(&m_mysql,sqlStr);
	if(ret)
	{
		int n_mysql_errno = 0;
		n_mysql_errno = mysql_errno(&m_mysql);
		printf("ExMySQL : %s\n    Exec error : %d,%s\n", sqlStr, n_mysql_errno,mysql_error(&m_mysql));
		return false;
	}

	return true;
}

/*
 *	返回SELECT,SHOW,DESCRIBE, EXPLAIN等语句执行的结果。
 */
bool CMySql::StoreResult()
{
	if(m_bConnect == false)
		return false;

	FreeResult();

	m_query = mysql_store_result(&m_mysql);
	if (m_query) 
	{
		m_num_field = mysql_num_fields(m_query);
		m_num_count = mysql_num_rows(m_query);
		return true;
	}
	else
		return false;
}

/*
 *	获取查询的结果集中的下一条记录;
 */
MYSQL_ROW CMySql::GetNextRow()
{
	if(m_bConnect == false)
		return NULL;
	if(!m_query)
		return NULL;

	m_row = mysql_fetch_row(m_query);

	return m_row;
}

/*
 *	移动到数据集的开始;
 */
void CMySql::GotoRowsFirst()
{
	if(m_bConnect == false)
		return;
	if(!m_query)
		return;

	mysql_data_seek(m_query,0);
}

/*
 *	打印查询的记录信息;
 */
void CMySql::PrintRows()
{
	if(m_bConnect == false)
		return;
	if(!m_query)
		return;

	if(m_num_count > 0)
		mysql_data_seek(m_query,0);
	
	while(MYSQL_ROW row = mysql_fetch_row(m_query))
	{
		for(int i=0;i<m_num_field;i++)
		{
			printf("%s	",row[i]);
		}	
		printf("\n");
	}
	printf("_________________________________________________________\n");
	printf("Record Count = %d\n",m_num_count);
	if(m_num_count > 0)
		mysql_data_seek(m_query,0);
}

/*
 *	释放查询的数据集的内存资源;
 */
void CMySql::FreeResult()
{
	if(m_query != NULL)
	{
//		m_num_count = mysql_num_rows(m_query);
//		if(m_num_count > 0) //数据集当使用后,即使记录个数为0,但是对象存在,需要释放,所以本行判断不需要;2006-3-2 lhf
		mysql_free_result(m_query);
		m_num_field = 0;
		m_num_count = 0;

		m_query = NULL;
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -