zoukankan      html  css  js  c++  java
  • DB2 9 运用开发(733 测验)认证指南,第 4 部分: 嵌入式 SQL 编程(6)

    构建与 DB2 截兰交互的运用顺序
    developerWorks








    竣事语

    本教程引见了嵌入式 SQL 编程,并率领您完成了开发嵌入式 SQL 运用顺序的根本步骤。结构化究诘言语(Structured Query Language,SQL)是用于操作数据库对象及其所包罗数据的范例模范化言语。由于 SQL 是非进程的,以是它不是一种通用的编程言语。是以,每每颠末议定将低级编程言语的选择和序列控制与数据存储、操作和检索等 SQL 遵守组合起来,开发出数据库运用顺序。可以用多种方式将 SQL 与低级编程言语结合起来,但最简朴的方式是将 SQL 语句间接嵌入用于创立运用顺序的低级编程言语源代码文件中。

    运用嵌入式 SQL 开发运用顺序的错误差池之一是,低级编程言语编译器不领会在源代码文件中嵌入的 SQL 语句,是以也无法注释它们。是以,在对包罗嵌入式 SQL 的源代码文件中止编译和链接以迸发可执行运用顺序之前,必需对它们中止预措置(运用称作预编译的进程)。为了便于中止预措置,在低级编程言语源代码文件中,嵌入的每个 SQL 语句必需以关头字 EXEC SQL 为前缀,并以分号(在 C/C 中)或关头字 END_EXEC (在 COBOL 中)竣事。由一个称为 SQL 预编译器的非凡对象执行预措置;当 SQL 预编译器遇到 EXEC SQL 关头字时,就用特定于 DB2 的函数挪用交换随后的文本(直到发现分号(;)或关头字 END-EXEC),从而将遇到的 SQL 语句转发给 DB2 Database Manager 中止措置。

    非常,DB2 Database Manager 也无法间接运用低级编程言语的变量。相反,它必需运用称为宿主变量的非凡变量,在运用顺序和数据库之间挪动数据。宿主变量看上去与任何其他低级编程言语变量一样;为了加以区分,必需在名为声明段的公用区域中界说它们。另外,为了让 SQL 预编译器区分宿主变量和 SQL 语句中的其他文本,关于宿主变量的扫数援用都必需以冒号(:)开头。

    为了对数据库执行任何范例的操作,必需首先建立到数据库的跟尾。在嵌入式 SQL 运用顺序中,颠末议定执行 CONNECT SQL 语句来建立(某些状态下为停止)数据库跟尾。在跟尾进程中,建立跟尾所需的信息(比喻受权 ID 和受权用户呼应的口令)将被通报给稳健的数据库以中止有效性考验。但凡,在运用顺序运转时汇集该信息,并颠末议定一个或多个宿主变量将其通报给 CONNECT 语句。

    嵌入式 SQL 运用顺序由静态和静态的 SQL 语句构成。静态 SQL 语句但凡较相宜于对一组已知的数据库对象执行预界说操作的高功效运用顺序。静态 SQL 语句但凡较相宜于与疾速更动的数据库截兰交互或许允许用户界说和执行特定究诘的运用顺序。当在运用顺序中嵌入静态 SQL 语句时,在遇到它们时就执行。然则,当运用静态 SQL 语句时,则可以用两种方式之一措置它们:

    • 准备和执行:这种方式将 SQL 语句的准备与它的真正执行别隔开,当要几次执行 SQL 语句时,但凡运用该方式。当运用顺序需求预先知道在执行 SELECT SQL 语句时所迸发的成就数据集中存在的列的有关信息时,也运用该方式。SQL 语句 PREPAREEXECUTE 用于以该方式措置静态 SQL 语句。

    • 立即执行:这种方式将 SQL 语句的准备和执行组理会一步,当 SQL 语句只执行一次时,但凡运用该方式。当运用顺序不需求关于在执行 SQL 语句时将会迸发的成就数据集(要是有的话)的附加信息时,也运用该方式。SQL 语句 EXECUTE IMMEDIATE 用于以该方式措置静态 SQL 语句。

    当究诘向运用顺序前往多行时,DB2 运用称为 “游标” 的机制从所迸发的成就数据集中检索数据值。DB2 游标指示出成就数据集中的当前职位处所(比喻,以先行),并识别将前往给运用顺序的下一个数据行。要是要将游标包罗在嵌入式 SQL 运用顺序中,就必需顺次执行下列步骤:

    1. 声明(界说)一个游标及其范例(只读的或可更新的),并将其与所需的究诘联络关系起来。

    2. 翻开游标。这将招致执行呼应的究诘并发天生绩数据集。

    3. 一行行地检索(读取)成就数据集中存储的每一行,直到呈现数据竣事的前提。

    4. 关闭游标。这个操作招致删除执行呼应究诘时所迸发的成就数据集。

    SQLCA 数据结构包罗每当执行 SQL 语句时,由 DB2 Database Manager 更新的元素群集。指派给该结构中 sqlcode 元素的值发扬阐发该 SQL 语句是执行告成仍是掉败(值为 0 发扬阐发执行告成,正值发扬阐发执行告成但带有告诫,而负值发扬阐发迸发了错误)。在执行 SQL 语句之后,嵌入式 SQL 运用顺序至多应理立即反省所迸发的 sqlcode 值(但凡称作 SQL 前往码)。要是 SQL 语句未能按预期执行,就应该赐顾帮衬用户迸发了错误或告诫;只需前提允许,还应该给他们提供充沛的诊断信息,以便他们定位并解决标题成果。

    一旦编写好源代码文件,在创立与 DB2 数据库截兰交互的运用顺序之前,必需按所示次第执行下列步骤:

    1. 必需对扫数包罗嵌入式 SQL 语句的源代码文件中止预编译。

    2. 包罗嵌入式 SQL 语句的源代码文件一旦颠末 SQL 预编译器措置,就必需用低级编程言语编译器来编译所迸发的源代码文件(以及所需的其他源代码文件)。

    3. 当告成编译了构建运用顺序所需的扫数源代码文件之后,必需将迸发的目的模块与低级编程言语库以及 DB2 库链接起来,天生可执行的顺序。

    4. 要是由 SQL 预编译器措置的文件的包没有绑定到稳健的数据库上,就必需运用在预编译进程中迸发的绑定文件来绑定它们。运用 DB2 Binder 对象完成绑定进程。





    版权声明: 原创作品,允许转载,转载时请务必以超链接体例标明文章 原始理由 、作者信息和本声明。否则将清查执法责任。

  • 相关阅读:
    Android游戏开发22:Android动画的实现J2me游戏类库用于Android开发
    android sqlite SQLiteDatabase 操作大全 不看后悔!必收藏!看后精通SQLITE (第三部分,完整代码)
    使用OGR创建dxf格式矢量数据
    mysql 数据库引擎 MyISAM InnoDB 大比拼 区别
    android sqlite SQLiteDatabase 操作大全 不看后悔!必收藏!看后精通SQLITE (第二部分)
    mysql 更改数据库引擎
    android sqlite SQLiteDatabase 操作大全 不看后悔!必收藏!看后精通SQLITE (第一部分)
    android 数字键盘使用
    MySQL Innodb数据库性能实践
    eclipse : Error while performing database login with the driver null
  • 原文地址:https://www.cnblogs.com/zgqjymx/p/1972847.html
Copyright © 2011-2022 走看看