(2)SQL通信区。SQL Server数据库管理系统提供了一个通信区SQLCA,用于存储SQL语句运行时DBMS反馈给应用程序的状态,这些信息主要描述系统当前工作状态以及运行环境等。应用程序从SQLCA中取出这些状态信息,以决定接下来执行的语句。在C语言中定义为SQL通信区的语句为:EXEC SQL INCLUDE SQLCA。
(3)主变量。嵌入式SQL语句中可以使用C语言的程序变量及主变量来输入或输出数据。一个主变量可以附带一个任选的指示变量用来指示返回给主变量的值是否为NULL值以及返回给主变量的字符串是否发生了截断。输入主变量出现于SQL语句中时,可在前面加冒号(:)以区别表字段名。而定义输出变量用指示变量的方法,是在SQL语句EXEC SQL BEGIN DECLARE SECTION与EXEC SQL END DECLARE SECTION之间进行说明。
(4)链接数据库。C程序的主函数中应包含一条登录语句,向预编译和程序提供用户名和口令,以实现与SQL Server数据库管理系统建立链接。其命令语法为:EXEC SQL CONNECT TO 服务器名.数据库名AS链接名 USER 用户名.口令。
2 SQL Server中图像数据处理技术
2.1 SQL Server 2000图像存储方法
SQL Server 2000中,对于小于8 000 B的图像数据可以使用二进制数据类型(binary、varbinary)表示,但通常要保存的图像都大于8 000 B,对于这类大对像数据,系统提供了Image数据类型。Image数据类型不同于其他数据类型,该字段内容不能使用标准INSERT和UPDATE等语句进行插入和更新,因此用C语言程序[3]来编写处理图像文件,需要先将图像文件等数据转换成十六进制后存储,再将Image列中的数据存储为位串。SQL Server不能对它进行解释,Image列数据的解释必须由应用程序完成,这与普通的数据存储方式是不同的。Image列所做的全部工作就是提供一个位置用来存储组成图像数据值的位流,这需用到SQL Server中的TEXTPTR、WRITETEXT和UPDATETEXT等函数进行图形的添加和修改。以下是一个C语言与SQL Server 2000的嵌入式编程及图像处理的实例,程序给出的是解决该问题的核心部分。