第一次完成工作任务 ^_^
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;
}
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;
}
相关文章推荐
- 完成第一次工作的第一个任务
- 【软件测试基础】软件测试活动——测试计划及要完成的工作任务
- 4程序员小飞原计划三天完成某个任务,现在是第三天的下午,他马上就可以做完。但是在实现功能的过程中,他越来越意识到自己原来设计中的弱点,他应该采取另一个办法,才能避免后面集成阶段的额外工作。但是他如果现在就改弦更张,那势必要影响自己原来估计的准确性,并且会花费额外的时间,这样他的老板、同事也许会因此看不起他。如果他按部就班地按既定设计完成,还要花更多时间在后续集成上,但那就不是他个人的问题了,怎么办
- 第二次完成与第一次一模一样的任务
- 第一个任务完成了,第二个任务又来了(实习工作第五天)
- 工作感悟系列-如何快速高效圆满的完成任务
- 程序员五天工作任务应争取三天完成
- 第一次任务完成情况
- 求3个处理机同时工作完成7个任务所用时间
- 又好又快的完成工作任务
- 第一次工作,终于完成了一个段落,mark一下
- 如果你是项目的一个组长,如果有个项目很急,要你尽快地完成,你是怎么分配工作任务或者你公司是怎么安排的?
- 完成任务
- 第一次参加项目个人工作总结 (转)
- 使用DownloadProvider来完成下载任务
- 翻译团队第一次翻译任务[2006.1.18公告]
- linux延时工作任务create_singlethread_workqueue函数的使用
- 拆屋效应——不要拒绝,你以为不可能完成的任务
- 第一次工作的小结
- 四则运算2任务完成表