void DatabaseWorkerPool::DirectPExecute(const char* sql, ...) { if (!sql) return; va_list ap; char szQuery[MAX_QUERY_LEN]; va_start(ap, sql); int res = vsnprintf(szQuery, MAX_QUERY_LEN, sql, ap); va_end(ap); return DirectExecute(szQuery); }
bool DatabaseMysql::PExecute(const char * format,...) { if (!format) return false; va_list ap; char szQuery [MAX_QUERY_LEN]; va_start(ap, format); int res = vsnprintf( szQuery, MAX_QUERY_LEN, format, ap ); va_end(ap); if(res == -1) { IME_SQLERROR("SQL Query truncated (and not execute) for format: %s",format); return false; } return DirectExecute(szQuery); }
bool DatabaseMysql::Execute(const char *sql) { if (!mMysql) return false; // don't use queued execution if it has not been initialized if (!m_threadBody) return DirectExecute(sql); tranThread = ACE_Based::Thread::current(); // owner of this transaction TransactionQueues::iterator i = m_tranQueues.find(tranThread); if (i != m_tranQueues.end() && i->second != NULL) i->second->DelayExecute(sql); // Statement for transaction else m_threadBody->Delay(new SqlStatement(sql)); // Simple sql statement return true; }
bool Database::DirectPExecuteLog(const char * format,...) { if (!format) return false; va_list ap; char szQuery [MAX_QUERY_LEN]; va_start(ap, format); int res = vsnprintf(szQuery, MAX_QUERY_LEN, format, ap); va_end(ap); if (res==-1) { sLog.outError("SQL Query truncated (and not execute) for format: %s",format); return false; } if (m_logSQL) { time_t curr; tm local; time(&curr); // get current time_t value local=*(localtime(&curr)); // dereference and assign char fName[128]; sprintf(fName, "%04d-%02d-%02d_logSQL.sql", local.tm_year+1900, local.tm_mon+1, local.tm_mday); FILE* log_file; std::string logsDir_fname = m_logsDir+fName; log_file = fopen(logsDir_fname.c_str(), "a"); if (log_file) { fprintf(log_file, "%s;\n", szQuery); fclose(log_file); } else { // The file could not be opened sLog.outError("SQL-Logging is disabled - Log file for the SQL commands could not be openend: %s",fName); } } return DirectExecute(szQuery); }
bool Database::Execute(const char* sql) { if (!m_pAsyncConn) return false; SqlTransaction* pTrans = m_TransStorage->get(); if (pTrans) { //add SQL request to trans queue pTrans->DelayExecute(new SqlPlainRequest(sql)); } else { //if async execution is not available if (!m_bAllowAsyncTransactions) return DirectExecute(sql); // Simple sql statement m_threadBody->Delay(new SqlPlainRequest(sql)); } return true; }
void DatabaseMysql::EndRollback() { DirectExecute("ROLLBACK"); }
void DatabaseMysql::EndCommit() { DirectExecute("COMMIT"); }
void DatabaseMysql::StartTransaction() { DirectExecute("START TRANSACTION"); }