使用OTL进行数据库编程

操作环境:
1. 操作系统:Windows XP Professional with SP2。
2. 编程环境:Visual C++ 6.0 with SP6。
3. 数据库环境:Access 2003。
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. 开发效率高,起码比ADO.net使用起来更简单,更简洁
      d. 部署容易,不需要ADO组件,不需要.net framework 等
缺点:
      a. 说明文档以及范例不足够丰富(暂时性的)
     其实现在它提供有377个使用范例可参考,下载地址:http://otl.sourceforge.net/otl4_examples.zip
建立数据源
1.依次点击“开始->控制面板”,打开“控制面板”界面,双击“管理工具”,然后再双击“数据源(ODBC)”,就打开了“ODBC数据源管理器”,选择“系统DSN”。
2.单击“添加”,弹出“创建新数据源”对话框,选择“Microsoft Access Driver(*.mdb)”。
3.点击“完成”,弹出“ODBC Microsoft Access安装”对话框,单击“创建”,开始创建数据库,弹出“新建数据库”对话框,添加数据库名称my_db和选择数据库存放目录,单击“确定”,创建完成,然后添加数据源名:my_db。点击“确定”。
4.然后在系统数据源中就有我们刚才添加的数据源。
5.单击“确定”,完成数据源的创建。
OTL编程
下面我们用一个实例来说明:
1. 创建数据表:TestTable ( ColumA int , ColumB varchar(50),ColumC varchar(50) )
2. 插入100条数据,ColumA 为数据的 id 范围:0-99 , ColumB=”Test Data %d” , 其中 %d=id 。
3. 删除表中ColumA 中小于10和大于90的数据。
4. 将ColumA为3的倍数的记录中ColumC更新为ColumB的内容。
具体代码为:

#include <iostream>
using namespace std;
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define OTL_ODBC // 编译 OTL 4.0/ODBC
// #define OTL_ODBC_UNIX // 如果在Unix下使用UnixODBC,则需要这个宏
#include "otlv4.h" // 包含 OTL 4.0 头文件
otl_connect db; // 连接对象

//此函数完成插入100条数据,ComulA为数据的id,范围为0-99,
//ColumB="Test Data %d",其中%d=id
void insert()  
// 向表中插入行

// 打开一个通用的流,以模板的方式向表中插入多项数据
otl_stream
  o(1, // 流的缓冲值必须设置为1
  "insert into TestTable values(:f1<int>,:f2<char[50]>,:f3<char[50]>)", 
  // SQL 语句
  db  // 连接对象
  );
char tmp1[32];
char tmp2[30];

for(int i=0;i<100;++i){
  sprintf(tmp1,"Test Data %d",i);
  sprintf(tmp2,"");
  o<<i<<tmp1<<tmp2;
}

}
//此函数完成删除表中ColumA中小于10和大于90的数据
void delete_rows()

long rpc=otl_cursor::direct_exec(db,"delete from TestTable where ColumA<10 or ColumA>90");
// rpc是作用效果的返回值,otl_cursor::direct_exec为直接执行sql语句
cout<<"Rows deleted: "<<rpc<<endl;
}

//此函数完成将ColumA为3的倍数的记录中ColumC更新为ColumB的内容
void update()
// 更新表
{
otl_stream 
  o(1, // 缓冲值
  "UPDATE TestTable "
  "   SET ColumC=:f2<char[50]> "
  " WHERE ColumA=:f1<int>", 
        // UPDATE 语句
  db // 连接对象
  );
otl_stream c(1,"select ColumB from TestTable where ColumA=:f3<int>",db);
char temp[10];
for(int i=10;i<91;i++)
{
  if(i%3==0)
  {
   c << i;
   c >> temp;
   o << temp << i;
  }
}

}

int main()
{
otl_connect::otl_initialize(); // 初始化 ODBC 环境
try{
  
  db.rlogon("UID=scott;PWD=tiger;DSN=my_db"); // 连接到 ODBC
  //或者使用下面的连接语句方式。 
  //  db.rlogon("scott/tiger@firebird"); // connect to ODBC, alternative format
  // of connect string 
  
  otl_cursor::direct_exec
   (
   db,
   "drop table TestTable",
   otl_exception::disabled // disable OTL exceptions
   ); // drop table
  
  //这里完成表的创建
  otl_cursor::direct_exec
   (
   db,
   "create table TestTable(ColumA int, ColumB varchar(50),ColumC varchar(50))"
   );  // create table
  
  insert(); // insert records into the table
  //  update(10); // update records in the table
  delete_rows();
  update();
  
}

catch(otl_exception& p){ // intercept OTL exceptions
  cerr<<p.msg<<endl; // print out error message
  cerr<<p.stm_text<<endl; // print out SQL that caused the error
  cerr<<p.sqlstate<<endl; // print out SQLSTATE message
  cerr<<p.var_info<<endl; // print out the variable that caused the error
}

db.logoff(); // disconnect from the database

return 0;

}

时间: 2024-09-10 22:09:50

使用OTL进行数据库编程的相关文章

Java、XML与数据库编程实践

xml|编程|数据|数据库 在开始学习XML和数据库编程时,大家都对一大堆的文档和资料,无从入手.作者在工作中,正好要用到了这些,就手头的一个程序进行整理.其功能很简单,得用java语言,从access数据库中,把一些数据导入到SQL数据库中.需求:原Access数据库表结构:表:production   产品型号   字符串型---产品编号    零件图号   字符串型---.零件编号    图号       字符串型---.工具编号SQL数据表结构:Project     产品表    Id

Visual C++ ADO数据库编程入门(上)

ado|c++|visual|编程|数据|数据库   ADO 是目前在Windows环境中比较流行的客户端数据库编程技术.ADO是建立在OLE DB底层技术之上的高级编程接口,因而它兼具有强大的数据处理功能(处理各种不同类型的数据源.分布式的数据处理等等)和极其简单.易用的编程接口,因而得到了广泛的应用.而且按微软公司的意图,OLE DB和ADO将逐步取代 ODBC和DAO.现在介绍ADO各种应用的文章和书籍有很多,本文着重站在初学者的角度,简要探讨一下在VC++中使用ADO编程时的一些问题.我

漫谈.Net PetShop和Duwamish ADO.NET数据库编程

ado|编程|数据|数据库 概述 ADO.NET为我们提供了强大的数据库开发能力,它内置的多个对象为我们的数据库编程提供了不同的选择.但是在允许我们灵活选用的同时,许多初学者也很迷惑,我到底是应该使用DataReader还是应该使用DataAdapter?我只想读取一小部分数据,难道我一定要Fill满整个DataSet吗?为什么DataReader不能和RecordSet一样提供一个数据更新的方法?DataSet到底有什么好处? 在本文中,我将对.net PetShop的数据库编程模式和Duwa

Java数据库编程中查询结果的表格式输出

编程|数据|数据库 [内容摘要]本文较为详细地介绍了在Java数据库编程中,利用表格输出查询结果的方法:并对所涉及的类给以了简要说明.[关键字]类.对象.接口[作者简介]男,26岁,陕西财经学院研究生,师从陈逢吉教授,从事金融信息系统方面的研究. 利用Java开发数据库应用系统时,经常需要在用户界面上显示查询结果.由于SUN公司提供的JDK1.x开发工具包不是可视化的集成开发环境(IDE),不能象Delphi.VB那样方便地把查询结果在DBGrid等表格中显示出来.因此,只能靠自己编写代码来实现

JSP中SQL数据库编程技术

js|编程|数据|数据库   JSP中SQL数据库编程技术一,SQL复习 1,SQL语句分为两类:DDL(Data Definition Language)和DML(Dat Manipulation Languge,数据操作语言).前者主要是定义数据逻辑结构,包括定义表.视图和索引;DML主要是对数据库进行查询和更新操作. 2,Create Table(DDL):  Create Table tabName(   colName1 colType1 [else],   colName2 colT

VC#数据库编程1

编程|数据|数据库 针对数据库编程始终是程序设计语言的一个重要方面的内容,也是一个难点.数据库编程的内容十分丰富,但最为基本编程的也就是那么几点,譬如:连接数据库.得到需要的数据和针对数据记录的浏览.删除.修改.插入等操作.其中又以后面针对数据记录的数据操作为重点.本文就来着重探讨一下Visual C#数据库基本编程,即:如何浏览记录.修改记录.删除记录和插入记录. 一.程序设计和运行的环境设置: (1).视窗2000服务器版 (2).Microsoft Data Acess Component

对比.NET PetShop和Duwamish来探讨Ado.NET的数据库编程模式

ado|编程|数据|数据库   对比.NET PetShop和Duwamish来探讨Ado.NET的数据库编程模式 概述Ado.NET为我们提供了强大的数据库开发能力,它内置的多个对象为我们的数据库编程提供了不同的选择.但是在允许我们灵活选用的同时,许多初学者也很迷惑,我到底是应该使用DataReader还是应该使用DataAdapter?我只想读取一小部分数据,难道我一定要Fill满整个DataSet吗?为什么DataReader不能和RecordSet一样提供一个数据更新的方法?DataSe

转转:ASP.NET数据库编程 (1)

asp.net|编程|数据|数据库 ASP.NET数据库编程 7/17/2001 9:59:0· 天极新技术工作室·yesky ASP.NET中的ADO.NET和ASP中的ADO相对应,它是ADO的改进版本.在ADO.NET中,通过Managed Provider所提供的应用程序编程接口(API),可以轻松地访问各种数据源的数据,包括OLEDB所支持的和ODBC支持的数据库. 下面介绍ADO.NET中最重要的两个概念:Managed Provider和DataSet. Managed Provi

用Visual C#中实现DB2数据库编程(转)

visual|编程|数据|数据库 在Visual Studio.NET Beta 1版本中访问IBM DB2等非SQL Server数据库通常是使用ADO.NET的ODBC方法,而在Beta 2中则改用OLE DB方式存取数据库. Beta1中连接字符串主要需声明数据库的ODBC的DNS名字,但Beta 2中的OLE DB连接的字符串就较复杂了,使用的类也不相同.由于DB2等数据库在大型机等应用中使用非常广泛,.NET自然会全力支持此类编程开发,为此,下文将逐步阐述OLE DB的DB2开发. O