Code:
//#define DELETEIT
#include <stdio.h>
#include <string.h>
#include <winsock2.h>
#include <mysql.h>
MYSQL mysql;
MYSQL *con;
MYSQL *init;
MYSQL_ROW row;
MYSQL_RES *res;
#define CONNECT_HOST "localhost"
#define CONNECT_USER "root"
#define CONNECT_PSW "new-password"
#define CONNECT_DB "wireless"
#define CONNECT_TABLE "master"
#define E_OPENDB -1
#define E_OK 0
#define E_NOMEM 1
#define E_NOCONN 2
int open_db_connection (char * pHost)
{
init = mysql_init (NULL);
if (init == NULL)
{
printf("Init failed, insufficient memory \n");
return E_NOMEM;
}
con = mysql_real_connect (init, CONNECT_HOST, CONNECT_USER,
CONNECT_PSW, NULL, 0, NULL, 0);
if (con == NULL)
{
printf("Connnection failed\n");
return E_NOCONN;
}
return E_OK;
}
void PrintLine (void)
//----------------------------------------------------------
{
MYSQL_FIELD *field;
unsigned int i, j;
mysql_field_seek(res,0);
for ( i = 0; i < mysql_num_fields(res); i++ )
{
field = mysql_fetch_field(res);
for ( j = 0; j < field->max_length + 2; j++ )
fputc('=',stdout);
}
}
void PrintTable(void)
//----------------------------------------------------------
{
MYSQL_FIELD *field;
unsigned int i, j, column_length;
mysql_field_seek(res,0);
for ( i = 0; i < mysql_num_fields(res); i++ )
{
field = mysql_fetch_field(res);
column_length = strlen(field->name);
if ( column_length < field->max_length )
column_length = field->max_length;
if ( column_length < 4 && !IS_NOT_NULL(field->flags) )
column_length = 4;
field->max_length = column_length;
}
PrintLine();
fputc('\n',stdout);
mysql_field_seek(res,0);
for ( i = 0; i < mysql_num_fields(res); i++ )
{
field = mysql_fetch_field(res);
fprintf(stdout," %-*s ",field->max_length,field->name);
}
fputc('\n',stdout);
PrintLine();
fputc('\n',stdout);
while ((row = mysql_fetch_row(res)) != NULL)
{
mysql_field_seek(res,0);
for ( i = 0; i < mysql_num_fields(res); i++ )
{
field = mysql_fetch_field(res);
if ( row[i] == NULL )
fprintf(stdout," %-*s ",field->max_length,"NULL");
else
if ( IS_NUM(field->type) )
fprintf(stdout," %*s ",field->max_length,row[i]);
else
fprintf(stdout," %-*s ",field->max_length,row[i]);
}
fputc('\n',stdout);
}
fputc('\n',stdout);
}
int main(void)
{
int err;
char szTemp[4096] = {0};
if ((err = open_db_connection (NULL)) != E_OK)
{
printf ("open_db_connection () fails with %d!\n", err);
return E_OPENDB;
}
#ifdef DELETEIT
sprintf(szTemp, "DROP DATABASE %s", CONNECT_DB);
if ( mysql_real_query(init,szTemp,strlen(szTemp)) != 0 )
printf("Database delete failed\n");
else printf("database delete successful\n");
#endif
sprintf( szTemp, "CREATE DATABASE %s", CONNECT_DB);
if ( mysql_real_query(init,szTemp,strlen(szTemp)) != 0 )
{
printf("Failed to create database.\n"
"Error code: %u\n"
"Description: %s\n", mysql_errno(init), mysql_error(init));
}
else printf("database create successful\n");
if(mysql_select_db (con, CONNECT_DB) != 0)
{
printf("Failed to select database.\n"
"Error code: %u\n"
"Description: %s\n", mysql_errno(init), mysql_error(init));
}
else printf("database selected\n");
sprintf(szTemp,"CREATE TABLE %s (epoch INT, macTS REAL, macAddr VARCHAR(24), seqNum INT, sigStr INT, noise INT, attna INT, pcktLen INT)",CONNECT_TABLE);
if ( mysql_real_query(init,szTemp,strlen(szTemp)) != 0 )
{
printf("Failed to create table.\n"
"Error code: %u\n"
"Description: %s\n", mysql_errno(init), mysql_error(init));
}
else printf("database table create successful\n");
struct Data
{
unsigned long epoch;
char macTS[24];
char macAddr[24];
int seqNum;
int sigStr;
int noise;
int attna;
int pcktLen;
};
struct Data csvData = {1196741136,"1.01466E+19" ,"00:0F:F7:BE:FF:80" ,2307,-74,-96,1,177};
sprintf(szTemp, "INSERT INTO %s.%s(epoch,macTS,macAddr,seqNum,sigStr,noise,attna,pcktLen) VALUES (%d, '%s','%s', %d, %d, %d, %d, %d )"
,CONNECT_DB, CONNECT_TABLE ,csvData.epoch, csvData.macTS, csvData.macAddr, csvData.seqNum,csvData.sigStr,csvData.noise,csvData.attna,csvData.pcktLen );
if ( mysql_real_query(init,szTemp,strlen(szTemp)) != 0 )
{
printf("Failed to insert data\n"
"Error code: %u\n"
"Description: %s\n", mysql_errno(init), mysql_error(init));
}
else printf("Insert successful\n");
//Display record(s) in database
sprintf(szTemp,"select * from %s.%s",CONNECT_DB,CONNECT_TABLE);
mysql_query(con,szTemp);
res = mysql_store_result(con);
PrintTable();
mysql_close (con);
return 0;
}