"无法包含mysql.h"在C程序中

时间:2012-02-25 15:32:46

标签: mysql c windows

  

可能重复:
  How to make #include <mysql.h> work?

我需要连接C和mysql

这是我的程序

#include <stdio.h>
#include <mysql.h>
#define host "localhost"
#define username "root"
#define password "viswa"
#define database "dbase"
MYSQL *conn;

int main()
{

     MYSQL_RES *res_set;
     MYSQL_ROW row;

     conn = mysql_init(NULL);

    if( conn == NULL )
     {                                               `
        printf("Failed to initate MySQL\n");
        return 1;
    }


    if( ! mysql_real_connect(conn,host,username,password,database,0,NULL,0) )
    {
        printf( "Error connecting to database: %s\n", mysql_error(conn));
        return 1;
    }

    unsigned int i;


    mysql_query(conn,"SELECT name, email, password FROM users");


    res_set = mysql_store_result(conn);


    unsigned int numrows = mysql_num_rows(res_set);
    unsigned int num_fields = mysql_num_fields(res_set);



    while ((row = mysql_fetch_row(res_set)) != NULL)
    {

        for(i = 0; i < num_fields; i++)
        {
             printf("%s\t", row[i] ? row[i] : "NULL");
        }
        printf("\n");

    }


    mysql_close(conn);
    return 0;

}

我收到错误“无法包含mysql.h”。

我使用的是Windows 7,Turbo C,mysql,我下载了mysql-connector-c-noinstall-6.0.2-win32-vs2005,但我不知道如何包含它。

1 个答案:

答案 0 :(得分:3)

语法错误。 #includeC preprocessor指令,而不是语句(因此不应以分号结尾)。你应该使用

#include <mysql.h>

你可能需要

#include <mysql/mysql.h>

或将-I /some/dir选项传递给编译器(/some/dir替换为包含mysql.h标题的目录。)

同样地,您的#define很可能不会以分号结束,您可能需要

#define username "root"
#define password "viswa"
#define database "dbase"

我强烈建议您阅读一本关于C编程的好书。您可能想要检查源代码的预处理形式;使用gcc时,您可以将其作为gcc -C -E yoursource.c调用,以获取预处理的表单。

我还强烈建议启用警告和调试信息(例如GCC的gcc -Wall -g)。了解如何使用特定的编译器。另请了解如何使用调试器(例如gdb)。研究现有的C程序(特别是自由软件)。

您应该学习如何配置编译器以使用额外的包含目录,以及链接额外的库。

N.B。使用Linux发行版,您只需要安装相应的软件包,并在我们的mysql_config中使用Makefile(当然您需要适当的编译器和链接器标志),或许可以使用

CFLAGS += -g -Wall $(shell  mysql_config --cflags)
LIBES += $(shell mysql_config --libs)

已添加到您的Makefile