=================
linux 环境下的数据库编程
=================
折腾了半天终于可以编译了,以此纪念一下!以后备查
1. DB2
makefile 文件:
DB2PATH = /home2/db2inst1/sqllib
CC = cc
CM = xlC_r7
HEADS = -I$(DB2PATH)/include
# The required libraries
LIBS = -L$(DB2PATH)/lib -ldb2
LIBSUDF = -L$(DB2PATH)/lib -ldb2 -ldb2apie
DEST = ../bin/
DB = db2front
# Set UID and PWD if neccesary
UID=icsadm
PWD=icsadm
all: 005 clean
005: 005.sqC
db2 connect to $(DB) user $(UID) using $(PWD)
db2 prep 005.sqC
$(CC) -o $(DEST)005 005.C $(LIBS) $(HEADS)
clean:
rm *.C
源代码文件:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sqlca.h>
#include <sql.h>
EXEC SQL INCLUDE SQLCA;
#define CHECKERR(CE_STR) if(check_error(CE_STR,&sqlca) != 0) return 1;
int check_error(char eString[], struct sqlca *caPointer)
{
char eBuffer[1024];
char sBuffer[1024];
short rc, Erc;
if(caPointer->sqlcode != 0)
{
printf("---- error report -----/n");
printf("Error occured : %s. /nSQLCODE : %ld/n",eString, caPointer->sqlcode);
rc = sqlogstt(sBuffer,1024,80,caPointer->sqlstate);
Erc = sqlaintp(eBuffer,1024,80,caPointer);
if(Erc > 0) printf("%s",eBuffer);
if(caPointer->sqlcode < 0)
{
if(rc == 0)
{
printf("/n%s",sBuffer);
}
printf("--- end report --/n");
return 1;
}
else
{
if(rc == 0)
{
printf("/n%s",sBuffer);
}
printf("--- end report -- /n");
printf("WARNING: CONTINUING PROGRAM WITH WARNINGS!/n");
return 0;
}
}
return 0;
}
int main()
{
EXEC SQL BEGIN DECLARE SECTION;
char var1[20];
EXEC SQL END DECLARE SECTION;
/*var1 = (char *)malloc(10);*/
EXEC SQL CONNECT TO db2front user icsadm using icsadm;
EXEC SQL DECLARE cl CURSOR FOR
SELECT ID FROM mngusrinf;
EXEC SQL OPEN cl;
do{
EXEC SQL FETCH cl INTO :var1;
if(SQLCODE !=0 ) break;
printf("ID : %s /n",var1);
}while(1);
EXEC SQL CLOSE cl;
CHECKERR("close CURSOR statement");
EXEC SQL CONNECT RESET;
return 0;
}