SQLデータベース(テスト)にこのテーブル(結果)を作成しました
CREATE DATABASE `test`;
USE `test`;
CREATE TABLE `results` (
`number` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`temp` float NOT NULL,
`fech` datetime NOT NULL,
PRIMARY KEY (`number`),
UNIQUE KEY `indice_UNIQUE` (`number`)
) ENGINE=InnoDB AUTO_INCREMENT=100;
バッファを読み取り、strtok でいくつかのトークンを取得する次のコードがあります。
int learn_port2(int fd)
{
MYSQL *conn;
MYSQL_RES *res;
MYSQL_RES *res1;
MYSQL_ROW row;
char *server = "127.0.0.1";
char *user = "root";
char *password = "***"; // got tot keep my data secret
char *database = "test";
conn = mysql_init(NULL);
if(!mysql_real_connect(conn, server, user, password, database, 0, NULL, 0))
{
fprintf(stderr, "%s\n", mysql_error(conn));
return -1;
//finish_with_error(conn);
}
int n, i;
char buff[300];
memset(buff, 0, sizeof(buff));
for (int x = 0; x<3; x++)
{
char temp[7] = "";
char* ptr;
int i;
float temp;
n=read(fd,buff,sizeof(buff));
sleep(1);
printf("%s", buff);
printf("\n");
if (buff[37] == 'N' || buff[38] == 'N' || buff[39] == 'N' || buff[40] == 'N' )
{
ptr = strtok(buff, ",=T()");
i = 0;
while (ptr != NULL)
{
if (i == 10)
strcat(temp, ptr); // copies T
ptr = strtok(NULL, ",=T()");
i++;
}
printf("Results: %s\n", temp);
}
char query[]="INSERT INTO results(`temp`,`fech`) VALUES(temp,CURRENT_TIMESTAMP)";
if(mysql_query(conn, query))
{
fprintf(stderr, "%s\n", mysql_error(conn));
return -1;
}
res = mysql_use_result(conn);
}
}
私は次のような結果を持っています
Results:22.34
Results:34.56
この結果をデータベースに保存したいと思います。しかし、これらの結果ではなく、一時列に常にゼロがあります。クエリのどこに問題がありますか? char temp[7] = ""; の宣言に問題があります。おもう。クエリで。