statement.cpp

来自「天之炼狱1服务器端源文件游戏服务端不完整」· C++ 代码 · 共 231 行

CPP
231
字号
//////////////////////////////////////////////////////////////////////////////// File Name 	: Statement.cpp// Written by	: Gday29@ewestsoft.com// Description	: SQL 巩阑 父电促..//////////////////////////////////////////////////////////////////////////////#include "Statement.h"#include <stdio.h>#include <sys/time.h>#include <mysql/mysql.h>#include "Result.h"#include "Assert.h"#include "Mutex.h"#include "Profile.h"//////////////////////////////////////////////////////////////////////////////// constructor//////////////////////////////////////////////////////////////////////////////Statement::Statement() 	throw (){	__BEGIN_TRY	m_pConnection   = NULL;	m_pResult       = NULL;	m_nAffectedRows = 0;	__END_CATCH}Statement::Statement (char * fmt , ... ) 	throw (Error ){	__BEGIN_TRY	// variable argument list	va_list valist;		va_start(valist , fmt );		char buffer[2048];		int nchars = vsnprintf(buffer, 2048, fmt, valist );	// 父距 滚欺 农扁啊 何练窍霸 登搁, 俊矾甫 带廉辑 荐悼栏肺 蔼阑 刘啊矫难具 茄促.	if (nchars == -1 || nchars > 2048 )		throw Error("more buffer size needed for SQL statement buffer...");		va_end(valist);		// string 捞骨肺 措涝秦档 救傈窍促. 	// 父距 char * 看促搁, local variable阑 器牢泼窍绰 巴篮 困氰窍促.    m_Statement = buffer;		__END_CATCH}////////////////////////////////////////////////////////////////////////// destructor//// 孽府巩俊辑 父电 搬苞甫 皋葛府俊辑 秦力茄促.////////////////////////////////////////////////////////////////////////Statement::~Statement() 	throw (){	__BEGIN_TRY	if (m_pResult != NULL ) 	{		delete m_pResult;		m_pResult = NULL;	}		__END_CATCH}    ////////////////////////////////////////////////////////////////////////// executeQuery()//// Connection, SQL巩阑 胶飘傅栏肺 罐酒辑 搬苞蔼阑 Result *肺 府畔茄促.////////////////////////////////////////////////////////////////////////Result * Statement::executeQuery () 	throw (SQLQueryException , Error ){	__BEGIN_TRY			Assert(m_pConnection != NULL );	if (m_pResult != NULL ) 	{		// 绢敲府纳捞记俊辑 Result 甫 昏力窍瘤 臼篮 版快,		delete m_pResult;		m_pResult = NULL;	}	beginProfileEx("ZPM_QUERY");	if (mysql_real_query(m_pConnection->getMYSQL(), m_Statement.c_str() , m_Statement.size() ) != 0 )	{		cout << "Stmt::EQ real Query Error" << endl;		cout << "Stmt [" << m_Statement << "]" << endl;		cout << getError() << endl;		throw SQLQueryException(getError() );	}		MYSQL_RES * pResult = mysql_store_result(m_pConnection->getMYSQL());		// 孽府 搬苞蔼捞 NULL老 版快绰 update巩捞芭唱 俊矾捞促.	if (pResult != NULL)	{		m_pResult = new Result(pResult, m_Statement);	}	else 	{		//if (mysql_num_fields(m_pConnection->getMYSQL() ) != 0 )		if (mysql_field_count(m_pConnection->getMYSQL() ) != 0 )		{			cerr << "Stmt::EQ Unknown Error > " << getError() << endl;			throw SQLQueryException(getError() );		}		else		{			m_nAffectedRows = mysql_affected_rows(m_pConnection->getMYSQL());		}	}	endProfileEx("ZPM_QUERY");	return m_pResult;	__END_CATCH}////////////////////////////////////////////////////////////////////////// executeQuery ()//// Connection, SQL巩阑 胶飘傅栏肺 罐酒辑 搬苞蔼阑 Result *肺 府畔茄促.////////////////////////////////////////////////////////////////////////Result * Statement::executeQuery (const string& sqlStatement )	throw (SQLQueryException, Error ){	__BEGIN_TRY			m_Statement = sqlStatement;	return executeQuery();	__END_CATCH}		////////////////////////////////////////////////////////////////////////// executeQuery ()//// Connection, SQL巩阑 胶飘傅栏肺 罐酒辑 搬苞蔼阑 Result *肺 府畔茄促.////////////////////////////////////////////////////////////////////////Result * Statement::executeQuery (char * fmt , ... ) 	throw (SQLQueryException, Error ){	__BEGIN_TRY			// SQL Statement 甫 父甸绢辰促.	va_list valist;	va_start(valist, fmt);	char buffer[2048+1];	int nchars = vsnprintf(buffer, 2048, fmt, valist );	// 父距 滚欺 农扁啊 何练窍霸 登搁, 抗寇甫 带廉辑 蔼阑 刘啊矫难具 茄促.	if (nchars == -1 || nchars > 2048 )		throw Error("more buffer size needed for SQL statement buffer...");	va_end(valist);	m_Statement = buffer;	return executeQuery();	__END_CATCH}		//////////////////////////////////////////////////////////////////////////	setStatement()////	孽府巩阑 促矫 父电促.////////////////////////////////////////////////////////////////////////void Statement::setStatement (char * fmt , ... ) 	throw (Error ) {	__BEGIN_TRY	// variable argument list	va_list valist;		va_start(valist, fmt );		// buffer size = 1kb..Too big??	char buffer[2048+1];		int nchars = vsnprintf(buffer, 2048 , fmt, valist );		// 父距 滚欺 农扁啊 何练窍霸 登搁, 抗寇甫 带廉辑 蔼阑 刘啊矫难具 茄促.	if (nchars == -1 || nchars > 2048 )		throw Error("more buffer size needed for SQL statement buffer...");	va_end(valist);		m_Statement = buffer;		__END_CATCH	}

⌨️ 快捷键说明

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