otl库(以前不知道有这个库,并且还可以在Unix下使用)
OTL介绍:
OTL 是 Oracle, Odbc and DB2-CLI Template Library 的缩写,是一个C++编译中操控关系数据库的模板库,它目前几乎支持所有的当前各种主流数据库,例如Oracle, MS SQL Server, Sybase, Informix, MySQL, DB2, Interbase / Firebird, PostgreSQL, SQLite, SAP/DB, TimesTen, MS ACCESS等等。OTL中直接操作Oracle主要是通过Oracle提供的OCI接口进行,进行操作DB2数据库则是通过CLI接口来进行,至于MS的数据库和其它一些数据库,则OTL只提供了ODBC来操作的方式。当然Oracle和DB2也可以由OTL间接使用ODBC的方式来进行操纵。
在MS Windows and Unix 平台下,OTL目前支持的数据库版本主要有:Oracle 7 (直接使用 OCI7), Oracle 8 (直接使用 OCI8), Oracle 8i (直接使用OCI8i), Oracle 9i (直接使用OCI9i), Oracle 10g (直接使用OCI10g), DB2 (直接使用DB2 CLI), ODBC 3.x ,ODBC 2.5。OTL最新版本为4.0,参见http://otl.sourceforge.net/,下载地址http://otl.sourceforge.net/otlv4_h.zip。
优点:
      a. 跨平台
      b. 运行效率高,与C语言直接调用API相当
      c. 开发效率高
      d. 部署容易,不需要ADO组件,不需要.net framework 等
     现提供有501个使用范例可参考http://otl.sourceforge.net/otl4_mssql_examples.htm。
