rllib  1
 All Classes Files Functions Variables Typedefs Enumerations Enumerator Macros
Public Member Functions | Private Member Functions | Private Attributes | List of all members
rlBussignalDatabase Class Reference

#include <rlbussignaldatabase.h>

Public Member Functions

 rlBussignalDatabase ()
 
virtual ~rlBussignalDatabase ()
 
int openDatabase (const char *database, const char *table)
 
int writeDatabaseInt (const char *item, int val)
 
int writeDatabaseIntArray (const char *item, int *val, int len)
 
int writeDatabaseFloat (const char *item, float val)
 
int writeDatabaseFloatArray (const char *item, float *val, int len)
 
int writeDatabaseString (const char *item, char *val)
 
int readDatabase (const char *item, char *type, char *value)
 
int closeDatabase ()
 

Private Member Functions

int writeDatabaseString (const char *item)
 
int myquery (const char *query)
 

Private Attributes

void * database
 
void * connection
 
char * databaseName
 
char * tableName
 
char buf [rl_PRINTF_LENGTH]
 
char typebuf [16]
 

Detailed Description

Definition at line 21 of file rlbussignaldatabase.h.

Constructor & Destructor Documentation

rlBussignalDatabase::rlBussignalDatabase ( )

Definition at line 30 of file rlbussignaldatabase.cpp.

{
databaseName = NULL;
tableName = NULL;
connection = NULL;
{
mysql_init(&mysql);
}
}
rlBussignalDatabase::~rlBussignalDatabase ( )
virtual

Definition at line 42 of file rlbussignaldatabase.cpp.

{
if(databaseName != NULL) delete [] databaseName;
if(tableName != NULL) delete [] tableName;
}

Member Function Documentation

int rlBussignalDatabase::closeDatabase ( )

Definition at line 197 of file rlbussignaldatabase.cpp.

{
mysql_close((MYSQL *) connection);
return 0;
}
int rlBussignalDatabase::myquery ( const char *  query)
private

Definition at line 146 of file rlbussignaldatabase.cpp.

{
int state,num_rows;
MYSQL_RES *result;
//printf("query=%s\n",query);
state = mysql_query((MYSQL *) connection, query);
if(state != 0)
{
//printf("query failed state=%d query=%s\n",state,query);
return -1;
}
num_rows = mysql_affected_rows((MYSQL *) connection);
result = mysql_store_result((MYSQL *) connection);
mysql_free_result(result);
//printf("num_rows=%d\n",num_rows);
return num_rows;
}
int rlBussignalDatabase::openDatabase ( const char *  database,
const char *  table 
)

Definition at line 49 of file rlbussignaldatabase.cpp.

{
if(databaseName != NULL) delete [] databaseName;
if(tableName != NULL) delete [] tableName;
databaseName = new char[strlen(database)+1];
tableName = new char[strlen(table)+1];
strcpy(tableName,table);
connection = (void *) mysql_real_connect(&mysql, "localhost","bususr","buspw",databaseName,0,0,0);
if(connection == NULL)
{
printf(mysql_error(&mysql));
return -1;
}
return 0;
}
int rlBussignalDatabase::readDatabase ( const char *  item,
char *  type,
char *  value 
)

Definition at line 165 of file rlbussignaldatabase.cpp.

{
char query[1024];
int state,num_rows;
MYSQL_RES *result;
MYSQL_ROW row;
*type = *value = '\0';
sprintf(query,"select * from bus where name = '%s'",item);
//printf("query=%s\n",query);
state = mysql_query((MYSQL *) connection, query);
if(state != 0)
{
//printf("query failed state=%d query=%s\n",state,query);
return -1;
}
num_rows = mysql_affected_rows((MYSQL *) connection);
result = mysql_store_result((MYSQL *) connection);
if(result != NULL)
{
row = mysql_fetch_row(result);
if(row != NULL)
{
if(row[1] != NULL) strcpy(type ,row[1]);
if(row[2] != NULL) strcpy(value,row[2]);
}
mysql_free_result(result);
}
//printf("num_rows=%d\n",num_rows);
return num_rows;
}
int rlBussignalDatabase::writeDatabaseFloat ( const char *  item,
float  val 
)

