正文

Por* C/C++编程思路2008-03-12 19:33:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/lym51/33317.html

分享到:

Por* C/C++编程思路:
1、包含头文件
 与开发C/C++应用程序相同,当编写Por* C/C++应用程序时,首先应该包含头文件。但是要注意,不仅需要包含C/C++的头文件,而且还需要包含Por* C/C++的头文件。当编写Por* C/C++应用程序时,一般需要包含以下C/C++头文件:
stdio.h 
iostream.h
stdlib.h
string.h
除了需要包含C/C++头文件,开发人员还需要包含Por* C/C++头文件,其中头文件sqlca.h是必须包含的,并且在某些情况下还需要包含其他头文件,它们的作用如下:
sqlca.h:定义了SQLCA结构,该结构用于与SQL语句执行交互操作
sqlda.h:定义了SQLDA结构,当使用Oracle动态SQL方法四时,必须包含该结构
oci.h:定义了所有OCI函数,当编写LOB应用,对象类型应用、集合类型应用时,必须包 含该结构
sql2oci.h:定义了用于与OCI交互的SQLLIB函数。当嵌入OCI函数时,必须要包含该头文件。
其他
当编写Por* C/C++应用程序时,通过使用C预处理器指令#include可以包含系统(C/C++)头文件和Por* C/C++头文件。示例如下:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <sqlca.h>

2、定义全局变量(可选)
当编写Por* C/C++程序时,如果要定义所有函数都可以引用的宿主变量,那么要在包含了头文件之后,立即定义这些全局变量。全局宿主变量既可以直接定义,也可以使用定义部分定义。示例如下:
 EXEC SQL BEGIN DECLARE SECTION;
  char username[10],password[10],server[10];
 EXEC SQL END DECLARE SECTION;
3、定义外部函数(可选)
当编写Por* C/C++程序时,有些情况下需要调用SQLLIB公用函数。例如,为了取得完整的Oracle错误消息,可能需要使用SQLLIB函数sqlglm()。在这种情况下,必须首先定义外部函数。示例如下:
 extern sqlglm(char*,int*,int*);
4、定义函数
为了开发模块化的程序,开发人员首先应该分析并确定应用需要实现的功能,然后将不同功能设计为不同的应用模块----函数,最终在每个函数中实现相应功能。通过使用函数,可以提高程序健壮性,便于开发与调试。为了使得函数之间可以相互调用,构成一个完整的整体,必须首先定义函数。例如,可以定义以下函数:
connect():用于连接数据库
sql_error():用于处理SQL错误
select_employee():用于检索雇员数据库
其他
定义函数的示例如下:
 void connect();
 void sql_error();
 void select_employee();
5、编写应用程序
在Por* C/C++程序头部完成了以上任务之后,就可以根据要实现的功能编写应用程序了,在编写数据库应用程序时,应该按照以下步骤实现数据库访问:
(1)安装错误处理句柄。
错误处理句柄用于定位并处理SQL错误。如果不安装错误处理句柄,那么当应用程序出现SQL错误时,将无法确定具体的错误原因。为了正确地定位并处理SQL错误建议开发人员一定要编写并安装错误处理句柄。安装错误处理句柄的示例如下:
 EXEC SQL WHENEVER SQLERROR DO sql_error();
 EXEC SQL WHENEVER NOT FOUND DO sql_error();
当检测到SQL错误或不能处理检测到数据时,系统会自动调用错误处理程序sql_error()定位并处理SQL错误。错误处理子程序的示例如下:

 void sql_error()
 {
  printf("%.*s\n",sqlca.sqlerrm.sqlerrml,sqlca.sqlerrm.sqlerrmc);
 }
(2)连接到数据库。
当编写数据库应用程序时,在执行SQL操作之前必须首先连接到数据库。为了提高程序的可读性和可维护性,可以建立专门的函数来实现连接功能。示例如下:
 void connect()
 {
  printf("输入用户名:");
  gets(username);
  printf("输入密码:");
  gets(password);
  printf("输入网络服务名:");
  gets(server);

  EXEC SQL CONNECT :usesrname IDENTIFIED BY :password UISNG :server;
 }
3、执行SQL操作。
在编写了数据库连接函数后,就可以编写各种用于执行SQL操作的函数了,可以编写函数,也可以直接在主函数main()中断开连接,断开连接是使用RELEASE子句实现的。示例如下:
 EXEC SQL COMMIT RELEASE;

 EXEC SQL ROLLBACK RELEASE;

阅读(5006) | 评论(1)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

loading...
您需要登录后才能评论,请 登录 或者 注册