I 'm doing an data logger project where i get data from the sensors and store them in a database . I'm using mysql database which is hosted on Beaglebone (Arm linux based computer ),i'm using C api's to work with the mysql database.
I poll the sensors with a sample time of 5 seconds and get data from them and store them onto the tables as per the below code , the code does what is meant to do i just wanted to know whether there's an efficient way of updating the tables .Below is the code
#include <my_global.h>
#include <mysql.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
int main(int argc,char *argv[])
{
/* creates a new mysql object */
MYSQL *con = mysql_init(NULL);
float tempval = 0;
float humidval=0;
char query[100]={0};
if (con == NULL)
{
fprintf(stderr, "%s\n", mysql_error(con));
exit(1);
}
/* connect to db */
if(mysql_real_connect(con,"localhost","root","passwrd12#",0,0,0,0)==NULL)
{
fprintf(stderr, "%s\n", mysql_error(con));
mysql_close(con);
exit(1);
}
/* Select the db */
if(mysql_select_db(con,"TestDb")!=0)
{
fprintf(stderr,"%s \n",mysql_error(con));
mysql_close(con);
exit(1);
}
while(1)
{
//Read temperature and humidity sensors on pin1 and pin2
tempval=Read_Sensordata(1);
humidval=Read_Sensordata(2)
memset(query,0,sizeof query);
/* update the temperature and humidity values */
sprintf(query,"UPDATE Datavalues SET Temperature = %f,Humidity = %f,Time=NOW() WHERE Rownum=0",tempval,humidval);
if (mysql_query(con,query))
{
fprintf(stderr, "%s\n", mysql_error(con));
mysql_close(con);
exit(1);
}
usleep(5000000);
}
mysql_close(con);
exit(0);
}