天天看点

使用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的方式来进行操纵。

优点:

      a. 跨平台

      b. 运行效率高,与C语言直接调用API相当

      c. 开发效率高,起码比ADO.net使用起来更简单,更简洁

      d. 部署容易,不需要ADO组件,不需要.net framework 等

缺点:

      a. 说明文档以及范例不足够丰富(暂时性的)

建立数据源

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的内容。

具体代码为:

使用OTL进行数据库编程

#include <iostream>

使用OTL进行数据库编程

using namespace std;

使用OTL进行数据库编程

#include <stdio.h>

使用OTL进行数据库编程

#include <string.h>

使用OTL进行数据库编程

#include <stdlib.h>

使用OTL进行数据库编程

#define OTL_ODBC // 编译 OTL 4.0/ODBC

使用OTL进行数据库编程

// #define OTL_ODBC_UNIX // 如果在Unix下使用UnixODBC,则需要这个宏

使用OTL进行数据库编程

#include "otlv4.h" // 包含 OTL 4.0 头文件

使用OTL进行数据库编程

otl_connect db; // 连接对象

使用OTL进行数据库编程
使用OTL进行数据库编程

//此函数完成插入100条数据,ComulA为数据的id,范围为0-99,

使用OTL进行数据库编程

//ColumB="Test Data %d",其中%d=id

使用OTL进行数据库编程

void insert()  

使用OTL进行数据库编程

// 向表中插入行

使用OTL进行数据库编程

使用OTL进行数据库编程

// 打开一个通用的流,以模板的方式向表中插入多项数据

使用OTL进行数据库编程

otl_stream

使用OTL进行数据库编程

  o(1, // 流的缓冲值必须设置为1

使用OTL进行数据库编程

  "insert into TestTable values(:f1<int>,:f2<char[50]>,:f3<char[50]>)", 

使用OTL进行数据库编程

  // SQL 语句

使用OTL进行数据库编程

  db  // 连接对象

使用OTL进行数据库编程

  );

使用OTL进行数据库编程

char tmp1[32];

使用OTL进行数据库编程

char tmp2[30];

使用OTL进行数据库编程
使用OTL进行数据库编程

for(int i=0;i<100;++i){

使用OTL进行数据库编程

  sprintf(tmp1,"Test Data %d",i);

使用OTL进行数据库编程

  sprintf(tmp2,"");

使用OTL进行数据库编程

  o<<i<<tmp1<<tmp2;

使用OTL进行数据库编程

}

使用OTL进行数据库编程
使用OTL进行数据库编程
使用OTL进行数据库编程

//此函数完成删除表中ColumA中小于10和大于90的数据

使用OTL进行数据库编程

void delete_rows()

使用OTL进行数据库编程
使用OTL进行数据库编程

long rpc=otl_cursor::direct_exec(db,"delete from TestTable where ColumA<10 or ColumA>90");

使用OTL进行数据库编程

// rpc是作用效果的返回值,otl_cursor::direct_exec为直接执行sql语句

使用OTL进行数据库编程

cout<<"Rows deleted: "<<rpc<<endl;

使用OTL进行数据库编程
使用OTL进行数据库编程
使用OTL进行数据库编程

//此函数完成将ColumA为3的倍数的记录中ColumC更新为ColumB的内容

使用OTL进行数据库编程

void update()

使用OTL进行数据库编程

// 更新表

使用OTL进行数据库编程

{

使用OTL进行数据库编程

otl_stream 

使用OTL进行数据库编程

  o(1, // 缓冲值

使用OTL进行数据库编程

  "UPDATE TestTable "

使用OTL进行数据库编程

  "   SET ColumC=:f2<char[50]> "

使用OTL进行数据库编程

  " WHERE ColumA=:f1<int>", 

使用OTL进行数据库编程

        // UPDATE 语句

使用OTL进行数据库编程

  db // 连接对象

使用OTL进行数据库编程
使用OTL进行数据库编程

otl_stream c(1,"select ColumB from TestTable where ColumA=:f3<int>",db);

使用OTL进行数据库编程

char temp[10];

使用OTL进行数据库编程

for(int i=10;i<91;i++)

使用OTL进行数据库编程
使用OTL进行数据库编程

  if(i%3==0)

使用OTL进行数据库编程

  {

使用OTL进行数据库编程

   c << i;

使用OTL进行数据库编程

   c >> temp;

使用OTL进行数据库编程

   o << temp << i;

使用OTL进行数据库编程

  }

使用OTL进行数据库编程
使用OTL进行数据库编程
使用OTL进行数据库编程
使用OTL进行数据库编程
使用OTL进行数据库编程

int main()

使用OTL进行数据库编程
使用OTL进行数据库编程

otl_connect::otl_initialize(); // 初始化 ODBC 环境

使用OTL进行数据库编程

try{

使用OTL进行数据库编程
使用OTL进行数据库编程

  db.rlogon("UID=scott;PWD=tiger;DSN=my_db"); // 连接到 ODBC

使用OTL进行数据库编程

  //或者使用下面的连接语句方式。 

使用OTL进行数据库编程

  //  db.rlogon("scott/tiger@firebird"); // connect to ODBC, alternative format

使用OTL进行数据库编程

  // of connect string 

使用OTL进行数据库编程
使用OTL进行数据库编程

  otl_cursor::direct_exec

使用OTL进行数据库编程

   (

使用OTL进行数据库编程

   db,

使用OTL进行数据库编程

   "drop table TestTable",

使用OTL进行数据库编程

   otl_exception::disabled // disable OTL exceptions

使用OTL进行数据库编程

   ); // drop table

使用OTL进行数据库编程
使用OTL进行数据库编程

  //这里完成表的创建

使用OTL进行数据库编程
使用OTL进行数据库编程
使用OTL进行数据库编程
使用OTL进行数据库编程

   "create table TestTable(ColumA int, ColumB varchar(50),ColumC varchar(50))"

使用OTL进行数据库编程

   );  // create table

使用OTL进行数据库编程
使用OTL进行数据库编程

  insert(); // insert records into the table

使用OTL进行数据库编程

  //  update(10); // update records in the table

使用OTL进行数据库编程

  delete_rows();

使用OTL进行数据库编程

  update();

使用OTL进行数据库编程
使用OTL进行数据库编程
使用OTL进行数据库编程
使用OTL进行数据库编程

catch(otl_exception& p){ // intercept OTL exceptions

使用OTL进行数据库编程

  cerr<<p.msg<<endl; // print out error message

使用OTL进行数据库编程

  cerr<<p.stm_text<<endl; // print out SQL that caused the error

使用OTL进行数据库编程

  cerr<<p.sqlstate<<endl; // print out SQLSTATE message

使用OTL进行数据库编程

  cerr<<p.var_info<<endl; // print out the variable that caused the error

使用OTL进行数据库编程
使用OTL进行数据库编程
使用OTL进行数据库编程

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

使用OTL进行数据库编程
使用OTL进行数据库编程

return 0;

使用OTL进行数据库编程
使用OTL进行数据库编程