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

MYSQL
MySQL 实用命令
Mysql 默认字符集设置方法(免安装版)
MySQL 数据库对服务器端光标的限制
MySQL UPDATE更新语句精解
Table ‘xxx’ is marked as crashed and should be repaired 错误解决方法参考
mysql 读写分离(基础篇)
mysql 读写分离(实战篇)
processlist命令 查看mysql 线程
MySQL 数据类型 大全
MySQL 密码设置
MYSQL代码 定期备份Mysql数据库
汇总整理MYSQL相关操作命令
MySQL 数据库两台主机同步实战(linux)
MSSQL 添加字段说明
MySQL 查询某个字段不重复的所有记录
mysql 设置默认的时间值
mysqlreport显示Com_中change_db占用比例高的问题的解决方法
解决mysql不能插入中文Incorrect string value
mysql从执行.sql文件时处理\n换行的问题
mysql 主从服务器的简单配置

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


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-17   浏览: 89 ::
收藏到网摘: 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;
  
  }

'