您的位置:首页 > 运维架构 > Linux

linux下面的数据库程序

2008-03-12 17:39 357 查看
=================
 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;
}
 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息