SqliteDBResultSet.cpp

From Giona

(Difference between revisions)
Line 1: Line 1:
 +
<pre>
 +
/*
 +
* This class represents a Result set obtained by making a query on a Sqlite Database
 +
* Author: Rosario Marino
 +
*/
 +
#include "SqliteDBResultSet.h"
 +
using namespace std;
 +
/*
 +
* Constructor
 +
*/
 +
SqliteDBResultSet::SqliteDBResultSet()
 +
{
 +
Debug::debug("SqliteDBResultSet::SqliteDBResultSet()");
 +
this->columns=new GenericList();
 +
this->data=new GenericList();
 +
this->lastError=NO_ERROR;
 +
}
 +
 +
/*
 +
* Destructor
 +
*/
 +
SqliteDBResultSet::~SqliteDBResultSet()
 +
{
 +
Debug::debug("SqliteDBResultSet::~SqliteDBResultSet()");
 +
delete (this->data);
 +
delete (this->columns);
 +
}
 +
 +
/*
 +
* Returns last error code
 +
*/
 +
 +
int SqliteDBResultSet::getLastError()
 +
{
 +
Debug::debug("int SqliteDBResultSet::getLastError()");
 +
return this->lastError;
 +
}
 +
 +
/*
 +
* Returns the number of columns of the table
 +
*/
 +
int SqliteDBResultSet::getNColumns()
 +
{
 +
Debug::debug("int SqliteDBResultSet::getNColumns()");
 +
return this->columns->getLength();
 +
}
 +
 +
/*
 +
* Returns the number of rows of the table
 +
*/
 +
int SqliteDBResultSet::getNRows()
 +
{
 +
Debug::debug("int SqliteDBResultSet::getNRows()");
 +
if(this->columns->getLength()==0)
 +
return 0;
 +
int nRows=this->data->getLength()/this->columns->getLength();
 +
return nRows;
 +
}
 +
 +
/*
 +
* Returns the name of a column in the specified position
 +
* Returns NULL in case of error
 +
*/
 +
char* SqliteDBResultSet::getColumnName(int columnNumber)
 +
{
 +
Debug::debug("char* SqliteDBResultSet::getColumnName(int columnNumber)");
 +
if((columnNumber<0)||(columnNumber>=this->columns->getLength()))
 +
{
 +
Debug::debug("ERROR: ERROR_INDEX_OUT_OF_RANGE");
 +
this->lastError = ERROR_INDEX_OUT_OF_RANGE;
 +
return NULL;
 +
}
 +
GenericListNode * columnNode= this->columns->getHead();
 +
for(int i=0; i<columnNumber;i++)
 +
columnNode=columnNode->getNext();
 +
return (char*)(columnNode->getElem());
 +
}
 +
 +
/*
 +
* Returns the value of the field in the specified rows and cols
 +
* Returns NULL in case of error
 +
*/
 +
char* SqliteDBResultSet::getFieldValue(int rowNumber, int columnNumber)
 +
{
 +
Debug::debug("char* SqliteDBResultSet::getFieldValue(int rowNumber, int columnNumber)");
 +
 +
 +
if((columnNumber<0)||(columnNumber>=this->columns->getLength()))
 +
{
 +
Debug::debug("ERROR: ERROR_INDEX_OUT_OF_RANGE - int columnNumber");
 +
this->lastError = ERROR_INDEX_OUT_OF_RANGE;
 +
return NULL;
 +
}
 +
 +
if((rowNumber<0)||(rowNumber>=this->getNRows()))
 +
{
 +
Debug::debug("ERROR: ERROR_INDEX_OUT_OF_RANGE - int rowNumber");
 +
this->lastError = ERROR_INDEX_OUT_OF_RANGE;
 +
return NULL;
 +
}
 +
 +
int position=(rowNumber*this->getNColumns())+columnNumber;
 +
GenericListNode * fieldNode= this->data->getHead();
 +
for(int i=0; i<position;i++)
 +
fieldNode=fieldNode->getNext();
 +
return (char*)(fieldNode->getElem());
 +
}
 +
 +
 +
/*
 +
* Adds a column to the table
 +
* WARNING: This method should NEVER BE CALLED
 +
*/
 +
bool SqliteDBResultSet::addColumn(char* columnName)
 +
{
 +
Debug::debug("bool SqliteDBResultSet::addColumn(char* columnName)");
 +
GenericListNode* node=new GenericListNode();
 +
node->setElem((genericListElemT)columnName);
 +
node->setNotAnObject();
 +
return this->columns->addNode(node);
 +
}
 +
 +
/*
 +
* Adds a field in the specified row of the table.
 +
* WARNING: This method should NEVER BE CALLED
 +
*/
 +
