当前位置: 首页 > 图文教程 > 数据库 > MSSQL > 用SQL Server为Web浏览器提供图像(三)(转)

MSSQL
MySQL中SQL的单字节注入与宽字节注入
解决MySQL 5数据库连接超时问题
通过事务日志解决SQL Server常见四大故障
将SQL 2000日志迁移到SQL Server 2008
在应用环境中如何构造最优的数据库模式
数据库安全管理的三个经验分享
SQL Server应用程序的高级Sql注入
Oracle数据库与SQL Server数据库镜像对比
讲解SQL Server安装sp4补丁报错的解决方法
SQL Server 2005数据库批量更新解决办法
编写和优化SQL Server的存储过程
从数据行入手保护SQL Server数据安全
SQL Server数据体系和应用程序逻辑详解
网友分享:Oracle数据库开发技术经验浅谈
把你的数据库置于版本控制之下
SQL Server 2005实现数据库缓存依赖
SQL Server数据库管理常用SQL和T-SQL语句
初学者必读:提高SQL执行效率的几点建议
初探MS SQL CE+Codesmith
优化SQLServer数据库服务器内存配置的策略

MSSQL 中的 用SQL Server为Web浏览器提供图像(三)(转)


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-30   浏览: 103 ::
收藏到网摘: n/a

  建立ActiveX 动态链接库

    使用 VB 5.0,我们要开发一个ActiveX 动态链接库。这个动态链接库让我们能够连接到SQL数据库,提取图片数据,并把它们保存成文件,放在目录里。要建立动态链接库,请在打开VB程序之后执行下列步骤:首先:在文件(File)菜单里,选择新建项目(New Project)。接着,在新建立项目对话框里,双击ActiveX DLL 图标。VB自动地向项目里增加一个类,叫做Class1。然后,在属性容器里,双击名称(Name)属性,把它改成clsImageLoader,保持instancing 属性为缺省值MultiUse不动。最后,在项目(Project)菜单里,选择Project1 属性,打开项目属性对话框。选择通用(General)选项卡,把项目名称改为ImageLoader。其它字段可以不管,保持原样。单击确定(OK)完成对ImageLoader 这个工程的设置。

    在类里,写入了5个Let属性,1个Get属性(只读)和两个方法。Let属性传递动态链接库需要的信息,Get属性提供动态链接库生成的图片文件的位置。两个方法用来打开到数据库的连接,以生成图片文件。表 A 总结了这些属性和方法的作用。当然,根据项目的需要,可以在类里加入更复杂的功能。

表A: 在ActiveX动态链接库里的属性和方法

属性/方法                                            作用

DbName                                  打开数据库连接所需的数据库名称。

TableName,
NameOfImageColumn,                      打开记录集所需要的信息。
NameOfImageTypeColumn,
NameOfImageIdColumn

ImageFile (只读)                      把图片文件的名称和位置返回给容器。

OpenConnection (方法)                         打开数据库连接。

CreateTemplateImageFile (方法)              从数据库提取图片数据,并把它保存到目录里。


    在类里还有其它的私有子程序,用来初始化类、终止类、打开记录集、建立图片文件,以及处理可能的错误。

注意微软活动数据对象ADO1.5(现在为2.0)被用来连接SQL数据库。也可以使用其它数据访问方法,比如远程数据对象RDO。在这个项目里,必须使用ADO。操作方法是,单击项目(Project)菜单,然后选择引用(References)菜单 项。在引用对话框里,选中微软ActiveX Data Objects 1.5 库,然后单击确定(OK)。

在列表 B里,列出了类ImageLoader 完整源代码。类里使用的变量定义都在代码内部给出,还有其它注释,帮助理解上下文。

列表 B:类 ImageLoader 的完整源代码

Private mAdoConn As New ADODB.Connection
Private mAdoRst As New ADODB.Recordset
Private mstrDbName As String
Private mstrTableName As String
Private mstrImageColumnName As String '图片字的名称。
Private mstrImageTypeColumnName As String '图片类型字段的名称。
Private mstrImageIdColumnName As String '图片ID字段的名称。
Private mstrFileName() As String '数组,里面包含文件名和路径。
Private mlngImageId() As Long '数组,里面包含图片ID
Private mlngNumberOfFiles As Long
Const BLOCKSIZE = 102400


Public Property Let DbName(ByVal strVal As String)
  mstrDbName = strVal
End Property

Public Property Let TableName(ByVal strVal As String)
  mstrTableName = strVal
End Property

Public Property Let NameOfImageColumn(ByVal strVal As String)
  mstrImageColumnName = strVal
End Property

Public Property Let NameOfImageTypeColumn(ByVal strVal As String)
  mstrImageTypeColumnName = strVal
End Property

Public Property Let NameOfImageIdColumn(ByVal strVal As String)
  mstrImageIdColumnName = strVal