zoukankan      html  css  js  c++  java
  • DB2 9 利用开荒(733 检验)认证指南,第 5 局部: CLI/ODBC 编程(2)

    developerWorks








    CLI/ODBC 编程简介

    什么是 CLI/ODBC?

    结构化查问说话(Structured Query Language,SQL)是用于把持数据库对象和它们包罗的数据的一种规范说话。可是,因为 SQL 没有历程说话的性质,因此,常常是将初级编程说话的决议和顺序控制与 SQL 的数据存储、把持和检索功用相联合来开荒数据库利用法度。有一些方法可以将 SQL 与初级编程说话相联合,但最简略的方法是将 SQL 语句间接嵌入到用于创设利用法度的初级编程说话源代码文件中。这种技术被成为嵌入式 SQL 编程。

    嵌入式 SQL 编程最年夜的错误差错是所开荒的利用法度缺乏互把持性。用嵌入式 SQL 为 DB2 开荒的利用法度如果要与其他干系数据库料理系统(RDBMS)交互,必须举行批改(在某些情形下,甚至要完全重写)。因为不论为何种 RDBMS 编写的嵌入式 SQL 利用法度中都存在何等的限定,因此在 20 世纪 90 年月初,X/Open 公司和 SQL Access Group(SAG,目下当今属于 X/Open)就为可调用 SQL 接口联合开荒了一种规范的圭臬标准。这种接口被称为 X/Open CLI。年夜局部 X/Open CLI 圭臬标准后来都被接收为 ISO CLI 国际规范的一局部。 X/Open CLI 的次要目标是颠末历程答应数据库利用法度自力于任何一种数据库料理系统的编程接口,添加数据库利用法度的可移植性。

    在 1992,Microsoft 为 Microsoft Windows 把持系统开荒了一个名为 Open Database Connectivity (ODBC) 的可调用 SQL 接口。ODBC 基于 X/Open CLI 规范圭臬标准,它提供了 X/Open CLI 没有提供的扩展功用和才能。ODBC 位于一个把持环境之上,在此环境中,一个名为 ODBC Driver Manager 的组件在利用法度运转时静态地装载特定于数据源的 ODBC 驱动法度。每个特定于数据源的驱动法度担任完成 ODBC 圭臬标准中定义的一种或全数功用,并提供与该驱动法度所针对的特定命据源的交互。ODBC Driver Manager 提供了一个齐集控制点;当一个 ODBC 利用法度执行时,收回的每个 ODBC 函数调用被发送到 ODBC Driver Manager,并从哪里转发到稳当的数据源驱动法度举行措置惩罚。颠末历程驱动法度,可以将利用法度间接链接到一个 ODBC 驱动法度库,而不消链接到每种特定于产品的数据库本身。

    DB2 Call Level Interface (DB2 CLI) 基于 ISO CLI 国际规范,它提供了 ODBC 圭臬标准中给出的年夜局部功用。运用 DB2 CLI 而不是 ODBC 的利用法度间接链接到 DB2 CLI 加载库,任何 ODBC Driver Manager 都可以加载这个库作为一个 ODBC 驱动法度。DB2 UDB 利用法度还可以独马上运用 DB2 CLI 装载库。可是,当以这种方法运用这个库时,利用法度本身不克不及与其他数据源通信。





    回页首



    嵌入式 SQL 与 CLI/ODBC 的区别

    在本系列的第四篇教程(见参考资料小节)中可以看到,嵌入式 SQL 利用法度是颠末历程间接将 SQL 语句嵌入到运用初级编程说话编写的一个或多个源代码文件中而构建的。而 CLI/ODBC 利用法度则依赖于一组规范的利用法度编程接口(API)函数将 SQL 语句发送到 DB2 Database Manager 举行措置惩罚。嵌入式 SQL 利用法度和 CLI/ODBC 利用法度在以下方面也有分歧之处:

    • CLI/ODBC 利用法度不消要显式地声明和运用主机变量;可以运用任何变量来发送数据可以从一个数据源检索数据。

    • CLI/ODBC 利用法度不消显式地声明游标。相反,每当执行 SQLExecute() 函数或 SQLExecDirect() 函数(稍后会更注重讨论这两个函数)时,会凭据需要自动生成游标。

    • 在 CLI/ODBC 利用法度中,不消要显式地翻开游标;当生成游标时,会自动翻开游标。

    • CLI/ODBC 函数运用句柄 料理环境、毗连和与 SQL 语句相干的信息。这种技术便于将那些信息看成笼统对象来对待。颠末历程运用句柄,CLI/ODBC 利用法度就不消运用特定于数据库产品的数据结构,比方 DB2 SQL Communications Area (SQLCA) 和 SQL Descriptor Area (SQLDA) 数据结构。

    • CLI/ODBC 利用法度生成就具有创设到多个数据源或分歧个数据源的多个毗连的才能。(嵌入式 SQL 利用法度只要在运用 Type 2 毗连的情形下,才能一次毗连到多个数据源。)

    嵌入式 SQL 利用法度和 CLI/ODBC 利用法度虽然有这么多分歧之处,可是它们在概念上也有一个次要的合营点:CLI/ODBC 利用法度可以执行任何能在嵌入式 SQL 利用法度中静态筹办的任何 SQL 语句。这一点是有保证的,因为 CLI/ODBC 利用法度将全数的 SQL 语句间接传递到数据源,以便静态执行这些语句。(CLI/ODBC 利用法度还可以执行一些不克不及静态筹办的 SQL 语句,比方复合 SQL 语句,可是常常上不支持静态 SQL。)

    因为是由数据源来措置惩罚 CLI/ODBC 利用法度提交的全数 SQL 语句,这就担保了 CLI/ODBC 利用法度的可移植性。而嵌入式 SQL 并不老是云云,因为如果所运用的干系数据库产品分歧,静态筹办 SQL 语句的方法也会有所分歧。另外,因为有些数据库产品(包罗 DB2)可以静态筹办 COMMITROLLBACK SQL 语句,而有些数据库产品又不克不及,因此 CLI/ODBC 利用法度中常常不运用这些语句。相反,CLI/ODBC 利用法度依赖 SQLEndTran() 函数终了活动事情(不运用自动提交的情形下)。这种技术可担保不论运用何种数据库产品,CLI/ODBC 利用法度都能乐成地终了事情。




    版权声明: 原创作品,答应转载,转载时请务必以超链接方法标明文章 原始来由 、作者信息和本声明。不然将清查法令责任。

  • 相关阅读:
    Golang mysql数据库
    C++ list结构体变量排序
    VS2013 ERROR MSB8020
    error C4996: 'fopen': This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation
    error C2664: “FILE *fopen(const char *,const char *)”: 无法将参数 1 从“LPCTSTR”转换为“const char *”
    error C4430: missing type specifier
    虚拟地址转物理地址
    vs2013 x64 编译汇编代码
    fs寄存器相关,PEB,TEB
    boost 1.57 vs2013 编译
  • 原文地址:https://www.cnblogs.com/zgqjymx/p/1972845.html
Copyright © 2011-2022 走看看