gcc mysql,在SCO下用gcc编译调用mysql数据库的一个小程序

在SCO下用gcc编译调用mysql数据库的一个小程序 - 应用软件 - 电脑教程网

在SCO下用gcc编译调用mysql数据库的一个小程序

日期:2007-09-25   荐:

环境:SCO OpenServer 5.0.6, mysql 3.23.42,gcc 2.95.2备注:gcc已集成了支持mysql的函数,可以在C源代码中直接调用数据库,不用像informix那样要用ESQL/C嵌入调用.

1.makefile文件

CC=gccLIB=-lcurses -lsocket -lmysqlclient -lm -lc -lnslall: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.cgetfileargv.o:getfileargv.c$(CC) -c getfileargv.cclean: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;}

标签: