基于三层架构模式的数据库图片字段处理方法
- 格式:pdf
- 大小:256.84 KB
- 文档页数:4
l
三层架构的功能及其组成
高时,频繁的调用可能会使文件系统崩溃。如用数据库的Image类型字段 来记录图片信息则可很好的解决这一问题。在数据库中使用image(即图 片)字段有如下的特点:
2.1
B/S、CJS应用程序在进行整体开发时,通常会使用三层架构模式。 所谓三层架构,是指将系统明确分为数据库服务层(又称为数据层)、业务
Public Class PhotoManager
Handler
Implements IHttpHandler ReadOnly Property IsReusable
IsReusable()As
Boolean Implements IHttpHandler.
①建立增加图片的AddPhoto方法,其中BytesOriginal为原图数据
RETURN
3.2程序层设计 3.2.1图片管理类的设计 建立一个图片管理类,取名为PhotoManager.vb,其中包含了对数据库 增加图片的方法,读取数据库中图片的方法等,其内容如下: 声名命名空间
Imports System
至此,PhotoManager.vb文件构建完成,当然还可以继续加入“删除照 片”、“同时获取多张照片”等各种系统所需的方法,做法与以上内容大致 相同,也就是先建立对应的存储过程,然后在PhotoManager.vb类文件中 加入方法,调用相应的存储过程。由于篇幅所限,不再一一详述。 3.2.2网页预处理程序 以上GetPhoto方法不能直接与网页中的img控件进行绑定,因为Get- Photo方法得到的MemoryStream必需分块后用context.Response.Output— Stream.Write输出到img的Sre属性值中。为完成以上的处理操作,就得 编写一段网页预处理程序,存放在Handler.ashx文件中,内容如下:<%
3.1.2.1
AddPhoto,用于对相应的“照片号”写入其“照片”的二进制
值,内容如下:
CREATE PROCEDURE
addphoto
作者简介:邓昭俊(1971一),男,讲师。主要从事是信息管理与信息系统研究;黎文星(1971一),男,讲师,主要从事是计算机软件系统开发研究。
万 方数据
宜宾学院学报
SqlConnection(ConfigurafionManager.Conncc—
Dim Dim
buffer()As Byte;New Byte((buffersize)一1))
count
tionStrings(“ConneetionString”).ConnectionString)
Using command As New SqtCommand(“GetPhoto”,connection)
Public Shared
Sub AddPhoto(ByVal照片号As String,ByVal BytesOrigi-
Get
RetumTrue
Ilal().As Byte) 创建数据库链接对象coIIrIe以on,其中“ConnectionString”在web.Con・ 殛文件中
Using connection As New
2006年12期
@照片号char(8),@照片image
AS
Dim result As Try Retum New
Object:comm出rld.ExecuteScalar
update信息表set照片=@照片where照片号=@照片号
删RN
3.1.2.2
MemoryStream(CType(result,Byte()))
@WebHandler Language=“VB”Class=“Handler”%> Public Class
Imports System.Collections Imports System.Collections.Generic
Imports System.Configuration
Imports System.Data Imports System.Data.SqlClient Imports System.10
EndIf
②建立读取数据库中图片的GetPhoto方法
Public Overloads Shared Function Stream Using connection As New
GetPhoto(ByVal照片号As String)As
’将图像流写入响应流中
Dim buffersize As
Integer=(1024¥16)
Using conunand As New
tpHandler.ProcessRequest
SqlCommand(“AddPhoto”,connection)
’设置响应设置 +context.Response.ContentType=“image/jpeg’’ context.Response.Cache.SetCacheability(HttpCacheability.Public)
第12期NO.12
宜宾学院学报Journal of Yibin University
Dec.2006
65
基于三层架构模式的数据库图片字段处理方法
邓昭俊1,黎文星2
(1.中山大学资讯管理系,广州510275;2.广州城市职业学院计算机工程系,广州510055)
摘要:本文以数据库中图片字段在网页中的处理为例说明三层架构模式的特点和开发过程。处理数据库中的图片字段时,先建立数据库服务层 (又称为数据层)包括建立表和编写存储过程;然后是建立业务逻辑层(又称为功能层)处理各种操作,包括增加图片、获取图片等方法,完成类的设计; 最后完成用户界面层(又称为表现层),利用控件如调用增加图片方法来上传图片,调用获取图片方法来显示图片等。三层架构可以发挥不同专业人员 之所长,有机地把数据库设计、程序设计和界面设计结合在一起,从而更高效地完成系统开发。 关键词:三层架构;数据库;图片类型字段;Visual Studio 2005 中圈分类号:TP311.13 文献标识码:A 文章编号:1671—5365(2006)12—0065一03
Getl)hoto,用于根据“照片号”来获取“照片”中的二进制内
Catch Return Nothing End Try End Using End UsiIlg End Function
容,内容如下:
CREATE PROCEDURE GetPhoto
@照片号varehar(8)AS SELECT照片FROM信息表WHERE照片号=@照片号
Loop
command.CommandType:CommandTypo.StoredProcedure
command.Parameters.Add(New SqlParameter(“@照片号”,照片号)) connection.Open()
万 方数据
2006年12月
邓昭俊,黎文星:基于层架构模式的数据库图片字段处理方法
逻辑层(又称为功能层)和用户界面层(又称为表现层),分别由不同专业
的人员进行开发,三者之间使用接13来通信,从而形成一个应用系统整 体。 1.1数据库服务层:该层是应用程序的基础,为应用程序提供数据 支持,通常包括:表、视图、关系和对表、视图、关系进行处理的存储过程。 该层可采用任何一款关系型数据库,而SQL Server是该层的主要代表,它 能与.NET Framework无缝集成,使用ADO.NET技术即可对其进行连接和 处理。 1.2业务逻辑层:该层使用VB.NET、c#、J#、C++等编程语言,根 据用户的要求,编写出各种方法,完成类的设计,还可选择地编写一个预 处理程序。通过一系列的程序代码,实现对数据层的程序处理,是应用程 序的功能核心。 1.3用户界面层:是用户使用系统的接口,让用户完成对系统的输 入输出操作。通过输人向服务器请求数据,经后台程序处理后,以一定的 格式输出结果。通常包括各种表单控件,通过表单控件来调用相应的类 或预处理程序。该层主要是版面的美工设计,除此之外也有一定较简单 的程序处理。丽两层架构的系统开发模式即把业务逻辑层和用户界面层 合为一体,经常由程序员来完成美工界面设计,显得很不专业。在基于.net FrameWork2.0技术的网页设计中,用户界面层可以采用ASP.NET2.0大量 功能强大的控件,使系统有更强的表现力。 2数据库中图片字段的特点 对于图片的处理,当然可以只把图片放于文件系统中,而数据库里只 记录其对应文件的链接,在调用图片时只需根据链接内容把文件调用出 来即可。但这种方法显然有不少的弊端,尤其是在网络客户使用频率较
End Using End Using End Sub
As IO.Stream=Nothing
If((Not(context.Request.QueryString(“照片号”))Is Nothing)An- dAlso(context.Request.QueryString(“照片号”)<>“”))Then id=context.Request.QueryString(“照片号”) stream=PhotoManager.GetPhoto(id)
67
End Sub End Class
一个“TextBox”标准控件、一个“Button”标准控件,和一个“IMG”HTML控 件。 3.3.2.2对“IMG”控件设置其“SRC”属性 选中其中的“IMG”控件,在“属性”面板中找到“SRC”属性,写人其属 2005环境下,界面层基本上无需编写任何代码, 性值:“Handler.ashx?学号=<%#TextBoxPhotolD.Text%>”。 3.3.2.3写入Buttonl的Click事件控件代码 双击节“显示”按钮,在其自动打开的ShowAPhoto.aspx.vb文件的
As
Integer=stream.Read(buffer,0,buffersize)