zoukankan      html  css  js  c++  java
  • VC++使用Pro*CC++

    几种数据库访问技术的比较
    由上所述, Visual C++ 通过以上方法都可以访问Oracle 数据
    库, 但是上述方法各有优缺点。ODBC 出现得比较早, 几乎支持所
    有的关系型数据库, 而且有MFC 强大的类库支持而使得编程实现
    非常方便, 同时可移植性也很强, 在异构的数据库之间移植也只需
    更改很少的一部分程序。
    但是, 由ODBC 的实现机制我们可以看到, 与Pro*C 相比, 应
    用程序需要经过ODBC 驱动程序管理器和ODBC 驱动程序两层才
    能和数据库通信接口建立联系, 而Pro*C是直接与通信接口联系,
    因此建立在ODBC 上应用程序的执行效率会相对低一些。DAO 对
    于访问采用MDB文件格式的数据库, 有着较高的效率, 但对于访问
    Oracle 这样的非MDB文件格式的数据库, 必须经过Access/Jet 数据
    库引擎, 执行效率低。OLE/DB属于数据库访问技术中的底层接口, 为
    了在VisualC++ 中使用OLE/DB, 用户必须熟悉C++ 模板类、COM
    技术和OLE/DB接口, 这种要求对一般用户而言比较困难。
    ADO 对OLE/DB 的接口作了封装, 定义了ADO 对象, 但它属
    于数据库访问的高层接口, 应用程序的执行效率比采用Pro*C 直接
    与通信接口联系低。从实现机制上我们可以看到, OO4O 需要通过
    3 个中间层才能和数据库通信接口建立联系, 而Pro*C/ C++ 和OCI
    是直接与通信接口联系, 因此建立在PRO*C/ C++ 和OCI 上的
    应用程序其执行效率相对高一些。而采用OCI 方法时, 开发人员需
    要掌握各种OCI 函数独特的调用语法格式, 所以有时它的实现比
    较麻烦。
    笔者开发的管理系统是关于期货交易的分析系统, 需要对
    交易所交易的海量数据进行实时分析, 监控交易情况。服务端的
    服务器安装的操作系统为HP- UNIX, 数据库配置了Oracle9i; 客
    户端负责生成分析报表、绘制分析图形等, 采用Windows 经典
    界面风格, 用VC++6.0 开发。系统得性能要求要安全、可靠, 并
    且在保存有一年数据的情况下, 各项功能操作从提交到完成的
    等待时间不能超过30 秒钟。为了满足系统数据量大, 执行效率
    高的要求, 我们选择在Visual C++ 环境下采用Pro*C 技术访问
    Oracle 数据库。
    
    
    Pro*C/ C++ 是Oracle 公司提供的在第三代高级程序设计
    语言中嵌入SQL 语句来访问数据库的一种预编译程序。VC 程
    序员用C 或C++ 语言编写嵌入SQL 语句的Pro*C 预编译源程
    序后运行Pro*C/ C++ 预编译器, 把嵌入的SQL 语句转换为标
    准的Oracle 调用并生成C/ C++ 源程序, 然后就可以将这些源
    程序加入用户的工程文件中, 供其它程序模块调用。PRO*C/
    C++ 直接与通信接口联系, 因此执行效率高。与Oracle 调用层接
    口开发工具相比, 嵌入式SQL 是通过在C/C++ 程序中直接使用
    SQL 语句而不是通过函数调用来进行数据库应用程序开发的,
    程序设计人员不必学习和掌握调用层函数接口语法, 因此它是
    一种更为简单的程序设计方法。
    
    
    一个Pro*C 程序有两部分组成: 程序头和程序体。程序头是
    Pro*C 的开始部分, 包含宿主变量( SQL 语句中所包含的变量)
    说明、通信区定义和C 外部表示符的说明等, 为Pro*C 程序做
    一般的准备工作。程序体一般是由若干函数组成, 这些函数内含
    有SQL 语句( 以EXEC SQL 起头的语句) , 完成对Oracle 数据库
    的操作[7]。程序头包括以下3 个部分:
    说明部分( DECLARE 节) , 用于定义宿主变量, 实现Oracle
    数据库和应用程序之间的通信。其语法为
    EXEC SQL BEGIN DECLARE SECTION;
    变量定义:
    EXEC SQL END DECLARE SECTION;
    INCLUDE SQLCA 语句, 用来定义SQL 通讯数据区SQLCA。
    SQLCA 可用于错误处理, 它是每个Pro*C 程序用于传递程序信
    息的结构。语法为:
    EXEC SQL INCLUDE SQLCA
    CONNECT部分。该部分用于与Oracle 数据库的连接。语法为:
    EXEC SQL CONNECT: usr IDENTIFIDE BY: pwd。
    
    程序体包含有用于检索和操纵存贮在Oracle 数据库中数
    据的数据操纵语句( DML) 和用于创建、定义数据结构的数据定
    义语句( DDL) [5]。由于笔者开发的系统中针对每次查询操作都将
    返回多行结果, 多次用到游标, 下面主要介绍一下游标的使用。
    声明游标:
    游标用DECLARE<cursorname>CURSOR FOR SELECT⋯..
    其中: <cursorname> 为游标名
    打开游标:
    声明游标后, 必须在程序引用之前打开它。如下:
    OPEN<cursorname> 获取游标:
    一个游标与一个SELECT 语句对应, 并且通过游标来获取
    SELECT 语句的结果。如果结果为多条记录, 可用一个循环语句
    来取得。检索一句的语法如下:
    FETCH<cursorname>INTO<variablename1>, <variable name2>
    其中: <variablename> 为指定列值变量名。
    关闭游标:
    处理完一个游标行, 必须释放该游标的系统资源。
    CLOSE<cursorname>
    在VC 中使用Pro*C 时, 先用Pro*C 编写所需的操作数据
    库的子程序, 再运行Pro*C 预编译程序把Pro*C 源程序转换成
    相应的CPP 源程序, 将该程序插入到用户工程文件中并在需要
    对插入函数进行调用的模块中说明函数, 然后就可以在此模块
    中调用所需的函数。
  • 相关阅读:
    如何获得Spring容器里管理的Bean,。不论是Service层,还是实体Dao层
    解析PHP中的file_get_contents获取远程页面乱码的问题【转】
    CSS中应用position的absolute和relative的属性制作浮动层
    css position 绝对定位和相对定位
    html bootstrap 表头固定在顶部,表列 可以自由滚动的效果
    php工具 phpstorm 的快捷键 的使用(待添加
    关于PHP HTML <input type="file" name="img"/>上传图片,图片大小,宽高,后缀名。
    Thinkphp 3.2 添加 验证码 如何添加。
    网页自适应@media
    如何让div上下左右都居中
  • 原文地址:https://www.cnblogs.com/klxll/p/3425840.html
Copyright © 2011-2022 走看看