otl_exception

这个类是OTL用来抛出异常的类。如果数据库API返回一个非0的错误值,则OTL会将会抛出一个otl_exception的异常。一个otl_exception异常有可能是一个数据库错误或是一个OTL定义的错误。

序号

函数、成员变量

说明

1

char stm_text[2048 or OTL_EXCEPTION_STM_TEXT_SIZE]

OTL异常里面SQL语句的前2047个字符。当设置了stream label(在otl_stream或open()函数里面的sqlstm_label设置)后,它就被SQL的数据成员替代了SQL语句。

2

char var_info[256]

如果抛出了“Incompatible data types in stream operation”异常,则该变量被用来填充绑定变量和字段信息。如:bind variable name/select output column number <datatype>

3

#if defined(OTL_UNICODE_EXCEPTION_AND_RLOGON)

SQLWCHAR msg[1000];

#else

unsigned char msg[1000];

#endif

数据库错误信息或是OTL错误信息。

4

int code

数据库错误的编码或是OTL错误编码

5

#if defined(OTL_UNICODE_EXCEPTION_AND_RLOGON)

SQLWCHAR sqlstate[1000];

#else

unsigned char sqlstate[1000];

#endif

仅适用于ODBC或DB2 CLI。对于OCI它始终为空。

用来存放SQL的状态信息,详细请见ODBC或DB2 CLI手册。

6

#if defined(OTL_EXTENED_EXCEPTION)

#if defined(OTL_UNICODE_EXCEPTION_AND_RLOGON)

int arr_len;

SQLWCHAR *msg_arr[];

SQLWCHAR *sqlstate_arr[];

int code_arr[]

#else

int arr_len;

char * msg_arr[];

char * sqlstate_arr[];

int code_arr[];

#endif

#endif

扩展字段信息。通过SQLGetDiagRec()函数,获取所有的ODBC/DB2 CLI动态记录信息。

OTL的异常往往只取第一条信息,但对于ODBC、DB2 CLI在某些情况下,它会带有多条动态的信息,此时该变量里面包含有所有的信息。arr_len是信息数量。

msg_arr里面是消息;sqlstate_arr里面是sqlstate;code_arr里面是错误码。

7

#if defined(OTL_EXCEPTION_ENABLE_ERROR_OFFSET)

int error_offset

#endif

仅适用于OCI。

SQL语句解析错误码。

8

enum{disabled = 0,enabled = 1};

定义两个常量用于静态的SQL语句。

OTL翻译(7) -- otl_exception类的更多相关文章

  1. OTL翻译(4) -- otl_stream类

    otl_stream Otl_stream是具体实现otl_stream_concept的类.任何的SQL语句.SQL语句块和存储过程都能通过otl_stream进行处理. 传统的数据库API处理SQ ...

  2. OTL翻译(6) -- otl_connect类

    otl_connect 这个类封装了连接的功能,如连接.断开连接.提交.回滚等.otl_connect也就是一个用来创建连接对象并进行管理的类. 序号 方法.变量 说明 1 int connected ...

  3. otl翻译(11) -- OTL的迭代器

    OTL stream read iterator 这个类是一个像传统的JDBC中的getter()操作一样扩展了OTL流的模板类.它现在还不支持UNICODE字符集.它对otl_refcur_stre ...

  4. OTL翻译(3) -- OTL的主要类

    相比于传统的C++类库而言,OTL更像是一个代码容器,里面复杂,但对外的接口简单.OTL在处理程序方面受到了STL的影响. OTL有一个模板框架,它实现了otl_stream的概念.该框架由模板类和内 ...

  5. OTL翻译(8) -- otl_long_string/otl_long_unicode_string类

    otl_long_string/olt_long_unicode_string 这两个类主要用来处理大对象数据.从OTL4.0版本开始,otl_long_string还可以处理任何类型的RAW/BIA ...

  6. OTL翻译(9) --常量的SQL语句

    常量的SQL语句 一个没有绑定变量的SQL语句.SQL语句块或是存储过程就被称为常量的SQL语句.OTL通过一个静态的函数来执行这样的SQL语句. 例如: // static otl_cursor:: ...

  7. OTL翻译(1) -- 说明

    说明 该文档说明的是4.0版本的ORACLE/ODBC和DB2-CLI模板库(OTL).OTL4.0(后面简称OTL)模板库是基于C++的模板的. OTL4.0是组合了C++的模板框架和OTL适配器. ...

  8. OTL翻译(10) -- OTL的流缓冲池

    OTL的流缓冲池 一般来讲,流一般作为一个局部的变量被使用,当使用完毕后就立刻关闭,如果需要再次使用就需要再次的声明变量,如此循环.OTL流的缓冲池(内存池)是一个解决以往的流性能低下的一个机制.当流 ...

  9. OTL翻译(5) -- otl_stream流相关绑定变量

    声明绑定变量 本章节将详细的说明如何在otl_stream流里面声明绑定变量. SQL语句.SQL语句块或存储过程在程序里面使用的时候总是带有占位符.OTL里面带有一个小的解析器用来解析这些占位符,并 ...

随机推荐

  1. vscode 配置import @ 路径提示及代码智提

    1.安装插件:Path Intellisense 2.配置: "path-intellisense.mappings": { "@": "${work ...

  2. git获取帮助

    想了解 Git 的各式工具该怎么用,可以阅读它们的使用帮助,方法有三: $ git help <verb> $ git <verb> --help $ man git-< ...

  3. Xamarin无法调试Android项目

    Xamarin无法调试Android项目   项目可以正常编译,生成APK,也可以通过右键菜单部署.但是一旦开启调试,就报错.错误信息如下: 没有为此解决方案配置选中要生成的项目   出现这种问题是因 ...

  4. [ 原创 ] Java基础5--abstract class和interface的区别

    1.含有abstract抽象修饰符的类就是抽象类.abstract 类不能创建实例对象 2.含有abstract方法的类必须定义为abstract class,abstract class类中的方法不 ...

  5. Linux驱动之内存访问

    <背景> 内存会以分页方式组织内存,而且每页大小和计算机体系结构有关系,Linux中每个页都有对应的struct page{} 与之对应.                         ...

  6. 深入理解python中的select模块

    简介 Python中的select模块专注于I/O多路复用,提供了select  poll  epoll三个方法(其中后两个在Linux中可用,windows仅支持select),另外也提供了kque ...

  7. 【WIN10】程序內文件讀取與保存

    DEMO下載:http://yunpan.cn/cFHIZNmAy4ZtH  访问密码 cf79 1.讀取與保存文件 Assets一般被認為是保存用戶文件數據的地方.同時,微軟還支持用戶自己創建文件夾 ...

  8. codevs 1462 素数和

    1462 素数和  时间限制: 1 s  空间限制: 64000 KB  题目等级 : 青铜 Bronze     题目描述 Description 给定2个整数a,b 求出它们之间(不含a,b)所有 ...

  9. [Arc063F] Snuke's Coloring 2

    [Arc063F] Snuke's Coloring 2 题目大意 给你一个网格图,一些点上有标记,求边长最大空白矩形. 试题分析 专门卡\(\log^2 n\)系列. 首先由题意我们可以找到答案的下 ...

  10. 浅谈期望的线性性(可加性)【CodeForces280c】【bzoj3036】【bzoj3143】

    [pixiv] https://www.pixiv.net/member_illust.php?mode=medium&illust_id=63399955 向大(hei)佬(e)势力学(di ...