您的位置主页 > MYSQL

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

  环境: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

  

  #include

  

  #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