WEB开发网
开发学院数据库MySQL 在SCO下用gcc编译调用mysql数据库的一个小程序 阅读

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

 2007-11-11 15:49:33 来源:WEB开发网   
核心提示:环境:SCO OpenServer 5.0.6, MySQL(和PHP搭配之最佳组合) 3.23.42,gcc 2.95.2备注:gcc已集成了支持MySQL(和PHP搭配之最佳组合)的函数,可以在C源代码中直接调用数据库,不用像informix那样要用ESQL/C嵌入调用.1.makefile文件CC=gccLIB=

环境:SCO OpenServer 5.0.6, MySQL(和PHP搭配之最佳组合) 3.23.42,gcc 2.95.2

备注:gcc已集成了支持MySQL(和PHP搭配之最佳组合)的函数,可以在C源代码中直接调用数据库,不用像informix那样要用ESQL/C嵌入调用.

1.makefile文件

CC=gcc

LIB=-lcurses -lsocket -lMySQL(和PHP搭配之最佳组合)client -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(和PHP搭配之最佳组合)/include/MySQL(和PHP搭配之最佳组合).h>

#define DBCFG "./gsp.conf"

main()

{

char dbhost[32],dbuser[16],dbpasswd[16],db[16];

char query[256];

int count;

MySQL(和PHP搭配之最佳组合) * MySQL(和PHP搭配之最佳组合); /*表示对一个数据库连接的句柄*/

MySQL(和PHP搭配之最佳组合)_RES *MySQL(和PHP搭配之最佳组合)_res; /*代表返回行的一个查询的结果*/

MySQL(和PHP搭配之最佳组合)_ROW MySQL(和PHP搭配之最佳组合)_row; /*字符串数组*/

my_ulonglong rows;

/*该类型用于行编号和MySQL(和PHP搭配之最佳组合)_affected_rows()、MySQL(和PHP搭配之最佳组合)_num_rows()和MySQL(和PHP搭配之最佳组合)_insert_id()

*/

getfileargv(DBCFG,"DBHOST",dbhost); /*从文件中读取gsp.conf*/

getfileargv(DBCFG,"DBUSER",dbuser);

getfileargv(DBCFG,"DBPASSWD",dbpasswd);

getfileargv(DBCFG,"DATABASE",db);

if(!(MySQL(和PHP搭配之最佳组合)=MySQL(和PHP搭配之最佳组合)_init(NULL))) /*获得或初始化一个MySQL(和PHP搭配之最佳组合)结构*/

{

printf("MySQL(和PHP搭配之最佳组合)_init失败!");

MySQL(和PHP搭配之最佳组合)_close(MySQL(和PHP搭配之最佳组合));

exit(0);

}

if(!MySQL(和PHP搭配之最佳组合)_real_connect(MySQL(和PHP搭配之最佳组合),dbhost,dbuser,dbpasswd,db,0,NULL,0))

{ /*连接一个MySQL(和PHP搭配之最佳组合)服务器*/

printf("连接服务器失败,请联系系统管理人员!");

MySQL(和PHP搭配之最佳组合)_close(MySQL(和PHP搭配之最佳组合));

exit(0);

}

strcpy(query,"select * from zuh where jgm=\"11110501\" order by zuh");

if(MySQL(和PHP搭配之最佳组合)_query(MySQL(和PHP搭配之最佳组合),query)) /*执行指定为一个空结尾的字符串的SQL查询*/

{

printf("MySQL(和PHP搭配之最佳组合)_query出错!");

MySQL(和PHP搭配之最佳组合)_close(MySQL(和PHP搭配之最佳组合));

exit(0);

}

MySQL(和PHP搭配之最佳组合)_res=MySQL(和PHP搭配之最佳组合)_store_result(MySQL(和PHP搭配之最佳组合)); /*检索一个完整的结果集合给客户*/

rows=MySQL(和PHP搭配之最佳组合)_num_rows(MySQL(和PHP搭配之最佳组合)_res); /*返回一个结果集合重的列的数量*/

if(rows==0) /*此管理码不存在 返回*/

{

printf("返回值为空");

MySQL(和PHP搭配之最佳组合)_free_result(MySQL(和PHP搭配之最佳组合)_res); /*释放一个结果集合使用的内存*/

MySQL(和PHP搭配之最佳组合)_close(MySQL(和PHP搭配之最佳组合)); /*关闭一个服务器连接*/

exit(0);

}

for(count=0; count<rows; count++)

{

MySQL(和PHP搭配之最佳组合)_row=MySQL(和PHP搭配之最佳组合)_fetch_row(MySQL(和PHP搭配之最佳组合)_res); /*从结果集合中取得下一行*/

printf("社号:%s ",MySQL(和PHP搭配之最佳组合)_row[0]);

printf("组号:%s ",MySQL(和PHP搭配之最佳组合)_row[1]);

printf("组名:%s\n",MySQL(和PHP搭配之最佳组合)_row[2]);

}

MySQL(和PHP搭配之最佳组合)_free_result(MySQL(和PHP搭配之最佳组合)_res);

MySQL(和PHP搭配之最佳组合)_close(MySQL(和PHP搭配之最佳组合));

}

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;

}

Tags:SCO gcc 编译

编辑录入:coldstar [复制链接] [打 印]
赞助商链接