C程序将数据添加到MYSQL数据库 - 没有添加任何结果

时间:2014-09-30 19:18:36

标签: mysql sql c

我正在尝试构建一个C程序来将数据添加到我的MYSQL数据库中,并且我想在SQL字符串中使用变量。我想在一列中插入UNIX时间(纪元),将能量计的结果插入另一列(双)

即使它没有错误或警告而构建,我也无法将数据插入表中。有人能给我一个在哪里看的暗示吗?

感谢我能得到的所有帮助,因为我在黑暗中笨手笨脚

此致 的Mikael

#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;
}

2 个答案:

答案 0 :(得分:0)

谢谢,我会尽快尝试

此致 的Mikael

答案 1 :(得分:-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中恢复的文本将被放置在消息变量中,然后在应用程序死亡时显示。