示例#1
0
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);
}
示例#2
0
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);
}
示例#3
0
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;
}
示例#4
0
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);
}
示例#5
0
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;
}
示例#6
0
void DatabaseMysql::EndRollback()
{
	DirectExecute("ROLLBACK");
}
示例#7
0
void DatabaseMysql::EndCommit()
{
	DirectExecute("COMMIT");
}
示例#8
0
void DatabaseMysql::StartTransaction()
{
	DirectExecute("START TRANSACTION");
}