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 + -
显示快捷键?