使用C语言编写嵌入式SQL以访问DB2的程序,DB2预编译器可以将SQL语法直接转换为DB2行时服务应用程序编程接口(API)调用。
bind的主要作用是根据SQC中的SQL语句使用的表和操作指定访问时DB要使用的策略,是一种优化作用,以加快数据访问的速度。
预编译命令:
db2 prep *.sqc bindfile
bindfile参数作用是生成和sqc文件同名的.bnd文件。
接下来就和一般的C程序一样进行编译了,来看看这个简单的Makefile,AIX 编译64位的应用。
CHMOD =chmod 755
RM =rm -f
#export OBJECT_MODE=64
DB2_HOME=/opt/IBM/db2/V9.1
CFLAGS= -q64 -qchars=signed -I. -g -I$(DB2_HOME)/include
LDFLAGS = -b64 -g -L $(DB2_HOME)/lib64 -ldb2
DB2 =db2
BINHOME=$(HOME)/batch/bin
CC= xlc_r
#DB CONFIGURE
DBNAME = db2name
USEID = db2user
PASWD = db2pswd
ALL =$(BINHOME)/ApsBatchWS
all:$(ALL)
.SUFFIXES:
.SUFFIXES:.sqc .cpp .c .o
OBJS = dbcons.o serv.o util.o log.o flow.o
.sqc.o:
$(DB2) connect to $(DBNAME) user $(USEID) using $(PASWD)
@$(RM) *.bnd $*.c
@$(DB2) prep $< bindfile
@$(DB2) bind $*.bnd
@$(DB2) connect reset
@$(DB2) terminate
@$(CC) $(CFLAGS) -s -c $*.c
.c.o:
$(CC) -c $(CFLAGS) $<
.cpp.o:
$(CC) -c $(CFLAGS) $<
$(ALL) : $(OBJS)
$(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) -o $@
$(CHMOD) $@
clean:
$(RM) *.o dbcon.c dbcons.bnd $(ALL)