📄 mysqloperator.cpp
字号:
// MySqlOperator.cpp: implementation of the CMySqlOperator class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "MySqlOperator.h"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CMySqlOperator::CMySqlOperator()
{
m_pConn = NULL;
m_pQuery = NULL;
m_bConnected = FALSE;
}
CMySqlOperator::~CMySqlOperator()
{
FreeDb();
}
/*****************************************************************
** @name: FreeDb
** @return void
** @description:
释放链接对象和查询对象。在数据库Open时候和CMySqlOperator对象注销的
时候被调用。
****************************************************************/
void CMySqlOperator::FreeDb()
{
if(m_pQuery != NULL)
{
delete m_pQuery;
m_pQuery=NULL;
}
if(m_pConn != NULL)
{
delete m_pConn;
m_pConn=NULL;
}
m_bConnected = FALSE;
}
/*****************************************************************
** @name: Open
** @param [in] LPCTSTR lpszDb 数据库名称
** @param [in] LPCTSTR lpszHost 数据库所在主机地址
** @param [in] LPCTSTR lpszUser 数据库访问用户
** @param [in] LPCTSTR lpszPassword 用户密码
** @return BOOL 成功打开发挥TRUE,否则返回FALSE。
** @description:
打开数据库链接。
****************************************************************/
BOOL CMySqlOperator::Open(LPCTSTR lpszDb,LPCTSTR lpszHost,LPCTSTR lpszUser,LPCTSTR lpszPassword)
{ //first free database.
FreeDb();
//connect to db:
m_pConn = new sql_connection_c((LPTSTR)lpszDb,(LPTSTR)lpszHost,(LPTSTR)lpszUser,(LPTSTR)lpszPassword);
if(GetErrCode()!=0)
return FALSE;
m_pQuery = new sql_query_c(m_pConn);
if(!m_pQuery)
return FALSE;
m_bConnected = TRUE;
return TRUE;
}
/*****************************************************************
** @name: GetErrCode
** @return short 错误号
** @description:
得到数据库链接等操作中的错误号
****************************************************************/
UINT CMySqlOperator::GetErrCode()
{
if(!m_pConn)
return -1;
return m_pConn->errcode();
}
/*****************************************************************
** @name: ExecuteQuery
** @param [in] LPCTSTR lpszSql 数据库sql查询语句
** @return CMySqlRecordset* 如果查询执行失败,则返回NULL,否则返回查询结果集CMySqlRecordset
** 调用者必需自己销毁CMySqlRecordset对象,否则会导致内存泄漏
** @description:
执行sql查询语句,并返回查询结果。如果查询失败,这返回NULL。
****************************************************************/
CMySqlRecordset* CMySqlOperator::ExecuteQuery(LPCTSTR lpszSql)
{
if(!m_pQuery)
return NULL;
if(!m_pQuery->execute((LPTSTR)lpszSql))
return NULL;
sql_result_c * pResult = m_pQuery->store();
if(pResult)
return new CMySqlRecordset(m_pQuery,pResult);
else
return NULL;
}
/*****************************************************************
** @name: Execute
** @param [in] LPCTSTR lpszSql 数据库sql语句
** @return BOOL 如果执行失败,则返回FALSE,否则返回TRUE
** @description:
执行sql语句,并返回执行结果。这个操作用于除查询外的更新、删除
等操作。
****************************************************************/
BOOL CMySqlOperator::Execute(LPCTSTR lpszSql)
{
if(!m_pQuery)
return FALSE;
if(m_bConnected==FALSE)
return FALSE;
if(!m_pQuery->try_execute((LPTSTR)lpszSql))
{
if(m_pQuery->ping()!=0)
m_bConnected = FALSE;
return FALSE;
}
return TRUE;
}
/*****************************************************************
** @name: IsConnected
** @return BOOL 如果连接操作未有失败,返回TRUE,否则FALSE
** @description:
返回连接操作是否有失败
****************************************************************/
BOOL CMySqlOperator::IsConnected()
{
return m_bConnected;
}
/*****************************************************************
** @name: Ping
** @return int 如果服务器活着,零。如果出现一个错误,非零。
** @description:
检查到服务器的连接是否正在工作。如果它关闭了,自动尝试一个再连接。
****************************************************************/
int CMySqlOperator::Ping()
{
if(!m_pQuery)
return -1;
return m_pQuery->ping();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -