使用OTL来访问数据库

原创 2007年09月29日 12:05:00

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来操作的方式。当然OracleDB2也可以由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.5OTL最新版本为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_
POSTGRESQL

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文件所在位置各不相同,下面是分别在windowsUnix下的数据库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
<DB2_HOME>/lib/db2cli.lib

  如果在windows下操纵MS 数据库,使用MS VC++来编译OTL程序,就非常简单了,不用另外去找ODBC32.libVC的编译器中已经默认link到工程中了,具体请看如何编译OTLhttp://otl.sourceforge.net/otl3_compile.htm

 

OTL使用string和自定义class读取和写入数据库示例

这个例子比较有代表性,为什么呢?因为 (1)它用到了string,快速安全的C++开发你不用string? (2)它用到了用户自定义的类型,介绍了如何从数据库里直接“读出一个对象”或者“将自己定义的对...
  • ClamReason
  • ClamReason
  • 2014年11月18日 20:57
  • 1575

利用OTL操纵MySQL数据库【mysql】

在一个项目中,通过时间戳增量将远程数据同步到本地,利用OTL(http://otl.sourceforge.net/)完成对MySQL数据库的操作。将其中部分工作抽象简化后总结如下。   数据表...
  • flyingleo1981
  • flyingleo1981
  • 2013年04月22日 14:48
  • 1065

VS2013 编译运行 OTL 示例代码

摘要 本文详细记录了,使用VS2013,VC++ Windows Console 程序运行 OTL 一个示例代码 Example 185 ( http://otl.sourceforge.net/...
  • sunyeyi
  • sunyeyi
  • 2015年03月19日 15:05
  • 4789

OTL学习笔记--OTLHelper的实现

OTL简介 OTL是Oracle, ODBC and DB2-CLI Template Library的缩写,目前版本是4.0,是基于C++模板机制的C++库。 OTL 4.0 由一个C+...
  • woxiaozhi
  • woxiaozhi
  • 2014年03月19日 17:28
  • 1146

OTL 连接数据库,获取字段列表属性

获取表 字段列表 方法一:   OTL stream class 介绍       otl_strean 类 具体的实现了OTL 流的概念。任何的SQL语句、SQL语句块和存储过程都能通过ot...
  • nie2314550441
  • nie2314550441
  • 2015年10月27日 22:22
  • 886

使用OTL操作Oracle数据库

使用OTL操作Oracle数据库 一、编写代码 注:以下代码来自OTL示例 /* * otl_test.cpp * */ #include using namespace st...
  • u012071369
  • u012071369
  • 2013年10月23日 15:44
  • 485

otl翻译(11) -- OTL的迭代器

原文地址:http://blog.sina.com.cn/s/blog_79d599dc0100rrmi.html     OTL stream read iterator 这个类是一个像传...
  • comhaqs
  • comhaqs
  • 2013年06月08日 10:10
  • 585

数据库粘合层--基于protobuffer

背景: 最近在工作中,受到大量数据库操作的折磨。由于采用拼接字符串的方式来进行数据库操作,带来了每个数据库操作业务都需要提供一个接口,导致同一张表的操作需要一堆堆接口。比如表person_t有3...
  • chenyu2202863
  • chenyu2202863
  • 2013年03月05日 14:14
  • 5302

用OTL库连接读取access数据库

一.环境及创建一个数据库 编程环境:VS2010 数据库:access2007 OTL库载地址:http://otl.sourceforge.net/home.htm 使用access2007创建一个...
  • u014304293
  • u014304293
  • 2015年09月15日 15:58
  • 1101

C++06使用OTL操作Oracle数据库

一、编写代码   注:以下代码来自OTL示例   文本查看复制代码打印关于     # /*     #  *otl_test.cpp     # *     # */    ...
  • u011676589
  • u011676589
  • 2013年10月15日 14:07
  • 769
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:使用OTL来访问数据库
举报原因:
原因补充:

(最多只允许输入30个字)