Definition at line 89 of file rlbussignaldatabase.cpp.

{
sprintf(buf,"%f",val);
sprintf(typebuf,"F1");
return writeDatabaseString(item);
}
int rlBussignalDatabase::writeDatabaseFloatArray ( const char *  item,
float *  val,
int  len 
)

Definition at line 96 of file rlbussignaldatabase.cpp.

{
int i;
char vbuf[80];
buf[0] = '\0';
for(i=0; i<len; i++)
{
sprintf(vbuf,"%f,",val[i]);
if(strlen(buf)+strlen(vbuf) >= sizeof(buf)-1) return -1;
strcat(buf,vbuf);
}
sprintf(typebuf,"F%d",len);
return writeDatabaseString(item);
}
int rlBussignalDatabase::writeDatabaseInt ( const char *  item,
int  val 
)

Definition at line 66 of file rlbussignaldatabase.cpp.

{
sprintf(buf,"%d",val);
sprintf(typebuf,"I1");
return writeDatabaseString(item);
}
int rlBussignalDatabase::writeDatabaseIntArray ( const char *  item,
int *  val,
int  len 
)

Definition at line 73 of file rlbussignaldatabase.cpp.

{
int i;
char vbuf[80];
buf[0] = '\0';
for(i=0; i<len; i++)
{
sprintf(vbuf,"%d,",val[i]);
if(strlen(buf)+strlen(vbuf) >= sizeof(buf)-1) return -1;
strcat(buf,vbuf);
}
sprintf(typebuf,"I%d",len);
return writeDatabaseString(item);
}
int rlBussignalDatabase::writeDatabaseString ( const char *  item,
char *  val 
)

Definition at line 112 of file rlbussignaldatabase.cpp.

{
sprintf(typebuf,"S%d",strlen(val));
rlstrncpy(buf,val,sizeof(buf)-1);
return writeDatabaseString(item);
}
int rlBussignalDatabase::writeDatabaseString ( const char *  item)
private

Definition at line 119 of file rlbussignaldatabase.cpp.

{
int ret;
char sqlbuf[rl_PRINTF_LENGTH];
// Try an UPDATE
ret = snprintf(sqlbuf,sizeof(sqlbuf)-1,"UPDATE %s SET datatype='%s', datavalue='%s' WHERE name='%s'",tableName,typebuf,buf,item);
if(ret < 0)
{
printf("sqlbuf too small in writeDatabaseString\n");
return -1;
}
ret = myquery(sqlbuf);
if(ret > 0) return 0; // success
// Try an INSERT
ret = snprintf(sqlbuf,sizeof(sqlbuf)-1,"INSERT INTO %s VALUES ('%s','%s','%s')",tableName,item,typebuf,buf);
if(ret < 0)
{
printf("sqlbuf too small in writeDatabaseString\n");
return -1;
}
ret = myquery(sqlbuf);
if(ret >= 0) return 0; // success
return -1; // failure
}

Member Data Documentation

char rlBussignalDatabase::buf[rl_PRINTF_LENGTH]
private

Definition at line 41 of file rlbussignaldatabase.h.

void* rlBussignalDatabase::connection
private

Definition at line 38 of file rlbussignaldatabase.h.

void* rlBussignalDatabase::database
private

Definition at line 37 of file rlbussignaldatabase.h.

char* rlBussignalDatabase::databaseName
private

Definition at line 39 of file rlbussignaldatabase.h.

char* rlBussignalDatabase::tableName
private

Definition at line 40 of file rlbussignaldatabase.h.

char rlBussignalDatabase::typebuf[16]
private

Definition at line 42 of file rlbussignaldatabase.h.


The documentation for this class was generated from the following files: