我需要连接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,但我不知道如何包含它。
答案 0 :(得分:3)
语法错误。 #include
是C 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
(当然您需要适当的编译器和链接器标志),或许可以使用1}这样的行。 p>
CFLAGS += -g -Wall $(shell mysql_config --cflags)
LIBES += $(shell mysql_config --libs)
已添加到您的Makefile
。