OTL的使用:
   OTL使用起来很简单,使用不同的数据库连接(连接字符串格式可以参考:http://www.connectionstrings.com/),主要是根据需要在程序开始的宏定义来指定的。 OTL是首先根据这个宏定义来初始化数据库连接环境。 OTL中用来区分连接方式的宏定义主要有下面这些:
 OTL_ORA7, OTL_ORA8, OTL_ODBC, OTL_DB2_CLI, OTL_ODBC_MYSQL...
不同的宏对应的数据库API,具体说明如下:
| 
 宏定义名  | 
 说明  | 
| 
 OTL_DB2_CLI  | 
 for DB2 Call Level Interface (CLI)  | 
| 
 OTL_INFORMIX_CLI  | 
 for Informix Call Level Interface for Unix (when OTL_ODBC_UNIX is enabled).  | 
| 
 OTL_IODBC_BSD  | 
 for ODBC on BSD Unix, when iODBC package is used  | 
| 
 OTL_ODBC  | 
 for ODBC  | 
| 
 OTL_ODBC_MYSQL  | 
 for MyODBC/MySQL. The difference between OTL_ODBC_MYSQL and OTL_ODBC is that transactional ODBC function calls are turned off for OTL_ODBC_MYSQL, since MySQL does not have transactions  | 
| 
 OTL_ODBC_  | 
 for the PostgreSQL ODBC driver 3.5 (and higher) that are connected to PostgerSQL 7.4 / 8.0 (and higher) servers.  | 
| 
 OTL_ODBC_UNIX  | 
 for ODBC bridges in Unix  | 
| 
 OTL_ODBC_zOS  | 
 for ODBC on IBM zOS.  | 
| 
 OTL_ODBC_XTG_IBASE6  | 
 for Interbase 6.x via XTG Systems' ODBC driver. The reason for introducing this #define is that the ODBC driver is the only Open Source ODBC driver for Interbase. Other drivers, like Easysoft's ODBC for Interbase, are commercial products, and it beats the purpose of using Interbase, as an Open Source.database server.  | 
| 
 OTL_ORA7  | 
 for OCI7  | 
| 
 OTL_ORA8  | 
 for OCI8  | 
| 
 OTL_ORA8I  | 
 for OCI8i  | 
| 
 OTL_ORA9I  | 
 for OCI9i. All code that compiles and works under #define OTL_ORA7, OTL_ORA8, and OTL_ORA8I, should work when OTL_ORA9I is used  | 
| 
 OTL_ORA10G  | 
 for OCI10g. All code that compiles and works under #define OTL_ORA7, OTL_ORA8, OTL_ORA8I, OTL_ORA9I, should work with OTL_ORA10G.  | 
| 
 OTL_ORA10G_R2  | 
 for OCI10g, Release 2 (Oracle 10.2). All code that compiles and works under #define OTL_ORA7, OTL_ORA8, OTL_ORA8I, OTL_ORA9I, and OTL_ORA10G should work with OTL_ORA10G_R2 .  | 
在编译OTL的程序时,需要使用到相应的数据库API,这就要程序在编译时联接lib库文件,不同的数据库对应的lib文件所在位置各不相同,下面是分别在windows与Unix下的数据库API所需要的头文件及lib文件所在的位置列表:
| 
 API  | 
 API header files for Windows  | 
 API libraries for Windows  | 
| 
 OCI7  | 
 In <ORACLE_HOME>/oci/include  | 
 <ORACLE_HOME>/oci/lib/<compiler_specific>/ociw32.lib  | 
| 
 OCI8  | 
 In <ORACLE_HOME>/oci/include  | 
 <ORACLE_HOME>/oci/lib/<compiler_specific>/oci.lib  | 
| 
 OCI8i  | 
 In <ORACLE_HOME>/oci/include  | 
 <ORACLE_HOME>/oci/lib/<compiler_specific>/oci.lib  | 
| 
 OCI9i  | 
 In <ORACLE_HOME>/oci/include  | 
 <ORACLE_HOME>/oci/lib/<compiler_specific>/oci.lib  | 
| 
 OCI10g  | 
 In <ORACLE_HOME>/oci/include  | 
 <ORACLE_HOME>/oci/lib/<compiler_specific>/oci.lib  | 
| 
 ODBC  | 
 Normally, in one of the C++ compiler system directories, no need to include explicitly.  | 
 Normally, in one of the C++ compiler system directories: odbc32.lib  | 
| 
 DB2 CLI  | 
 In <DB2_HOME>/include  | 
 <DB2_HOME>/lib/db2api.lib  | 
如果在windows下操纵MS的 数据库,使用MS VC++来编译OTL程序,就非常简单了,不用另外去找ODBC32.lib,VC的编译器中已经默认link到工程中了,具体请看如何编译OTL:http://otl.sourceforge.net/otl3_compile.htm。
http://blog.csdn.net/kl222/article/details/7439900
otl库(以前不知道有这个库,并且还可以在Unix下使用)的更多相关文章
- iOS开发中静态库制作 之.a静态库制作及使用篇
		
iOS开发中静态库之".a静态库"的制作及使用篇 一.库的简介 1.什么是库? 库是程序代码的集合,是共享程序代码的一种方式 2.库的类型? 根据源代码的公开情况,库可以分为2种类 ...
 - 配置自己的OpenGL库,glew、freeglut库编译,库冲突解决(附OpenGL Demo程序)
		
平台:Windows7,Visual C++ 2010 1. 引言 实验室的一个项目,用到OpenGL进行实时绘制,还用到一些其他的库,一个困扰我很久的问题就是编译时遇到的各种符号未定义,符号重定义之 ...
 - paip.禁用IKAnalyzer 的默认词库.仅仅使用自定义词库.
		
paip.禁用IKAnalyzer 的默认词库.仅仅使用自定义词库. 作者Attilax 艾龙, EMAIL:1466519819@qq.com 来源:attilax的专栏 地址:http:// ...
 - 如何实现SP文档库类似百度文档库的效果 (副标题:如何在SP2013文档库的SWF文件用FlexPager显示)
		
1. 编辑文档库列表显示页面,如下图: 2. 添加内容编辑器,如下图: 3. 添加如下在[内容编辑器中]-[编辑源],添加如下JS代码,如下图:  代码如下: <scrip type=&quo ...
 - paip..禁用mmseg 的默认词库. . 仅仅使用自定义词库from数据库.
		
paip..禁用mmseg 的默认词库. . 仅仅使用自定义词库from数据库. mmseg默认词库只能是文件格式...不好维护..要是不个词库放的个数据库里面走好维护兰.. 要实现2个目标..: 1 ...
 - Linux链接库四(多个库文件链接顺序问题)
		
最近在Linux下编程发现一个诡异的现象,就是在链接一个静态库的时候总是报错,类似下面这样的错误: (.text+0x13): undefined reference to `func' 关于unde ...
 - SDL_Test库(1)——SDL不用TTF库绘制文字
		
SDL库有很多的扩展,这很方便.但是每个扩展库都很臃肿,一般都会拖上额外的两三个开源库,更有甚者,扩展库的大小比SDL库本身还大得多.但有一个自带的.很有用的库很容易被大家忽视.它就是本文要讲的SDL ...
 - 【AOS应用基础平台】完好了AOS标签库,和标准标签库完美兼容了
		
[金码坊AOS开发平台]今天①完好了AOS标签库,和标准标签库完美兼容了.②新开发了依据子页面动态生成主页面的二级导航菜单功能.#AOS开发平台#
 - 阿里UX矢量图标库–最强大的矢量图标库(Icon font制作力荐工具)
		
继前面介绍过ICON-FONT的制作后,找了几个ICON库都是国外的今天偶然发现阿里巴巴的图标矢量库,www.iconfont.cn用了之后感觉很强大,丰富的图标库(集合阿里妈妈&淘宝的图标库 ...
 
随机推荐
- EC读书笔记系列之19:条款49、50、51、52
			
条款49 了解new-handler的行为 记住: ★set_new_handler允许客户指定一个函数,在内存分配无法获得满足时被调用 ★Nothrow new是一个颇为局限的工具,∵其只适用于内存 ...
 - Activity关闭另一个Acitivity
			
1.ActivityA跳转到ActivityB 2.ActivityB跳转到ActivityC 3.ActivityC结束掉自己的同时结束ActivityB 在ActivityB中声明一个自己的参数i ...
 - Spring2.0集成Quartz1.5.2调度框架
			
Quartz是个开放源码项目,提供了丰富的作业调度集.希望您在阅读完本文并看过代码演示后,可以把Quartz的基本特性应用到任何Java™应用程序中.现代的Web应用程序框架在范围和复杂性方面都有所发 ...
 - Android Fragment真正意义上的onResume和onPause
			
Fragment虽然有onResume和onPause的,但是这两个方法是Activity的方法,调用时机也是与Activity相同,和ViewPager搭配使用这个方法就很鸡肋了,根本不是你想要的效 ...
 - canvas总结:线段宽度与像素边界
			
在canvas中,我们经常需要绘制线段,主要使用moveTo和lineTo两个方法,moveTo移动至线段起始点,lineTo将线段绘制至终点.同时,绘制线段时可以指定线段的宽度,使用lineWidt ...
 - 星际争霸反作弊AG对战平台_支持108,113
			
星际争霸反作弊AG对战平台_支持108,113,116 强大的星际反作弊功能,对战神器,让玩家公平对战 目前腾讯对战,浩方对战,VS对战平台都有星际外挂,AG平台什么都不干专门反外挂,希望热爱星际的玩 ...
 - Linux--正则表达式--详解
			
一.linux文本查找命令 在说linux正规表达式之前,还介绍下linux中查找文本文件常用的三个命令: 1.grep : 最早的文本匹配程序,使用POSIX定义的基本正则表达式(BRE)来匹配文本 ...
 - 批量处理csv格式转换成xls
			
结合下面的代码学习相关模块及函数方法的使用 #coding:utf-8 #导入相应模块 import csv import xlwt import sys import os import fnmat ...
 - JQuery DataTables Editor---页面内容修改&&数据库信息修改 (2)
			
接上篇博文,详细说一下js代码以及JQuery DataTables Editor---页面内容修改&&数据库信息修改遇到的问题和解决办法. 1.关于dialog 初始化: $(&qu ...
 - J2SE知识点摘记(三)
			
1. 在java只允许单继承,而不允许多重继承,也就是说一个子类只能有一个父类.但在java中却允许多层继承. 2. 非内部Class只能被public或者defaul ...