Chinaunix首页 | 论坛 | 博客
  • 博客访问: 74765
  • 博文数量: 35
  • 博客积分: 1640
  • 博客等级: 上尉
  • 技术积分: 400
  • 用 户 组: 普通用户
  • 注册时间: 2008-05-05 11:44
文章分类

全部博文(35)

文章存档

2011年(1)

2008年(34)

我的朋友
最近访客

分类: DB2/Informix

2008-05-05 13:18:11

本文来自“如何使用Adaptive Server Anywhere的嵌入式SQL编程接口”,Adaptive Server Anywhere是一种数据库。由于缺少嵌入式SQL的资料,所以,从这个具体的手册探查一点端倪。

简介:

嵌入式SQL是用于CC++编程语言的数据库编程接口。它由混杂在(嵌入于)CC++源代码中的SQL语句组成。这些SQL语句先由SQL预处理器转换为CC++源代码,然后再进行编译。

在运行时,嵌入式SQL应用程序是用数据库的接口库与数据库服务器进行通信。在大多数平台上,接口库是一个动态连接库(DLL)或共享库。

Windows操作系统上,接口库是dblib9.dll

UNIX操作系统上,接口库会是libdblib9.solibdblib9.sl、或libdblib9.a(视操作系统而定)。

 

开发过程概述:

在对程序成功地进行预处理和编译后,就可以将它与Adaptive Server Anywhere接口库的导入库链接在一起,以形成可执行文件。在运行数据库时,这个可执行文件使用Adaptive Server Anywhere DLL与数据库交互作用。在对程序进行预处理时,不必运行数据库。

对于WindowsWatcom C/C++ Microsoft Visual C++Borland C++各自有单独的导入库。

使用导入库是开发调用DLL中函数的应用程序的标准方法。

嵌入式SQL程序的结构:

SQL语句置于(嵌入)常规CC++代码内。所有嵌入式SQL语句都以EXEC SQL开头,并以分号(;)结尾。在嵌入式SQL语句的中间允许使用常规C语言注释。

使用嵌入式SQL的每个C程序都必须在源文件中任何其它嵌入式SQL语句之前包含以下语句:

     EXEC  SQL  INCLUDE  SQLCA;

C程序执行的第一个嵌入式SQL语句必须是CONNECT语句。CONNECT语句用于建立与数据库服务器的连接,以及指定连接期间用于授权执行的所有语句的用户ID

CONNECT语句必须是执行的第一个嵌入式SQL语句。有些嵌入式SQL命令不生成任何C代码,或者不会涉及与数据库通信。因此,允许在CONNECT语句之前使用这些命令。最主要的是INCLUDE语句和指定错误处理方法的WHENEVER语句。

使用主机变量:

主机变量是供SQL预处理器识别的C语言变量。主机变量可用于将值发送到数据库服务器或从数据库服务器接受值。

主机变量非常易于使用,但是它们具有一些限制。动态SQL是一种向数据库服务器和从数据库服务器中传递信息的更常用的方法,它使用被称为[SQL描述符区域]SQLDA)的结构。SQL预处理器为使用主机变量的每个语句自动生成SQLDA

声明主机变量:

主机变量是通过将它们放入声明部分来定义的。按照IBM SAAANSI嵌入式SQL标准,主机变量是通过用一下内容围绕常规C变量声明定义的:

     EXEC  SQL  BEGIN  DECLARE  SECTION;

     /*C  variable declarations*/

     EXEC  SQL  END  DECLARE  SECTION;

然后,可以使用这些主机变量代替任意SQL语句中的值常量。在数据库服务器执行命令时,会使用主机变量的值。注意,不能使用主机变量代替表名或列名:这需要使用动态SQL。在SQL语句中,变量名以冒号(:)为前缀,以便与语句中使用的其它表示服区别开。

标准SQL预处理器不扫描位于DECLARE  SECTION之外的C语言代码。因此,不允许使用TYPEDEF类型和结构。在DECLARE  SECTION之内允许使用变量中的初始化程序。

———待续————

阅读(1726) | 评论(0) | 转发(0) |
0

上一篇:动态SQL

下一篇:Linux下的时间概念

给主人留下些什么吧!~~