diff options
Diffstat (limited to 'utils/vmpi/imysqlwrapper.h')
| -rw-r--r-- | utils/vmpi/imysqlwrapper.h | 115 |
1 files changed, 115 insertions, 0 deletions
diff --git a/utils/vmpi/imysqlwrapper.h b/utils/vmpi/imysqlwrapper.h new file mode 100644 index 0000000..2604128 --- /dev/null +++ b/utils/vmpi/imysqlwrapper.h @@ -0,0 +1,115 @@ +//========= Copyright Valve Corporation, All rights reserved. ============// +// +// Purpose: +// +// $NoKeywords: $ +//=============================================================================// + +#ifndef MYSQL_WRAPPER_H +#define MYSQL_WRAPPER_H +#ifdef _WIN32 +#pragma once +#endif + + +#include "utlvector.h" +#include "interface.h" + + +class IMySQLRowSet; + + +class CColumnValue +{ +public: + + CColumnValue( IMySQLRowSet *pSQL, int iColumn ); + + const char* String(); + long Int32(); + +private: + IMySQLRowSet *m_pSQL; + int m_iColumn; +}; + + + +class IMySQLRowSet +{ +public: + virtual void Release() = 0; + + // Get the number of columns in the data returned from the last query (if it was a select statement). + virtual int NumFields() = 0; + + // Get the name of each column returned by the last query. + virtual const char* GetFieldName( int iColumn ) = 0; + + // Call this in a loop until it returns false to iterate over all rows the query returned. + virtual bool NextRow() = 0; + + // You can call this to start iterating over the result set from the start again. + // Note: after calling this, you have to call NextRow() to actually get the first row's value ready. + virtual bool SeekToFirstRow() = 0; + + virtual CColumnValue GetColumnValue( int iColumn ) = 0; + virtual CColumnValue GetColumnValue( const char *pColumnName ) = 0; + + virtual const char* GetColumnValue_String( int iColumn ) = 0; + virtual long GetColumnValue_Int( int iColumn ) = 0; + + // You can call this to get the index of a column for faster lookups with GetColumnValue( int ). + // Returns -1 if the column can't be found. + virtual int GetColumnIndex( const char *pColumnName ) = 0; +}; + + +class IMySQL : public IMySQLRowSet +{ +public: + virtual bool InitMySQL( const char *pDBName, const char *pHostName="", const char *pUserName="", const char *pPassword="" ) = 0; + virtual void Release() = 0; + + // These execute SQL commands. They return 0 if the query was successful. + virtual int Execute( const char *pString ) = 0; + + // This reads in all of the data in the last row set you queried with Execute and builds a separate + // copy. This is useful in some of the VMPI tools to have a thread repeatedly execute a slow query, then + // store off the results for the main thread to parse. + virtual IMySQLRowSet* DuplicateRowSet() = 0; + + // If you just inserted rows into a table with an AUTO_INCREMENT column, + // then this returns the (unique) value of that column. + virtual unsigned long InsertID() = 0; + + // Returns the last error message, if an error took place + virtual const char * GetLastError() = 0; +}; + + +#define MYSQL_WRAPPER_VERSION_NAME "MySQLWrapper001" + + +// ------------------------------------------------------------------------------------------------ // +// Inlines. +// ------------------------------------------------------------------------------------------------ // + +inline CColumnValue::CColumnValue( IMySQLRowSet *pSQL, int iColumn ) +{ + m_pSQL = pSQL; + m_iColumn = iColumn; +} + +inline const char* CColumnValue::String() +{ + return m_pSQL->GetColumnValue_String( m_iColumn ); +} + +inline long CColumnValue::Int32() +{ + return m_pSQL->GetColumnValue_Int( m_iColumn ); +} + + +#endif // MYSQL_WRAPPER_H |