当前位置:天才代写 > tutorial > C语言/C++ 教程 > 将Sybase C措施快速移植到Oracle Pro*C措施

将Sybase C措施快速移植到Oracle Pro*C措施

2017-11-03 08:00 星期五 所属: C语言/C++ 教程 浏览:993

本文配套源码下载

一、媒介

当前不少单元在举办系统改革进级时,面对着如何将各个独立部分隔发的应用所回收的数据库统一,以便适应数据大会合的需求,利便未来举办数据挖掘等更高条理的应用。在数据库统一的进程中,如何快速、高效的将已有的基于异种数据库的措施,出格是回收C/C++开拓的运行于linux/unix下的措施转换到现有数据库下,成为不少单元面对的问题。虽然了,基于RAD开拓的措施,根基上不需要举办修改,就能到达目标。

针对如何快速地将Sybase C措施移植为Oracle Pro*C措施,本文将指出一个偏向,并给出一个粗拙的框架。仅以此文抛砖引玉,但愿列位指导。(打算编写一个转换系列,看看列位回响如何吧)

二、道理

Sybase的C措施转换到Oracle的Pro*C措施,相对付其他范例的转换有许多优势(原谅我挑了大概是最简朴的一种转换):

Sybase措施回收的是C函数挪用的方法,这给将Sybase措施转换到其他任意一种数据库措施带来了很大的利便!仅仅需要利用目标数据库的语法,实现老措施利用到的Sybase函数就可以了!而且不需要对本来的C措施举办任何逻辑方面的修改!

Oracle的Pro*C提供了动态sql的开拓方法,这给移植带来了极大的利便。

Oracle Pro*C与Sybase同样提供历程多毗连方法。

Oracle 9回收parse=full的编译选项时,C的界说变量可以直接在EXEC SQL中利用,这给措施的编写利便了不少。

尚有其他优势,不再一一罗列。

三、实现

空话少说,下面转入正题:

针对Sybase的几个主要函数,下面概述处理惩罚步伐,详细的实现参照源代码:

  1. dbinit():该函数仅仅将针对数据库操纵的一些变量举办初始化。
  2. 一些用户名、暗码的配置,没有太多可说的。较量简朴。
  3. dbopen():该函数实际举办数据库的毗连,在毗连进程中,我配置了全局变量AllOpenProcess用于生存所有的毗连指针,并发生了一个毗连串用于标识该毗连。生存于全局变量中是因为Sybase函数dbexit没有输入参数。
  4. dbcmd():该函数举办sql语句的阐明,以便进一步举办判定。
  5. dbexec():该函数举办呼吁的执行(不太清楚为什么Sybase将该函数与dbcmd分隔)。对无返回功效集的呼吁(insert、update、delete)直接通过EXEC SQL AT EXECUTE IMMEDIATE的语法执行。对与存在返回功效集的select,回收oracle动态sql4的要领举办处理惩罚。因为时间以及老的措施的干系,本函数的实现仅仅针对了传入完整sql语句的字符串。
  6. dbresults():判定返回功效。
  7. dbbind():绑定存储值的地点,并判定传入的范例是否正确。因为老措施仅仅利用了NTBSTRINGBIND范例,所以示例中也仅仅处理惩罚了此种范例。
  8. dbnumcols():返回数据列数目,在语句范例为select时有效。
  9. dbnextrow():取得下一条数据值,并填写到dbbind所绑定的地点空间内。此处需要按照源范例select_dp->T[]以及方针范例举办相关的数据转换。
  10. dbdead():判定数据库毗连是否正常。回收从DUAL表中取值的方法来测试。
  11. dbexit():退出数据库毗连。

尚有其他许多函数,可是因为我没有利用到,嘿嘿,就不作实现了。

四.移植

移植的要领很简朴,将本来c/c++文件中#include "Sybfront.h" #include "sybdb.h"等引用Sybase头文件的处所去掉,改换为附件中的#include "database_op.h",同时将附件中database_op.cxx插手到工程中,加上适当的编译语句(PROC),然后去除本来毗连sybase的lib,插手oracle的lib:orasql9.lib。就可以在根基不修改源措施的环境下完成措施的移植!虽然,假如你的sybase措施回收了非NTBSTRINGBIND范例的话,本身在cxx文件中插手相关的处理惩罚方法吧!祝好运!接待探讨。

五、能力

下面我总结一些开拓进程中利用到的一些小的能力,列位见笑。如何充实操作 Visual C++ 的开拓情况举办 Pro*C 措施开拓:

相信列位对 Visual C++ 的集成开拓情况利用较量熟吧,别汇报我你开拓 Unix 下的 C/C++ 措施还在利用 vi、UltraEdit、EditPlus 吧!虽然了,假如你僵持我也不阻挡,不外您老此时就不消挥霍时间向下翻页了。

oracle 的 Pro*C 措施一般以 PC 末了。而以 PC 末了的措施,没法凭据 C/C++ 的语法在 Visual C++ 的集成开拓情况下显示!只是白纸黑字一片。不像 UltraEdit,可以定制使得 PC 文件凭据 C/C++ 的语法显示(在 UltraEdit 安装目次下的 WORDFILE.TXT 文件中包括 "C CPP CC CXX H HPP AWK" 内容的后头加上 "PC" 就可以了)(也许VC有这个成果,不外我没找到)。怎么办呢?简朴,修改PC文件后缀为CXX,此时,文件就凭据C/C++语法举办显示了!此时,配置该文件属性页(在VC开拓情况的WORKSPACE中选中该文件,按 ALT+F7 )中 General 下的 Always use custom build step 为选中状态,Curstom Build 页下的 Commands/Outputs 下参考 oracle 的 example 输入相应的编译选项。记得将对应的PC后缀修改为 cxx 后缀。

 

    关键字:

天才代写-代写联系方式