在使用otl的时候,otl_stream构造函数第一个参数buffer size的使用说明.

http://otl.sourceforge.net/otl3_stream_class.htm 中对buffer size 的说明是:The buffer size is defined in logical rows to inserted into a table, selected from a table / view in one round-trip to the database (a.k.a. batch size, array size).
为此做了如下例子进行了测试.

代码如下:

// TestOCT.cpp : Defines the entry point for the console application.
#include "stdafx.h"
#include <iostream>
using namespace std;

#include <stdio.h>
//#define OTL_ORA10G
#define OTL_ORA9I // Compile OTL 4.0/OCI9i
#define OTL_ORA_UTF8 // Enable UTF8 OTL for OCI9i
#include <otlv4.h> // include the OTL 4.0 header file
#pragma comment(lib, "oci.lib")
otl_connect db; // connect object
#define CONNECTSTRING "test/12345@192.168.1.202"

char strSql[100]  = { "select f1,f2 from test_tab"};
void insert()
{
 otl_stream o(3,"INSERT INTO TEST_TAB(f1,f2)values(4,'b')",db);
}
void select()
{
 otl_stream o(1,strSql,db);
 int count = 0;
 int myf1;
 char myf2[30] = {""};
 while(!o.eof())
 {
  o>>myf1;
  o>>myf2;
  count++;
  cout<<"f1: "<<myf1<<", f2: "<<myf2<<", 当前行数: "<<count<<endl;
 }
 return ;
}

int main()
{
    otl_connect::otl_initialize(); // initialize OCI environment
    try
 {
  db.rlogon(CONNECTSTRING); // connect to Oracle

  otl_cursor::direct_exec(db,"drop table test_tab",otl_exception::disabled); // drop table
  otl_cursor::direct_exec(db,"create table test_tab(f1 number, f2 nvarchar2(30))");  // create table
     insert(); // insert records into table
     select(); // select records from table
 }
 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.var_info<<endl; // print out the variable that caused the error
 }

 db.logoff(); // disconnect from Oracle
 return 0;

插入数据: otl_stream o(3,"INSERT INTO TEST_TAB(f1,f2)values(4,'b')",db);中otl_stream的构造函数的第一个 参数表示要插入的数据条数.

查询数据:otl_stream o(1,strSql,db);中otl_stream的构造函数的第一个参数表示查询到的数据从服务器传递到客户端的往返次数

执行上面的程序,得到的结果就是:

f1: 4, f2: b, 当前行数1

f1: 4, f2: b, 当前行数1

f1: 4, f2: b, 当前行数1


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值