| 
		    
                       环境:SCO OpenServer 5.0.6, mysql 3.23.42,gcc 2.95.2      备注:gcc已集成了支持mysql的函数,可以在C源代码中直接调用数据库,不用像informix那样要用ESQL/C嵌入调用.      1.makefile文件 
  CC=gcc      LIB=-lcurses -lsocket -lmysqlclient -lm -lc -lnsl      all:gspser        gspser:get_data.o getfileargv.o        $(CC) -o gj get_data.o getfileargv.o $(LIB)      get_data.o:get_data.c        $(CC) -c get_data.c      getfileargv.o:getfileargv.c        $(CC) -c getfileargv.c      clean:        rm -f *.o
    2.get_data.c文件      #include <stdio.h>     #include </usr/local/mysql/include/mysql.h>     #define DBCFG "./gsp.conf"      main()     {      char dbhost[32],dbuser[16],dbpasswd[16],db[16];      char query[256];      int count;       MYSQL * mysql; /*表示对一个数据库连接的句柄*/      MYSQL_RES *mysql_res; /*代表返回行的一个查询的结果*/      MYSQL_ROW mysql_row; /*字符串数组*/       my_ulonglong rows;       /*该类型用于行编号和mysql_affected_rows()、mysql_num_rows()和mysql_insert_id()      */       getfileargv(DBCFG,"DBHOST",dbhost); /*从文件中读取gsp.conf*/      getfileargv(DBCFG,"DBUSER",dbuser);      getfileargv(DBCFG,"DBPASSWD",dbpasswd);      getfileargv(DBCFG,"DATABASE",db);       if(!(mysql=mysql_init(NULL))) /*获得或初始化一个MYSQL结构*/      {      printf("mysql_init失败!");      mysql_close(mysql);      exit(0);      }       if(!mysql_real_connect(mysql,dbhost,dbuser,dbpasswd,db,0,NULL,0))      {     /*连接一个MySQL服务器*/       printf("连接服务器失败,请联系系统管理人员!");       mysql_close(mysql);       exit(0);      }       strcpy(query,"select * from zuh where jgm=\"11110501\" order by zuh");       if(mysql_query(mysql,query)) /*执行指定为一个空结尾的字符串的SQL查询*/      {     printf("mysql_query出错!");       mysql_close(mysql);       exit(0);      }       mysql_res=mysql_store_result(mysql); /*检索一个完整的结果集合给客户*/      rows=mysql_num_rows(mysql_res); /*返回一个结果集合重的列的数量*/       if(rows==0) /*此管理码不存在 返回*/      {       printf("返回值为空");       mysql_free_result(mysql_res); /*释放一个结果集合使用的内存*/       mysql_close(mysql); /*关闭一个服务器连接*/       exit(0);      }       for(count=0; count<rows; count++)      {      mysql_row=mysql_fetch_row(mysql_res); /*从结果集合中取得下一行*/      printf("社号:%s ",mysql_row[0]);      printf("组号:%s ",mysql_row[1]);      printf("组名:%s\n",mysql_row[2]);      }       mysql_free_result(mysql_res);      mysql_close(mysql);     }      3.getfileargv.c文件  
  #include <stdio.h>      int getfileargv(const char * filename,const char * argvname, char * retbuf)     {    FILE *fp;      char line[128];      char tempbuf[40];      strncpy(tempbuf,argvname,30);      tempbuf[39]=0; 
   if ((fp=fopen(filename,"r"))==NULL)       return -1;       strcat(tempbuf,"=");       while(fgets(line,120,fp))      {       if(line[0]=='#')       continue;        if (!strncmp(line,tempbuf,strlen(tempbuf)))      {       fclose(fp);         line[strlen(line)-1]=0;         strcpy(line,(char *)(strchr(line,'=')+1));        strcpy(retbuf,line);         return 0;       }      }       fclose(fp);      return -2;     }  
-- 原文链接: http://publish.it168.com/2005/1104/20051104002001.shtml
		    
                      
		      
		      
		   |