程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> 關於MYSQL數據庫 >> SCO下用gcc編譯調用mysql數據庫的程序

SCO下用gcc編譯調用mysql數據庫的程序

編輯:關於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 <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 ",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;
  
  }

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved