首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > 其他数据库 >

Ubuntu gutsy上c语言操作mysql数据库的编译方法

2012-09-02 
Ubuntu gutsy下c语言操作mysql数据库的编译方法看了网上好多的文章,没有一篇是完全合适我使用的,但也不是

Ubuntu gutsy下c语言操作mysql数据库的编译方法
看了网上好多的文章,没有一篇是完全合适我使用的,但也不是说他们的作用一点也不合适我,我是综合运用了他们的方法,现在总结了一下到底应该怎样编译这.c文件,以下用select1.c为例,该例子来自falcon的文章:

/*  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头文件所在的路径和网上查找到的不一样,因为一直按照网上的尝试,让我郁闷了好久,现在终于成功了,不断学习~

热点排行