|
rllib
1
|
#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] |
Definition at line 21 of file rlbussignaldatabase.h.
| rlBussignalDatabase::rlBussignalDatabase | ( | ) |
Definition at line 30 of file rlbussignaldatabase.cpp.
{
databaseName = NULL;
tableName = NULL;
connection = NULL;
if(mysql_is_initialized == 0)
{
mysql_init(&mysql);
mysql_is_initialized = 1;
}
}
| rlBussignalDatabase::~rlBussignalDatabase | ( | ) | [virtual] |
Definition at line 42 of file rlbussignaldatabase.cpp.
{
closeDatabase();
if(databaseName != NULL) delete [] databaseName;
if(tableName != NULL) delete [] tableName;
}
| 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];
strcpy(databaseName,database);
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 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 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
}
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.
1.7.5.1