PDA

Visualizza la versione completa : [C] Problema inserimento dati nel mysql


taba93
10-11-2009, 16:42
Salve a tutti,
ho un problema con l'inserimento di alcuni dati ricevuti da una postazione client in un db mysql.
in pratica il problema quando vado a inserire i dati nel db in questa riga:

mysql_query(conn,
"INSERT INTO dati (x, y, temperature) VALUES ( 'x', 'y', 'temp')");

}

in pratica mi inserisce i valori 0,0,0 perch non vede x,y,temp come numeri ma come stringhe.
il codice completo il seguente:




#include <mysql/my_global.h>
#include <mysql/mysql.h>
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <netdb.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>

#define QUEUE_LEN 20
#define BUFF_SIZE 20

int main()
{
MYSQL *conn; /*comandi per inizializzare mysql */
MYSQL_RES *result;
MYSQL_ROW row;
int i = 1;
int temp; /*inizializza la varabile di temperatura */
int x; /* inizializza la varabile x */
int y; /* inizializza la varabile y */
int sk; /* Socket per la comunicazione del server */
int client; /* Socket per la comunicazione con il client */
int ret; /* Ritorno delle funzioni */
int len; /* Dimensione strutture dati */
struct sockaddr_in s_addr; /* Indirizzo Server */
struct sockaddr_in c_addr; /* Indirizzo Client */

int buffer[BUFF_SIZE]; /* definisco l'arrey Buffer di Ricezione dati */

int port = 2001; /* Porta del Server */
char address[] = "127.0.0.1"; /* Indirizzo IP del Server */


/* Creazione del socket */
sk = socket(AF_INET, SOCK_STREAM, 0);

while (i == 1)
{

/* Inizializzazione indirizzo del Server */
bzero(&s_addr, sizeof(s_addr));
s_addr.sin_family = AF_INET;
s_addr.sin_port = htons(port);
s_addr.sin_addr.s_addr = htonl(INADDR_ANY);


/* Bind del socket */
ret = bind(sk, (struct sockaddr*) &s_addr, sizeof(s_addr) );


/* Creazione coda di richieste di connessione */
ret = listen(sk, QUEUE_LEN);


/* Inizializzazione indirizzo del Client */
bzero(&c_addr, sizeof(c_addr));
len = sizeof(c_addr);

/* Accept connessioni con i client */
client = accept(sk, (struct sockaddr*)&c_addr, &len );

/* Ricezione Dati */
ret = recv(client, buffer, BUFF_SIZE, 0);


/* scomposizione array in variabili indipendenti */
int x = buffer[0];
int y = buffer[1];
int temp = buffer[2];

/*controllo dati ricevuti */
printf("Server Receive: x= %d\n", x);
printf("Server Receive: y= %d\n", y);
printf("Server Receive: temp= %d\n", temp);

/* scrittura in mysql */
conn = mysql_init(NULL);

if(!mysql_real_connect(conn, "localhost", "root", "pass", "rrobotics", 0, NULL, 0))
{

printf("cannot connect");
}

else{

mysql_query(conn,
"INSERT INTO dati (x, y, temperature) VALUES ( 'x', 'y', 'temp')");

}

mysql_close(conn);

/* Chiusura del socket di comunicazione con il Client */
close(client);
}

}

in pratica a me servirebbe riuscire ad inserire queste variabili che sono dei numeri nel db.
c' qualcuno che mi pu aiutare? grazie!!! :ciauz: :ciauz: :ciauz: :ciauz:

sebaldar
11-11-2009, 18:10
prova cos



char str[lunghezza_opportuna];

sprintf(str, "INSERT INTO dati (x, y, temperature) VALUES (%d,%d,%d)", x, y, temp);

mysql_query(conn,
str);

taba93
12-11-2009, 22:10
grazie mille!!! funziona alla perfezione...grazie ancora per la dritta!! :ciauz:

Loading