dbaccess.h
Code:
#pragma once
#include "globals.h"
class dbaccess
{
public:
dbaccess();
~dbaccess();
QueryStruct * queryDB( string query, int * rowNums );
private:
MYSQL *conn;
MYSQL_ROW sqlRow;
QueryStruct queries;
};
Code:
#include "dbaccess.h"
dbaccess::dbaccess()
{
conn = NULL;
MYSQL_RES *r = NULL;
conn = mysql_init(NULL);
mysql_real_connect(conn, "localhost", "user", "pass", "mytest", 0, NULL, 0);
}
dbaccess::~dbaccess()
{
mysql_close( conn );
}
QueryStruct * dbaccess::queryDB( string query, int * numRows )
{
//connect to the db and return the query to the caller
int testval = 0, tempCounter = 0;
ULLONG numResults = 0;
QueryStruct * tempData = NULL;
MYSQL_RES * result = NULL;
testval = mysql_select_db( conn, DBNAME );
do
{
testval = mysql_query( conn, query.c_str() );
result = mysql_store_result( conn );
++tempCounter;
}while( result == NULL && tempCounter < 5 );
if( result == NULL )
{
//tempData is null, return nothing
return tempData;
}
else
{
numResults = mysql_num_rows( result );
for( ULLONG i = numResults; i >= 0; i-- )
{
ULLONG numFields = mysql_num_fields( result );
tempData->rowsPerQuery.push_back( numFields );
MYSQL_ROW row = mysql_fetch_row( result );
tempData->queryRows.push_back( row );
}
}
return tempData;
}
globals.h
Code:
#include <mysql.h>
#include "dbaccess.h"
struct QueryStruct
{
std::vector<int> rowLen;
std::vector<MYSQL_ROW> rowdata;
};
extern dbaccess theDB;
main.cpp
Code:
#include "globals.h"
#include "connection.h"
int main(void)
{
int numRows = 0;
connection * con = new connection();
return 0;
}
connection.h
Code:
#pragma once
#include "globals.h"
class connection
{
public:
connection();
~connection();
};
connection.cpp
Code:
connection::connection()
{
char query[] = "Select * from table";
QueryStruct * x = theDB.queryDB( query, &numRows );
}
etc....
This is a rough example, if there are syntactic errors or slight semantic errors its because it is late. Thanks.