将数据添加到 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 以形成

C#从mysql数据库获取锁定代码的关键部分

使用 node.js 将数据添加到 mysql 数据库

如何将具有自动递增值的列添加到 mySql 数据库的表中?

如何将 Mysql JDBC 驱动程序添加到 android studio

如何将mysql添加到服务里