将数据添加到 MYSQL 数据库的 C 程序 - 未添加结果
Posted
技术标签:
【中文标题】将数据添加到 MYSQL 数据库的 C 程序 - 未添加结果【英文标题】:C program to add data to MYSQL database - No results added 【发布时间】:2014-09-30 19:18:35 【问题描述】:我正在尝试构建一个 C 程序来将数据添加到我的 mysql 数据库中,并且我想在 SQL 字符串中使用变量。我想将 UNIX 时间(纪元)插入一列,将能量计的结果插入另一列(双精度)
即使它构建时没有错误或警告,我也无法让它将数据插入表中。有人能告诉我在哪里看吗?
感谢我能得到的所有帮助,因为我在黑暗中摸不着头脑
问候, 迈克尔
#include <stdio.h>
#include <stdint.h>
#include <string.h>
#include <time.h>
#include <math.h>
#include <mysql.h>
#include <my_global.h>
#include <stdlib.h> // For exit function
int loggingok; // Global var indicating logging on or off
double result = 323.234567; //Debug
double actual_time_sec;
void calculate_watts(void)
MYSQL *conn = mysql_init(NULL);
char *server = "localhost";
char *user = "root";
char *password = "password"; /* set me first */
char *database = "power";
char SQL_String[100];
char time_char[11];
char result_char[11];
time_t actual_time;
actual_time = time(0);
actual_time_sec = difftime(actual_time,0);
sprintf(time_char,"%g",actual_time_sec);
sprintf(result_char,"%g",result);
printf("Tid: %g\n",actual_time_sec); //Debug
printf("Resultat: %g\n", result); //Debug
strcpy(SQL_String, "INSERT INTO consumption(time,consumption) VALUES(");
strcat(SQL_String, time_char);
strcat(SQL_String, ",");
strcat(SQL_String, result_char);
strcat(SQL_String, ")");
printf("SQL: %s", SQL_String); //Debug
// SQL_String = "INSERT INTO consumption(time,consumption) VALUES('"+ actual_time_sec +"',"+ result +")";
if (!mysql_real_connect(conn, server, user, password, database, 0, NULL, 0))
fprintf(stderr, "%s\n", mysql_error(conn));
exit(1);
if (mysql_query(conn, SQL_String))
fprintf(stderr, "%s\n", mysql_error(conn));
exit(1);
int main (int argc, char *argv[])
printf(argv[1]); //Debug
if(strcmp(argv[1], "db"))
loggingok=1;
printf("Efergy E2 Classic decode \n\n");
calculate_watts();
else
loggingok=0;
return 0;
【问题讨论】:
按照你的逻辑,不应该是if (!mysql_query(conn, SQL_String))
吗?
【参考方案1】:
这是一个很好的例子......
http://php.net/mysql_query。注意这里 sprintf 的用法。第二个和第三个参数与 sprintf 一起使用,将这两个参数中的数据准确地放在 SQL 语句中需要它们的位置。
$query = sprintf("SELECT firstname, lastname, address, age FROM friends
WHERE firstname='%s' AND lastname='%s'",
mysql_real_escape_string($firstname),
mysql_real_escape_string($lastname));
// Perform Query
$result = mysql_query($query);
// Check result
// This shows the actual query sent to MySQL, and the error. Useful for debugging.
if (!$result)
$message = 'Invalid query: ' . mysql_error() . "\n";
$message .= 'Whole query: ' . $query;
die($message);
请注意 if (!$result) 的用法,它可以让您快速验证是否成功。如果发现错误,则将从 mysql_error 返回的文本放入 message 变量中,然后在应用程序终止时显示。
【讨论】:
以上是关于将数据添加到 MYSQL 数据库的 C 程序 - 未添加结果的主要内容,如果未能解决你的问题,请参考以下文章
将数据从 c#form (visual studio) 添加到 mysql 数据库,并且需要重新检索新的记录 ID 以形成