bool SqliteDBResultSet::addField(char* field)
 +
{
 +
Debug::debug("bool SqliteDBResultSet::addField(char* field)");
 +
GenericListNode* node=new GenericListNode();
 +
node->setElem((genericListElemT)field);
 +
node->setNotAnObject();
 +
return this->data->addNode(node);
 +
}
 +
 +
</pre>
[[Creazione di applicazioni con SQLite | BACK]]
[[Creazione di applicazioni con SQLite | BACK]]

Revision as of 12:22, 15 December 2007


/*
 * 	This class represents a Result set obtained by making a query on a Sqlite Database
 * 	Author: Rosario Marino
 */

#include "SqliteDBResultSet.h"
using namespace std;
/*
 * Constructor
 */
SqliteDBResultSet::SqliteDBResultSet()
{
	Debug::debug("SqliteDBResultSet::SqliteDBResultSet()");
	this->columns=new GenericList();
	this->data=new GenericList();
	this->lastError=NO_ERROR;
}

/*
 * 	Destructor
 */
SqliteDBResultSet::~SqliteDBResultSet()
{
	Debug::debug("SqliteDBResultSet::~SqliteDBResultSet()");
	delete (this->data);
	delete (this->columns);
}

/*
 * 	Returns last error code
 */

int SqliteDBResultSet::getLastError()
{
	Debug::debug("int SqliteDBResultSet::getLastError()");
	return this->lastError;
}

/*
 * 	Returns the number of columns of the table
 */
int SqliteDBResultSet::getNColumns()
{
	Debug::debug("int SqliteDBResultSet::getNColumns()");
	return this->columns->getLength();
}

/*
 * 	Returns the number of rows of the table
 */
int SqliteDBResultSet::getNRows()
{
	Debug::debug("int SqliteDBResultSet::getNRows()");
	if(this->columns->getLength()==0)
		return 0;
	int nRows=this->data->getLength()/this->columns->getLength();
	return nRows;
}

/*
 * 	Returns the name of a column in the specified position
 * 	Returns NULL in case of error
 */
char* SqliteDBResultSet::getColumnName(int columnNumber)
{
	Debug::debug("char* SqliteDBResultSet::getColumnName(int columnNumber)");
	if((columnNumber<0)||(columnNumber>=this->columns->getLength()))
	{
		Debug::debug("ERROR: ERROR_INDEX_OUT_OF_RANGE");
		this->lastError = ERROR_INDEX_OUT_OF_RANGE;
		return NULL;
	}
	GenericListNode * columnNode= this->columns->getHead();
	for(int i=0; i<columnNumber;i++)
		columnNode=columnNode->getNext();
	return (char*)(columnNode->getElem());
}

/*
 * 	Returns the value of the field in the specified rows and cols
 * 	Returns NULL in case of error
 */
char* SqliteDBResultSet::getFieldValue(int rowNumber, int columnNumber)
{
	Debug::debug("char* SqliteDBResultSet::getFieldValue(int rowNumber, int columnNumber)");
	
	
	if((columnNumber<0)||(columnNumber>=this->columns->getLength()))
	{
		Debug::debug("ERROR: ERROR_INDEX_OUT_OF_RANGE - int columnNumber");
		this->lastError = ERROR_INDEX_OUT_OF_RANGE;
		return NULL;
	}
	
	if((rowNumber<0)||(rowNumber>=this->getNRows()))
	{
		Debug::debug("ERROR: ERROR_INDEX_OUT_OF_RANGE - int rowNumber");
		this->lastError = ERROR_INDEX_OUT_OF_RANGE;
		return NULL;
	}
	
	int position=(rowNumber*this->getNColumns())+columnNumber;
	GenericListNode * fieldNode= this->data->getHead();
	for(int i=0; i<position;i++)
		fieldNode=fieldNode->getNext();
	return (char*)(fieldNode->getElem());
}


/*
 * 	Adds a column to the table
 * 	WARNING: This method should NEVER BE CALLED
 */
bool SqliteDBResultSet::addColumn(char* columnName)
{
	Debug::debug("bool SqliteDBResultSet::addColumn(char* columnName)");
	GenericListNode* node=new GenericListNode();
	node->setElem((genericListElemT)columnName);
	node->setNotAnObject();
	return this->columns->addNode(node);
}

/*
 * 	Adds a field in the specified row of the table.
 * 	WARNING: This method should NEVER BE CALLED
 */
bool SqliteDBResultSet::addField(char* field)
{
	Debug::debug("bool SqliteDBResultSet::addField(char* field)");
	GenericListNode* node=new GenericListNode();
	node->setElem((genericListElemT)field);
	node->setNotAnObject();
	return this->data->addNode(node);
}

BACK

Personal tools