当前位置: 首页 > 图文教程 > 数据库 > MYSQL > SCO下用gcc编译调用mysql数据库的程序

MYSQL
轻松掌握如何从命令行启动mysqld服务器
教你快速掌握怎样在Windows下升级MySQL
解析:安装 MySQL时如何选择安装软件包
解析:快速的掌握 MySQL支持的操作系统
MySQL环境下导入数据时是否需要禁用索引
配置高可用性的MySQL服务器负载均衡群集
使用ERWin进行基于MySQL数据库的物理设计
数据库应用经验:如何简单安装MySQL数据库
DBA应当了解的MySQL客户端程序启动选项
将MySQL 5.0下的数据导入到MySQL 3.23中
讲解MaxDB数据库和MySQL数据库的主要差别
实例讲解如何利用crontab定时备份MySQL
个人经验总结:完全卸载MySQL数据库5.0
如何在Unix系统环境下安装MySQL数据库
适宜做简单搜索的MySQL数据库全文索引
教你在MySQL 5.0以上版本中配置主从库
经验总结:修改MySQL默认密码的具体步骤
将后台数据从Berkeley的文件DB转到MySQL
详细介绍查询优化技术在现实系统中的运用
MySQL数据库中对前端和后台进行系统优化

MYSQL 中的 SCO下用gcc编译调用mysql数据库的程序


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-17   浏览: 108 ::
收藏到网摘: n/a

环境: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结构*/
  
  {
  
  rintf("mysql_init失败!");
  
  mysql_close(mysql);
  
  exit(0);
  
  }
  
  if(!mysql_real_connect(mysql,dbhost,dbuser,dbpasswd,db,0,NULL,0))
  
  { /*连接一个MySQL服务器*/
  
  rintf("连接服务器失败
,请联系系统管理人员!");
  
  mysql_close(mysql);
  
  exit(0);
  
  }
  
  trcpy(query,"select * from zuh where jgm=\"11110501\" order by zuh");
  
  if(mysql_query(mysql,query)) /*执行指定为一个空结尾的字符串的SQL查询*/
  
  {
  
  rintf("mysql_query出错!");
  
  mysql_close(mysql);
  
  exit(0);
  
  }
  
  mysql_res=mysql_store_result(mysql); /*检索一个完整的结果集合给客户*/
  
  rows=mysql_num_rows(mysql_res); /*返回一个结果集合重的列的数量*/
  
  if(rows==0) /*此管理码不存在 返回*/
  
  {
  
  rintf("返回值为空");
  
  mysql_free_result(mysql_res); /*释放一个结果集合使用的内存*/
  
  mysql_close(mysql); /*关闭一个服务器连接*/
  
  exit(0);
  
  }
  
  for(count=0; count<rows; count++)
  
  {
  
  mysql_row=mysql_fetch_row(mysql_res); /*从结果集合中取得下一行*/
  
  rintf("社号:%s ",mysql_row[0]);
  
  rintf("组号:%s ",mysql_row[1]);
  
  rintf("组名:%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];
  
  trncpy(tempbuf,argvname,30);
  
  tempbuf[39]=0;
  
  if ((fp=fopen(filename,"r"))==NULL)
  
  return -1;
  
  trcat(tempbuf,"=");
  
  while(fgets(line,120,fp))
  
  {
  
  if(line[0]=='#')
  
  continue;
  
  if (!strncmp(line,tempbuf,strlen(tempbuf)))
  
  {
  
  fclose(fp);
  
  line[strlen(line)-1]=0;
  
  trcpy(line,(char *)(strchr(line,'=')+1));
  
  trcpy(retbuf,line);
  
  return 0;
  
  }
  
  }
  
  fclose(fp);
  
  return -2;
  
  }

'