科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道用SQL Server为Web浏览器提供图像(1)

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

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

微软SQL Server数据库服务器能够在SQL数据库里保存图片和大量的文本。图片和文本使用的数据类型分别是image图片类型和text文本类型。

作者:赛迪网技术社区 来源:赛迪网技术社区 2007年9月3日

关键字: 图像 数据库 SQL Server SQL Server 各版本

  • 评论
  • 分享微博
  • 分享邮件
微软SQL Server数据库服务器能够在SQL数据库里保存图片和大量的文本。图片和文本使用的数据类型分别是image图片类型和text文本类型。假如使用VB或VC开发前端应用程序,在windows操作系统上运行,那么可以容易地从SQL数据库里提取图片数据,把它放入一个文件,并在屏幕上显示出来。但是,要是想从SQL Server得到图片,并在Web浏览器里显示,就不那么容易了。虽然在微软SQL Server 6.5里提供了Web助理和存储过程 sp_makewebtask、sp_runwebtask,它们能够把SQL数据库里的数据转化成HTML文件,但是我们有更好的解决办法。使用Web助理的一个问题是,它不接受图片数据类型的字段。另一方面,存储过程 sp_makewebtask 的参数太多,很难使用,而且也很难对Web页面进行自定义。 6+d<">jE  
n> FC  
  我们在这里提供了一个解决方案,把图片从SQL数据装载到Web浏览器,这个方案要比sp_makewebtask好。我们用一个ActiveX 动态链接库和ASP页面开发了一个Web项目。动态链接库负责打开到保存图片的SQL数据库的连接,从数据库提取图片并把它们保存在临时文件里。ASP和动态链接库进行通信,取得临时图片文件的位置。这样,当访问者点击Web站点时,图片就会下载到他的浏览器。在这篇文章里,我们要介绍设置SQL数据库的步骤。然后,我们还要介绍如何利用VB5和活动数据对象ADO 1.5建立ActiveX动态链接库。最后,我们还要讨论建立ASP Web项目、连接到SQL数据库以及编写ASP文件的处理过程。设置SQL数据库 4(AkQoW  
T hYT g  
  这篇文章里使用的数据库非常简单,只包含一个表,名字叫Products,代表普通小杂货店里的各种不同的商品。设置数据库的第一步是建在微软SQL Server里建立一个数据库设备(译者注:在SQL Server 7.0里,数据库设备的概念已经取消) 。虽然可以编写SQL脚本来设置数据库,但是使用SQL企业管理器操作更容易些。打开企业管理器,在树中选择数据库设备(Database Device)。单击鼠标右键,在快捷菜里选择新建设备(New Device)。在名称(Name )字段里,输入Grocevb_dev,把这个设备的大小设置为2MB。然后,单击建立(Create Now ) 按钮,就建立了数据库。接着,用同样的方法建立另一个数据库设备,作为日志文件。给这个设备起名叫Grocevb_log ,把它的大小设置为1MB。 PjKSX0+k  
NqJ=yt  
下一步,需要建立一个新的数据库。在树中选择数据库(Database),单击右键。然后,在弹出菜单里选择新建数据库(New Database)。在建立新数据库对话框里,输入数据库名称 grocevb,并从下拉列表里选择前面建立的Grocevb_dev 作为数据设备, Grocevb_log 作为日志设备。然后,单击建立(Create Now)按钮,数据库就建立了。我们暂时忽略有关数据库安全性、数据库备份、用户访问等方面的问题,因为它们跟这篇文章没有直接的关系。 M^\rJ>l}  
,alk.:S&83  
我们建立的数据库只有一个表,表名是Products。在这个表里有几个字段,其中,有两个字段prod_image 和 prod_imagetype 需要特别说明。prod_image 字段的数据类型是image图片,在这个字段里保存某个产品的图片。prod_imagetype 字段保存图片的类型,比如.gif 或 .jpg,这是在互联网上最常用的两种图片类型。这个表的主关键字是prod_id,它是非集簇的索引。这样,每个图片都有一个唯一的 prod_id。在 列表 A里给出了建立 Products 表的SQL脚本。在这个表里,只放了四个产品,用于本文演示。 ;< cc.beW  
^3fJpD  
列表A:建立products表的脚本。 4<=OioL V  
<3&YtY\S  
/** 用来建立ImageLoader VB动态链接库使用的产品表。**/ QS(#z%W  
CREATE TABLE Products *RXT+)c1  
( e;n$xD,Ui  
  prod_id int CONSTRAINT pk_prod PRIMARY KEY NONCLUSTERED IDENTITY(1, 1), ?NSZiM  
  categ_id int NULL CONSTRAINT fk_prod REFERENCES categories(categ_id), ,bfH;m  
  prod_name char(80) NOT NULL UNIQUE   NONCLUSTERED, Jz[ou|059<  
  prod_unitprice money NOT NULL, u dv,j7Y  
  prod_unitquant char(15) NOT NULL, H"An<~  
  prod_desc varchar(255) NULL   DEFAULT ('unknown'), (q*o;t? a  
  prod_imagetype char(3) NOT NULL, $c}h**bU  
  prod_image image NOT NULL,) jk9y70\z,  
GO (IG|)h @  
建立ActiveX 动态链接库 M*Eq}I j  
u)hoI6h  
  使用 VB 5.0,我们要开发一个ActiveX 动态链接库。这个动态链接库让我们能够连接到SQL数据库,提取图片数据,并把它们保存成文件,放在目录里。要建立动态链接库,请在打开VB程序之后执行下列步骤:首先:在文件(File)菜单里,选择新建项目(New Project)。接着,在新建立项目对话框里,双击ActiveX DLL 图标。VB自动地向项目里增加一个类,叫做Class1。然后,在属性容器里,双击名称(Name)属性,把它改成clsImageLoader,保持instancing 属性为缺省值MultiUse不动。最后,在项目(Project)菜单里,选择Project1 属性,打开项目属性对话框。选择通用(General)选项卡,把项目名称改为ImageLoader。其它字段可以不管,保持原样。单击确定(OK)完成对ImageLoader 这个工程的设置。 ke p4'  
@oEpX)UQ  
  在类里,写入了5个Let属性,1个Get属性(只读)和两个方法。Let属性传递动态链接库需要的信息,Get属性提供动态链接库生成的图片文件的位置。两个方法用来打开到数据库的连接,以生成图片文件。表 A 总结了这些属性和方法的作用。当然,根据项目的需要,可以在类里加入更复杂的功能。 uGVQd]\vV  
Cr1l[  
表A: 在ActiveX动态链接库里的属性和方法 o|%e"/  
o(y`0(j  
属性/方法                             作用 C\bY?VC08  
mZu X =}5  
DbName                       打开数据库连接所需的数据库名称。 hH}w]p  
VACEYoMq  
TableName, 39vocy  
NameOfImageColumn,               打开记录集所需要的信息。 dkh\Np:r  
NameOfImageTypeColumn, &V|(2uHFt  
NameOfImageIdColumn ;{vV$gLS@{  
l/~=0dY+  
ImageFile (只读)               把图片文件的名称和位置返回给容器。  8#jGV  
 6|@zO&D\  
OpenConnection (方法)                 打开数据库连接。 LM^7t } '  
q>dQ8,^C]4  
CreateTemplateImageFile (方法)         从数据库提取图片数据,并把它保存到目录里。 !? 7v,@P@_  
=_*P~ K s  
?_VEuW@0N  
  在类里还有其它的私有子程序,用来初始化类、终止类、打开记录集、建立图片文件,以及处理可能的错误。 S#57cTFR  
nMu6Ku,  
    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章