0

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] = ""; の宣言に問題があります。おもう。クエリで。

4

1 に答える 1

1

クエリでは、定数文字列を列に挿入しようとし"temp"ています。MySQL ライブラリは、プログラム内の変数名をどのように認識する必要がありますか?

于 2013-06-06T07:39:32.540 に答える