将mysql数据库查询存储为C中的变量

时间:2014-11-01 20:21:47

标签: mysql c unix

我是C的新手,并且一直在尝试从mysql中获取结果并将其存储为稍后要调用的变量。到目前为止,我已设法连接到我的数据库,获取结果并将其打印到终端。但我不知道如何将它存储为变量。非常感谢任何帮助。

这是我到目前为止所做的:

    #include <mysql.h>
    #include <stdio.h>
    main() {
    MYSQL *conn;
    MYSQL_RES *res;
    MYSQL_ROW row;
    char *server = "localhost";
    char *user = "root";
    char *password = ""; /* set me first */
    char *database = "develop";
    conn = mysql_init(NULL);
    /* Connect to database */
    if (!mysql_real_connect(conn, server,
         user, password, database, 0, NULL, 0)) {
      fprintf(stderr, "%s\n", mysql_error(conn));
      exit(1);
   }
   /* send SQL query */
   if (mysql_query(conn, "SELECT * FROM action ")) {
      fprintf(stderr, "%s\n", mysql_error(conn));
      exit(1);
   }
   res = mysql_use_result(conn);
   /* output table name */
   printf("MySQL Data:\n");
   while ((row = mysql_fetch_row(res)) != NULL)
      printf("%s \n", row[0]);
   /* close connection */
   mysql_free_result(res);
   mysql_close(conn);
}

谢谢,

小连

1 个答案:

答案 0 :(得分:0)

与在C中存储任何变量的方式相同。由于您可以将信息输出到控制台,因此您已经完成了困难。要存储变量,请分配它。在C中,您声明类型,名称,然后声明您的SQL语句。 e.g。

#include <sys/time.h>
#include <stdio.h>
#include <mysql.h>

int main(char **args) {
    MYSQL_RES *result;
    MYSQL_ROW row;
    MYSQL *connection, mysql;
    int state;

以上是变量声明的位置。说*结果的部分;是PHP等价的$ result

他正在连接数据库。

     /* connect to the mySQL database at athens.imaginary.com */
    mysql_init(&mysql);
    connection = mysql_real_connect(&mysql,
                                    "athens.imaginary.com",
                                    0, 0,
                                    "db_test", 0, 0);
    /* check for a connection error */
    if( connection == NULL ) {
        /* print the error message */
        printf(mysql_error(&mysql));
        return 1;
    }
    state = mysql_query(connection, 
                        "SELECT test_id, test_val FROM test");
    if( state != 0 ) {
        printf(mysql_error(connection));
        return 1;
    }
    /* must call mysql_store_result() before we can issue any
     * other query calls
     */  

分配结果,打印数组

    result = mysql_store_result(connection);
    printf("Rows: %d\n", mysql_num_rows(result));
    /* process each row in the result set */
    while( ( row = mysql_fetch_row(result)) != NULL ) {
        printf("id: %s, val: %s\n", 
               (row[0] ? row[0] : "NULL"), 
               (row[1] ? row[1] : "NULL"));
    }
    /* free the result set */
    mysql_free_result(result);
    /* close the connection */
    mysql_close(connection);

关闭PHP说的连接:$ conn = null;

    printf("Done.\n");
}

为此来源添加了备注:http://docstore.mik.ua/orelly/linux/sql/ch13_01.htm