看了网上好多的文章,没有一篇是完全合适我使用的,但也不是说他们的作用一点也不合适我,我是综合运用了他们的方法,现在总结了一下到底应该怎样编译这.c文件,以下用select1.c为例,该例子来自falcon的文章:
编译方法之一:gcc select1.c -o select1 `mysql_config --cflags --libs`
下面是我机子上的演示:
root@pipal-desktop:/home/pipal/mysql# gcc select1.c -o select1 `mysql_config --cflags --libs`
root@pipal-desktop:/home/pipal/mysql# ./select1
Connection success
Retrieved 3 Rows
下面是检索出的各条记录信息:
childno fname age
5 flower 10
10 Ann 5
20 花儿 22
其实还有一种编译方法:gcc $(mysql_config --cflags) select1.c -o select $(mysql_config --libs)
这两种方法都是可以的。
还要说两句,在包含头文件的时候有两种包含方式:
标准路径:#include <mysql.h>
绝对路径:#include "/usr/include/mysql/mysql.h"
在此,我要的指出的是,我的mysql.h头文件所在的路径和网上查找到的不一样,因为一直按照网上的尝试,让我郁闷了好久,现在终于成功了,不断学习~
/* select1.c */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "/usr/include/mysql/mysql.h"
int main(int argc, char *argv[])
{
MYSQL my_connection;
MYSQL_RES *res_ptr; /*指向检索的结果存放地址的指针*/
MYSQL_ROW sqlrow; /*返回的记录信息*/
MYSQL_FIELD *fd; /*字段结构指针*/
char aszflds[25][25]; /*用来存放各字段名*/
int res; /*执行查询操作后的返回标志*/
int i,j,k;
mysql_init(&my_connection);
/*mysql_real_connect(&mysql,host,user,passwd,dbname,0,NULL,0) == NULL)*/
if (mysql_real_connect(&my_connection, "localhost", "root", "yourpasswd","cusemysql",0,NULL,CLIENT_FOUND_ROWS))
{
printf("Connection success\n");
res = mysql_query(&my_connection, "select childno,fname,age from children where age<30");
if (res)
{
printf("SELECT error:%s\n",mysql_error(&my_connection));
}
else
{
res_ptr=mysql_store_result(&my_connection);
if(res_ptr)
{
printf("Retrieved %lu Rows\n",(unsigned long)mysql_num_rows(res_ptr));
/*取得各字段名*/
for(i=0;fd=mysql_fetch_field(res_ptr);i++)
strcpy(aszflds[i],fd->name);
/*输出各条记录*/
printf("下面是检索出的各条记录信息:\n");
j=mysql_num_fields(res_ptr);
for(i=0;i<j;i++)
printf("%s\t",aszflds[i]);
printf("\n");
while((sqlrow=mysql_fetch_row(res_ptr)))
{
for(i=0;i<j;i++)
printf("%s\t",sqlrow[i]);
printf("\n");
}
if (mysql_errno(&my_connection))
{
fprintf(stderr,"Retrive error:s\n",mysql_error(&my_connection));
}
}
mysql_free_result(res_ptr);
}
mysql_close(&my_connection);
}
else
{
fprintf(stderr, "Connection failed\n");
if (mysql_errno(&my_connection))
{
fprintf(stderr, "Connection error %d: %s\n",
mysql_errno(&my_connection),
mysql_error(&my_connection));
}
}
return EXIT_SUCCESS;
}
编译方法之一:gcc select1.c -o select1 `mysql_config --cflags --libs`
下面是我机子上的演示:
root@pipal-desktop:/home/pipal/mysql# gcc select1.c -o select1 `mysql_config --cflags --libs`
root@pipal-desktop:/home/pipal/mysql# ./select1
Connection success
Retrieved 3 Rows
下面是检索出的各条记录信息:
childno fname age
5 flower 10
10 Ann 5
20 花儿 22
其实还有一种编译方法:gcc $(mysql_config --cflags) select1.c -o select $(mysql_config --libs)
这两种方法都是可以的。
还要说两句,在包含头文件的时候有两种包含方式:
标准路径:#include <mysql.h>
绝对路径:#include "/usr/include/mysql/mysql.h"
在此,我要的指出的是,我的mysql.h头文件所在的路径和网上查找到的不一样,因为一直按照网上的尝试,让我郁闷了好久,现在终于成功了,不断学习~