网络安全参考 | UNIX参考 | GPS参考 | 无线参考 | 在线手册 | OSBUG.ORG | SUNNY-NETWORK.COM
天线制作 GPS 地标
网站地图 RSS订阅
高级搜索 收藏本站
Home | 业界动态 | Open source | GNU | Linux | BSD | Solaris | AIX | HP-UX | IRIX | Mac OS X | Minix | Tru64 | SCO UNIX | Network | Security | X-Window | Database | 应用服务 | Programming | 经典著作 | 永远的纪念 | 杂项
 当前位置: Home > SCO UNIX > 文章  
SCO下用gcc编译调用mysql数据库的程序
文章来源: chinaitlab 文章作者: 未知 发布时间: 2005-11-04   字体: [ ]  
 

  环境: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
 
推荐文章
·GCC创建共享库
·SCO UNIX 5 的几个新特点
·SCO UNIX作业调度
·Sco-Unix的核心引导过程
 
 
↑返回顶部   打印本页   关闭窗口↓  

Google
 
Web oldhand.org unixreference.net meshmea.org
相关分类
热点文章
·GCC创建共享库
·SCO UNIX作业调度
·Sco-Unix的核心引导过
·Linux如何处理当前运行
·scounix5.05系统intel p
·SCO UNIX 系统核心参数
·SCO UNIX管理的几个技巧
·SCO中如何管理用户帐号
相关文章
·SCO中如何管理用户帐号
·SCO UNIX 5 的几个新特
·Sco-Unix的核心引导过
·SCO UNIX 系统核心参数
·Linux如何处理当前运行
·GCC创建共享库
更多...
 
 

Copyright(c) 2001-2009 OLDHAND ORGANIZATION, All Rights reserved.
Power by DedeCms 织梦内容管理系统