标准C++语言,支持 unix/linux/windows,只有一个头文件;
接口简洁。otl_stream,otl_connect,otl_exception等就可以完成大部分工作;
直接访问数据库API接口,具有API接口的高效率,可靠性和线程安全性。
otl_connect提供数据库连接、事务操作的功能。
主要成员函数如下:
static int otl_initialize(const int threaded_mode=0);
// 静态函数,初始化OTL数据库环境,必须在调用OTL API 之前被调用;threaded_mode = 1表示运行在多线程环境;
static int otl_terminate();
//在多线程环境中尤其有用;
int connected;
// 是否已经连接到数据库;
otl_connect(const char* connect_str,const int auto_commit=0);
//构造函数,内部调用rlogon;
void rlogon(const char* connect_str,const int auto_commit=0);
//创建数据库连接;
void logoff();
//关闭数据库连接;
void commit();
//提交事务;
void rollback ();
//将上次提交的事务进行回滚;
void auto_commit_on();
//设置SQL语句自动提交状态;
void auto_commit_off();
//设置SQL语句非自动提交状态。
otl_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);
//arr_size缓冲记录的条数,sqlstm 要执行的SQL 语句,db 使用的数据库连接,ref_cur_placeholder 表示返回的光标(如果有的话)的名字;
void close();
//关闭流;
int good();
//测试流是否已经成功打开;
int eof();
//测试数据读取,是否到了流的结尾,和标准C++ 流的eof 相同;
int is_null();
//测试通过>> 运算符获取的值是否为空;
void set_commit(int auto_commit=0);
//刷新flush()缓冲区的时候,是否自动提交事务,默认为。从更易于理解的角度,建议在显式提交的应用中用otl_nocommit_stream,但建议事务最好放到存储过程里做,在代码中将会变得很麻烦,代码中不再调用set_commit,使用默认自动提交为true;
void flush();
//刷新otl_stream 的缓冲区(获取新的数据或者把数据写到数据库中);如果是自动提交,当缓冲区满的时候,otl_stream 会自动flush。当关闭了自动提交;
void clean(const int clean_up_error_flag=0);
//清空缓冲区而不执行刷新操作;
operator<<();
//为数据流对象的变量赋值;
operator>>();
//获得数据流的查询返回值。
otl_exception类为数据库异常类,存储访问数据库发生异常时的信息。
其主要成员如下:
char stm_text[2048 or OTL_EXCEPTION_STM_TEXT_SIZE] ;
//发生异常时的SQL语句的前个字符;
char var_info[256];
//发生异常时的变量信息;
unsigned char msg[1000];
//异常信息;
int code;
//异常代码;
unsigned char sqlstate[1000];
//SQL语句的状态信息。