- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
OTL 编程简介
功能
OTL 是 Oracle 和 ODBC 的模板库,它屏蔽数据库操作的底层,提供数据库连接功能, 以标准 C++ 流的方式完成嵌入式 SQL 语句、存储过程的执行和光标操作。
otl_connect 类
提供数据库连接、事务操作的功能。
(SHBOSS 开发中,由 CDBConnGuard 类屏蔽之并进行连接等管理。) 主要成员函数:
int connected; // 是否已经连接到数据库
static int otl_initialize(const int threaded_mode=0);
// 初始化 OTL 环境, 必须在调用 OTL API 之前被调用;
threaded_mode=1 表示运行在多线程环境
void set_max_long_size(const int amax_size); // 设置缓冲区大小(仅对大数据字段适用)
otl_connect(const char* connect_str,const auto_commit=0); // connect_str 的 格 式
int
:
USER/PASSWORD@TNS_ALIAS , 如 果 是 本 地 连 接 则 不 需 要
TNS_ALIAS
void rlogon(const char* connect_str,const int auto_commit=0);
void logoff();
void server_attach(const char* tnsname=0); // OTL/OCI8 only
void server_detach();// OTL/OCI8 only
session_begin(const char* username, const char* password, const int auto_commit=0);// OTL/OCI8 only
void session_end();// OTL/OCI8 only
void session_reopen(const int auto_commit=0)// OTL/OCI8 only,打开用 session_end 关闭的会话
void commit();
void rollback();
注释:使用 server、session 来登录比用 rlogon 效率更高
建议使用显式的 commit 和 rollback,不使用 autocommit
otl_stream 类
概述
以宿主调用和流的方式完成 SQL 语句的执行。
工作原理:先分析程序员指定的 SQL 语句,之后以流的方式把数据和 otl_stream
内部的缓冲区作交换,通过 flush() 将数据刷新到数据库中。
otl_nocommit_stream
主要成员函数
otl_stream(
const short arr_size, const char* sqlstm, otl_connect db,
const char*
ref_cur_placeholder=0)
)
构造函数
arr_size 表示缓冲记录的条数sqlstm 表示要执行的 SQL 语句db 表示使用的数据库连接
ref_cur_placeholder 表示返回的光标(如果有的话)的名字
void open( 同上
const short arr_size, const char* sqlstm, otl_connect db,
const char*
ref_cur_placeholder=0)
)
void close() int good() int eof() void flush()
关闭流
测试流是否已经成功打开
是否到了流的结尾,和标准 C++ 流的 eof 相同
刷新 otl_stream 的缓冲区(获取新的数据或者把数据写到数据库中);当缓冲区满的时候,otl_stream会自动 flush;如果设置了自动提交,则在 flush 的时候将会触发提交
void clean(const int 清空缓冲区而不执行刷新操作
clean_up_error_flag=0)
int is_null() 测试通过 运算符获取的值是否为空
long get_rpc()
otl_column_desc* describe_select(int desc_len);
void set_commit( int auto_commit=0
)
OTL 的数据类型
获取处理了的记录数目,限于 INSERT、DELETE、UPDATE 语句
获取字段描述信息,适用于 SELECT 语句、引用光标
(OCI)和存储过程(ODBC for MS SQL Server and Sybase)
原创力文档


文档评论(0)