ODBC规范简介¶
ODBC(Open Database Connectivity)是被人们广泛接受的用于数据库访问的应用程序编程接口。作为数据库应用开发接口(API),它以X/Open和ISO/IEC的Call-Level Interface(CLI)规范为基础,并使用结构化查询语言(SQL)作为其数据库访问语言。ODBC是为实现最大的互操作性而设计的,即一个应用程序用相同的源代码访问不同的数据库管理系统(DBMS)的能力。数据库应用程序通过ODBC接口访问数据库,ODBC接口则在相应的驱动程序中实现。通过使用ODBC驱动程序,可以使应用程序从具体的数据库调用中隔离开来,这与打印机驱动程序将字处理程序与具体的打印机命令隔离开的方式是一样的。因为驱动程序在运行时才加载,所以,用户只需要增加一个新的驱动程序来访问新的DBMS,没有必要重新编译或者重新链接应用程序。
神通数据库 系统提供的ODBC 驱动是按照ODBC 标准实现的一套供编写数据库应用的用户调用的统一接口。一旦利用神通 数据库提供的ODBC 编写出一个ODBC 应用程序,该应用程序可以与任何后端数据库联接,而不需要明确了解数据库厂商的具体信息,只需要数据库结构保证一致。
ODBC体系结构¶
神通数据库ODBC驱动是按照ODBC标准实现一套能访问神通数据库产品的一套接口,它必须符合ODBC体系结构,因此我们先认识下ODBC的体系结构:
- 应用程序:执行处理并调用 ODBC 函数以提交 SQL 语句和检索结果;
- 驱动程序管理器:代表应用程序加载和卸载驱动程序。处理 ODBC 函数调用或将其传递给驱动程序;驱动管理器可以管理多种数据库提供的驱动;
- 驱动程序:即为各个数据库厂商提供的驱动,负责处理 ODBC 函数调用,将SQL请求提交到特定数据库中,并将结果返回到应用程序。如有必要,驱动程序会修改应用程序请求中的SQL,以便请求符合数据库支持的语法。
- 数据库:指神通、SQLserver、Oracle、mysql等数据存储产品;甚至可以是excel表格。
神通ODBC简介¶
神通数据库系统提供的ODBC 驱动是按照ODBC3.x(最高支持3.8) 标准实现的一套供编写数据库应用的用户调用的统一接口,支持Windows和Linux跨平台,支持以x86平台和所有国产平台。驱动支持参数绑定、动态绑定、连接池、大容量导入、PL执行、所有数据类型的读写;也扩展支持了IPV6、returing into语句、读写分离集群特性。一旦利用神通数据库提供的ODBC 编写出一个ODBC 应用程序,该应用程序可以与任何后端数据库联接,而不需要明确了解数据库厂商的具体信息,只需要数据库结构保证一致。
神通数据库的ODBC驱动既支持OLTP的神通数据库管理系统产品,也支持OLAP的神通MPP数据库产品。
获取神通数据库ODBC驱动¶
神通数据库的ODBC驱动包含在神通数据库安装包中,安装数据库时选择了完全安装或者自定义安装选择了驱动模块的情况下,odbc驱动在数据库安装目录下的odbc目录中,比如:$SZ_OSCAR_HOME/drivers/odbc:
图486 神通数据库安装窗口
神通ODBC的组成部分¶
Windows平台下%SZ_OSCAR_HOME%/drivers/odbc文件夹包含以下内容内容:
Linux平台下$SZ_OSCAR_HOME/drivers/odbc文件夹包含以下内容内容:
注解
OSCARODBC与OSCARODBCW动态库应该区分处理场景
OSCARODBC.dll和liboscarodbc.so库为处理ASCII的接口,不支持应用数据宽字符集的转换;而OSCARODBCW.dll和liboscarodbcw.so可以处理宽字符, Linux系统环境推荐使用liboscarodbcw.so库。 在使用odbc库时,由于odbc库对ssl等库有依赖,开发者需要将相关依赖库也拷贝到开发环境中,确保依赖正确,Linux下可以用ldd查看数据库的依赖是否正确。
驱动依赖环境变量¶
- $LANG:系统环境变量,odbc会获得这个环境变量的值来决定odbc的客户端字符集;
- $SZ_OSCAR_HOME: 为神通数据库自定义环境变量,为神通数据库安装路径,如果开启了odbc日志,则通过这个环境变量来设置日志路径。
- LINUX下 ODBC还依赖 $ODBCINI 用于寻找 odbc.ini 文件所在位置 $ODBCSYSINI 寻找 odbcinst.ini文件所在位置