0

我只是在学习 mysql 。在这里,我用 c 编写了非常简单的程序。我需要将它连接到mysql数据库。我的意思是说输出必须存储在 mysql 数据库中。我该怎么做。我提到了 mysql 教程,但我无法得到答案。所以想法将开始用一个简单的程序来实现。请有人指导我。谢谢

#include<stdio.h>
int main( ) 
{ 
int num1, num2, sum; 
printf("Enter a two integers: "); 
scanf("%d %d",&num1,&num2); num1=num1+num2; 
printf("Sum: %d",num1); 
return 0;
} 
4

2 回答 2

1
#include <mysql.h>
#include <stdio.h>
main() {
   MYSQL *conn;
   MYSQL_RES *res;
   MYSQL_ROW row;
   char *server = "localhost";
   char *user = "root";
   char *password = "PASSWORD"; /* set me first */
   char *database = "mysql";
   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, "show tables")) {
      fprintf(stderr, "%s\n", mysql_error(conn));
      exit(1);
   }
   res = mysql_use_result(conn);
   /* output table name */
   printf("MySQL Tables in mysql database:\n");
   while ((row = mysql_fetch_row(res)) != NULL)
      printf("%s \n", row[0]);
   /* close connection */
   mysql_free_result(res);
   mysql_close(conn);
}

有关详细说明,请阅读此处http://www.cyberciti.biz/tips/linux-unix-connect-mysql-c-api-program.html

http://dev.mysql.com/downloads/connector/c/

于 2013-11-04T11:52:39.980 回答
1

这是我不久前编写的一个程序的复制粘贴(或多或少),该程序使用他们的 C API 连接到 MySQL:

#include <stdio.h>
#include <stdlib.h>
#include <my_global.h>
#include <mysql.h>

typedef struct
{
    char host[20];
    char user[25];
    char pass[50];
}DB_CONN_PARAMS;

MYSQL * connect_db(DB_CONN_PARAMS *params)
{
    MYSQL *connection = mysql_init(NULL);//init connection
    if (connection == NULL)
    {//check init worked
        fprintf(stderr, "%s\n", mysql_error(connection));
        exit(EXIT_FAILURE):
    }
    //connect:
    if (mysql_real_connect(
            connection,
            params->host,
            params->user,
            params->pass,
            NULL,0,NULL,0)
        ==NULL)
    {//connection failed?
        fprintf(stderr, "%s\n", mysql_error(connection));
        mysql_close(connection);
        exit(EXIT_FAILURE):
    }
    return connection;
}

int main()
{
    MYSQL *db;
    DB_CONN_PARAMS *params = calloc(1,sizeof(DB_CONN_PARAMS));
    //just an alternative way of passing connection params, find a struct easier
    params->host = "127.0.0.1";
    params->user = "root";
    params->pass = "mySuperSecretPass";
    MYSQL * connect_db(DB_CONN_PARAMS *params);
    db = connect_db(params);
    //we don't need the struct anymore
    free(params);
    params = NULL;
    //do stuff
    mysql_close(db);//close connection, of course!
    return EXIT_SUCCESS;
}

我的大部分灵感来自MySQL 网站上的代码示例。他们确实工作,诚实。
编译时,您必须牢记一些事情。上面的代码应该像这样使用 gcc 编译得很好:

gcc yourCode.c -std=c99 `mysql_config --cflags --libs` -o yourBin

当涉及到执行查询时,如您所愿,我建议您将 mysql.com 上的 C-API 文档添加为书签。
如果不使用准备好的语句,您的代码最终可能看起来像:

int main()
{
    MYSQL *db;
    char query_str[150];//query string here
    int num1, num2, q_status;//your ints, + 1 to check success of query
    DB_CONN_PARAMS *params = calloc(1,sizeof(DB_CONN_PARAMS));
    params->host = "127.0.0.1";
    params->user = "root";
    params->pass = "mySuperSecretPass";
    MYSQL * connect_db(DB_CONN_PARAMS *params);
    db = connect_db(params);
    free(params);
    //get numbers
    scanf("%d %d", num1, num2);
    //insert num1, num2 and sum into query string
    sprintf(query_str,
            "INSERT INTO your_db.table (num1, num2, sum) VALUES (%d,%d,%d);",
            num1,num2,(num1 + num2)
    );
    //run our query
    q_status = mysql_query(db, query_str);
    if (q_status)
    {//insert failed
        fprintf(stderr, "Failed to execute \"%s\"\n%s\n", query_str, mysql_error(db));
        mysql_close(db);
        exit(EXIT_FAILURE);
    }
    //YaY, it worked!
    printf("Insert successful:\nQuery used: \"%s\"\n", query_str);
    mysql_close(db);
    return EXIT_SUCCESS;
}

但这忽略了结果集、准备好的语句以及所有其他在实际程序中有用的东西。请浏览我在答案中链接到的文档,这并不难理解,有时只是有点小题大做,MySQL C API ...

于 2013-11-04T12:14:04.420 回答