#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.
00031 { 00032 databaseName = NULL; 00033 tableName = NULL; 00034 connection = NULL; 00035 if(mysql_is_initialized == 0) 00036 { 00037 mysql_init(&mysql); 00038 mysql_is_initialized = 1; 00039 } 00040 }
| rlBussignalDatabase::~rlBussignalDatabase | ( | ) | [virtual] |
Definition at line 42 of file rlbussignaldatabase.cpp.
00043 { 00044 closeDatabase(); 00045 if(databaseName != NULL) delete [] databaseName; 00046 if(tableName != NULL) delete [] tableName; 00047 }
| int rlBussignalDatabase::closeDatabase | ( | ) |
Definition at line 197 of file rlbussignaldatabase.cpp.
00198 { 00199 mysql_close((MYSQL *) connection); 00200 return 0; 00201 }
| int rlBussignalDatabase::myquery | ( | const char * | query | ) | [private] |
Definition at line 146 of file rlbussignaldatabase.cpp.
00147 { 00148 int state,num_rows; 00149 MYSQL_RES *result; 00150 00151 //printf("query=%s\n",query); 00152 state = mysql_query((MYSQL *) connection, query); 00153 if(state != 0) 00154 { 00155 //printf("query failed state=%d query=%s\n",state,query); 00156 return -1; 00157 } 00158 num_rows = mysql_affected_rows((MYSQL *) connection); 00159 result = mysql_store_result((MYSQL *) connection); 00160 mysql_free_result(result); 00161 //printf("num_rows=%d\n",num_rows); 00162 return num_rows; 00163 }
| int rlBussignalDatabase::openDatabase | ( | const char * | database, | |
| const char * | table | |||
| ) |
Definition at line 49 of file rlbussignaldatabase.cpp.
00050 { 00051 if(databaseName != NULL) delete [] databaseName; 00052 if(tableName != NULL) delete [] tableName; 00053 databaseName = new char[strlen(database)+1]; 00054 strcpy(databaseName,database); 00055 tableName = new char[strlen(table)+1]; 00056 strcpy(tableName,table); 00057 connection = (void *) mysql_real_connect(&mysql, "localhost","bususr","buspw",databaseName,0,0,0); 00058 if(connection == NULL) 00059 { 00060 printf(mysql_error(&mysql)); 00061 return -1; 00062 } 00063 return 0; 00064 }
| int rlBussignalDatabase::readDatabase | ( | const char * | item, | |
| char * | type, | |||
| char * | value | |||
| ) |
Definition at line 165 of file rlbussignaldatabase.cpp.
00166 { 00167 char query[1024]; 00168 int state,num_rows; 00169 MYSQL_RES *result; 00170 MYSQL_ROW row; 00171 00172 *type = *value = '\0'; 00173 sprintf(query,"select * from bus where name = '%s'",item); 00174 //printf("query=%s\n",query); 00175 state = mysql_query((MYSQL *) connection, query); 00176 if(state != 0) 00177 { 00178 //printf("query failed state=%d query=%s\n",state,query); 00179 return -1; 00180 } 00181 num_rows = mysql_affected_rows((MYSQL *) connection); 00182 result = mysql_store_result((MYSQL *) connection); 00183 if(result != NULL) 00184 { 00185 row = mysql_fetch_row(result); 00186 if(row != NULL) 00187 { 00188 if(row[1] != NULL) strcpy(type ,row[1]); 00189 if(row[2] != NULL) strcpy(value,row[2]); 00190 } 00191 mysql_free_result(result); 00192 } 00193 //printf("num_rows=%d\n",num_rows); 00194 return num_rows; 00195 }
| int rlBussignalDatabase::writeDatabaseFloat | ( | const char * | item, | |
| float | val | |||
| ) |
Definition at line 89 of file rlbussignaldatabase.cpp.
00090 { 00091 sprintf(buf,"%f",val); 00092 sprintf(typebuf,"F1"); 00093 return writeDatabaseString(item); 00094 }
| int rlBussignalDatabase::writeDatabaseFloatArray | ( | const char * | item, | |
| float * | val, | |||
| int | len | |||
| ) |
Definition at line 96 of file rlbussignaldatabase.cpp.
00097 { 00098 int i; 00099 char vbuf[80]; 00100 00101 buf[0] = '\0'; 00102 for(i=0; i<len; i++) 00103 { 00104 sprintf(vbuf,"%f,",val[i]); 00105 if(strlen(buf)+strlen(vbuf) >= sizeof(buf)-1) return -1; 00106 strcat(buf,vbuf); 00107 } 00108 sprintf(typebuf,"F%d",len); 00109 return writeDatabaseString(item); 00110 }
| int rlBussignalDatabase::writeDatabaseInt | ( | const char * | item, | |
| int | val | |||
| ) |
Definition at line 66 of file rlbussignaldatabase.cpp.
00067 { 00068 sprintf(buf,"%d",val); 00069 sprintf(typebuf,"I1"); 00070 return writeDatabaseString(item); 00071 }
| int rlBussignalDatabase::writeDatabaseIntArray | ( | const char * | item, | |
| int * | val, | |||
| int | len | |||
| ) |
Definition at line 73 of file rlbussignaldatabase.cpp.
00074 { 00075 int i; 00076 char vbuf[80]; 00077 00078 buf[0] = '\0'; 00079 for(i=0; i<len; i++) 00080 { 00081 sprintf(vbuf,"%d,",val[i]); 00082 if(strlen(buf)+strlen(vbuf) >= sizeof(buf)-1) return -1; 00083 strcat(buf,vbuf); 00084 } 00085 sprintf(typebuf,"I%d",len); 00086 return writeDatabaseString(item); 00087 }
| int rlBussignalDatabase::writeDatabaseString | ( | const char * | item | ) | [private] |
Definition at line 119 of file rlbussignaldatabase.cpp.
00120 { 00121 int ret; 00122 char sqlbuf[rl_PRINTF_LENGTH]; 00123 00124 // Try an UPDATE 00125 ret = snprintf(sqlbuf,sizeof(sqlbuf)-1,"UPDATE %s SET datatype='%s', datavalue='%s' WHERE name='%s'",tableName,typebuf,buf,item); 00126 if(ret < 0) 00127 { 00128 printf("sqlbuf too small in writeDatabaseString\n"); 00129 return -1; 00130 } 00131 ret = myquery(sqlbuf); 00132 if(ret > 0) return 0; // success 00133 00134 // Try an INSERT 00135 ret = snprintf(sqlbuf,sizeof(sqlbuf)-1,"INSERT INTO %s VALUES ('%s','%s','%s')",tableName,item,typebuf,buf); 00136 if(ret < 0) 00137 { 00138 printf("sqlbuf too small in writeDatabaseString\n"); 00139 return -1; 00140 } 00141 ret = myquery(sqlbuf); 00142 if(ret >= 0) return 0; // success 00143 return -1; // failure 00144 }
| int rlBussignalDatabase::writeDatabaseString | ( | const char * | item, | |
| char * | val | |||
| ) |
Definition at line 112 of file rlbussignaldatabase.cpp.
00113 { 00114 sprintf(typebuf,"S%d",strlen(val)); 00115 rlstrncpy(buf,val,sizeof(buf)-1); 00116 return writeDatabaseString(item); 00117 }
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.6.3