您的位置:首页 > 数据库

第一次完成工作任务 ^_^

2006-09-06 15:29 288 查看
要求做一个类,实现DML的四个功能

class文件:database.pc,预编译为database.h

#include <stdio.h>
#include <iostream>
#include <string.h>

#define SQLNOTFOUND 1403

EXEC SQL INCLUDE sqlca;

class DB{
 public:
  void connect(int argc,char *argv[]);
  void select();
  void insert();
  void update();
  void del();
 private:
  EXEC SQL BEGIN DECLARE SECTION;
  char username[40];
  //char *argv[];
  char con1[20],con2[20],con3[20];
  char sel1[20],sel2[20],sel3[20];
  char in1[20],in2[20],in3[20];
  char up1[20],up2[20],up3[20];
  char del1[20],del2[20],del3[20];
  struct tab_struct{
   char cat_id[20];
   char obj_id[20];
   char obj_desc[20];
   }tab;
  struct attr_list_struct{
   char cat_id[20];
   char attr_id[20];
   char attr_name[20];
   char attr_desc[20];
   }attr_list;
  struct attr_value_struct{
   char cat_id[20];
   char obj_id[20];
   char attr_id[20];
   char attr_value[20];
   }attr_value;
  EXEC SQL END DECLARE SECTION; 
};

void DB::connect(int argc,char *argv[])
{
 if(argc==1)
  {
   printf("请输入用户,密码");
   exit(0);
  }
 strcpy(username,argv[1]);
  
 EXEC SQL CONNECT:username;
 printf("连接ORACLE@:%s",username); 
 if(sqlca.sqlcode<0)
    {
      printf("数据库连接出错@:%s./n",sqlca.sqlerrm.sqlerrmc);
      exit(0);
    } 

void DB::select()
{
  printf("/nnow~ select start!/n");
  scanf("%s",sel1);
  EXEC SQL DECLARE Ctab CURSOR FOR
  SELECT cat_id
     ,obj_id
     ,obj_desc
  FROM obj_tab
  WHERE cat_id=:sel1
  ORDER BY cat_id;
  
  EXEC SQL OPEN Ctab;
    if(sqlca.sqlcode<0)
    {
       printf("打开游标Ctab时出错@:%s./n",sqlca.sqlerrm.sqlerrmc);
       exit(0);
    }  
   
    printf("/ncat_id/tobj_id/tobj_desc/n");
   
  while(1)
    { 
     EXEC SQL FETCH Ctab INTO
       :tab.cat_id
       ,:tab.obj_id
       ,:tab.obj_desc;
     
     if(sqlca.sqlcode == SQLNOTFOUND )
         break;
      if(sqlca.sqlcode<0)
      {
          printf("处理游标Ctab时出错,错误信息:%s./n",sqlca.sqlerrm.sqlerrmc);
          exit(0);
      }

    for(char *pbegin=tab.cat_id,*pend=tab.cat_id+strlen(tab.cat_id);pbegin!=pend;++pbegin)
        printf("%c",*pbegin);
    for(char *pbegin=tab.obj_id,*pend=tab.obj_id+strlen(tab.obj_id);pbegin!=pend;++pbegin)
        printf("%c",*pbegin);
   for(char *pbegin=tab.obj_desc,*pend=tab.obj_desc+strlen(tab.obj_desc);pbegin!=pend;++pbegin)
        printf("%c",*pbegin);
    printf(" /n");
   

  }
  
    EXEC SQL CLOSE Ctab;
  EXEC SQL COMMIT WORK;
}
/*
void DB::insert(int argc,char *argv[])
{
 EXEC SQL insert into obj_tab(cat_id,obj_id,obj_desc)
 VALUES(:argv[2],:argv[3],:argv[4]);
 EXEC SQL COMMIT WORK;
}
*/
void DB::insert()
{
 printf("/nnow~ insert start!/n");
 scanf("%s%s%s",in1,in2,in3);
 EXEC SQL insert into obj_tab(cat_id,obj_id,obj_desc)
 VALUES(:in1,:in2,:in3);
 EXEC SQL COMMIT WORK;
}
void DB::update()
{
 printf("/nnow~ update start!/n");
 scanf("%s%s",up1,up2);
 EXEC SQL update obj_tab
 set
 cat_id=:up2
 where cat_id=:up1;
 EXEC SQL COMMIT WORK;
}
void DB::del()
{
 printf("/nnow~ delete start!/n");
 scanf("%s",del1);
 EXEC SQL delete from obj_tab where cat_id=:del1;
 EXEC SQL COMMIT WORK; 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