欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

用SQL Server为Web浏览器提供图像1

程序员文章站 2022-07-02 15:47:20
微软sql server(windows平台上强大的平台)数据库服务器能够在sql数据库里保存图片和大量的文本。图片和文本使用的数据类型分别是image图片类型和text文本类型。假如使用vb或vc...
微软sql server(windows平台上强大的平台)数据库服务器能够在sql数据库里保存图片和大量的文本。图片和文本使用的数据类型分别是image图
片类型和text文本类型。假如使用vb或vc开发前端应用程序,在windows操作上运行,那么可以容易地从sql数据库里
提取图片数据,把它放入一个文件,并在屏幕上显示出来。但是,要是想从sql server(windows平台上强大的数据库平台)得到图片,并在web里显示,
就不那么容易了。虽然在微软sql server(windows平台上强大的数据库平台) 6.5里提供了web助理和存储过程 sp_makewebtask、sp_runwebtask,它们能够把
sql数据库里的数据转化成html文件,但是我们有更好的解决办法。使用web助理的一个问题是,它不接受图片数据类型的
字段。另一方面,存储过程 sp_makewebtask 的参数太多,很难使用,而且也很难对web页面进行自定义。

    我们在这里提供了一个解决方案,把图片从sql数据装载到web浏览器,这个方案要比sp_makewebtask好。我们用一个
activex 动态链接库和asp页面开发了一个web项目。动态链接库负责打开到保存图片的sql数据库的连接,从数据库提取图
片并把它们保存在临时文件里。asp和动态链接库进行通信,取得临时图片文件的位置。这样,当访问者点击web站点时,
图片就会下载到他的浏览器。在这篇文章里,我们要介绍设置sql数据库的步骤。然后,我们还要介绍如何利用vb5和活动
数据对象ado 1.5建立activex动态链接库。最后,我们还要讨论建立asp web项目、连接到sql数据库以及编写asp文件的处
理过程。

设置sql数据库

    这篇文章里使用的数据库非常简单,只包含一个表,名字叫products,代表普通小杂货店里的各种不同的商品。设置
数据库的第一步是建在微软sql server(windows平台上强大的数据库平台)里建立一个数据库设备(译者注:在sql server(windows平台上强大的数据库平台) 7.0里,数据库设备的概念已经取
消) 。虽然可以编写sql脚本来设置数据库,但是使用sql企业管理器操作更容易些。打开企业管理器,在树中选择数据库
设备(database device)。单击鼠标右键,在快捷菜里选择新建设备(new device)。在名称(name )字段里,输入
grocevb_dev,把这个设备的大小设置为2mb。然后,单击建立(create now ) 按钮,就建立了数据库。接着,用同样的
方法建立另一个数据库设备,作为日志文件。给这个设备起名叫grocevb_log ,把它的大小设置为1mb。

下一步,需要建立一个新的数据库。在树中选择数据库(database),单击右键。然后,在弹出菜单里选择新建数据库
(new database)。在建立新数据库对话框里,输入数据库名称 grocevb,并从下拉列表里选择前面建立的grocevb_dev
作为数据设备, grocevb_log 作为日志设备。然后,单击建立(create now)按钮,数据库就建立了。我们暂时忽略有关
数据库安全性、数据库备份、用户访问等方面的问题,因为它们跟这篇文章没有直接的关系。

我们建立的数据库只有一个表,表名是products。在这个表里有几个字段,其中,有两个字段prod_image 和
prod_imagetype 需要特别说明。prod_image 字段的数据类型是image图片,在这个字段里保存某个产品的图片。
prod_imagetype 字段保存图片的类型,比如.gif 或 .jpg,这是在互联网上最常用的两种图片类型。这个表的主关键字是
prod_id,它是非集簇的索引。这样,每个图片都有一个唯一的 prod_id。在 列表 a里给出了建立 products 表的sql脚
本。在这个表里,只放了四个产品,用于本文演示。

列表a:建立products表的脚本。

/** 用来建立imageloader vb动态链接库使用的产品表。**/
create table products
(
    prod_id  int  constraint pk_prod prima(最完善的虚拟主机管理系统)ry key nonclustered identity(1, 1),
    categ_id  int  null  constraint fk_prod references categories(categ_id),