用SQL Server为Web浏览器提供图像
类别: MSSQL教程
建立Web项目和设置数据库连接
在注册了 ImageLoader 动态链接库之后,我们就可以建立Web项目了。我们使用微软Visual InterDev 1.0 建立ASP页面以及到微SQL Server数据库的数据连接。
首先,打开微软Visual InterDev。在文件File 菜单里,选择新建(New)菜单项。在出现的对话框里,选中Web项目向导,在项目名称字段里输入ImageLoad 。单击确定(OK),完成后面两步,结束向导。
可以看到, Visual InterDev 在工作空间(Workspace)窗口里自动地生成了一个文件,叫做Global.asa。在用户第一次查看Web程序里的页面里,就会自动生成这个文件。要连接SQL Server里的数据库,选择项目 | 加入项目(Project |Add To Project),然后选择数据连接(Data Connection)。这里,选择数据源对话框出现,我们必须定义一个数据源名称(DSN)。
单击新建(New)按钮,在列出的可用数据驱动程序列表里,选择SQL Server,然后单击下一步(Next)。接着,在输入框里输入 Grocevb 作为DSN。接下来的几步很容易完成,不再详述。
下面,出现了SQL Server 登录对话框。输入服务器名称,登录ID和口令,并单击选项(Option)按钮。从列出的可用数据库列表里,选择Grocevb,单击确定(OK)。在结束了全部以上步骤之后,就返回到了选择数据源对话框。在这里,从DSN列表里单击文件名 Grocevb.dsn,然后完成后面几步结束这段操作。
现在,可以双击Global.asa,查看以上步骤在这个文件里生成的代码。代码定义了连接SQL Server数据库所必需的一些变量。
为了初始化类 clsImageLoader ,必须在Global.asp的开始放两行代码。我们在列表 C里列出了Global.asa里的代码。注意clsImageLoader 是一个会话范围内的对象。
列表 C: Global.asa
<OBJECT RUNAT=Server SCOPE=Session ID=objImageLoader PROGID=\"ImageLoader.clsImageLoader\">
</OBJECT>
<SCRIPT LANGUAGE=VBScript RUNAT=Server>
Sub Session_OnStart
Session(\"Grocevb_ConnectionString\") = \"DRIVER=SQL Server; SERVER=(local);
UID=sa;PWD=;APP=Microsoft (R) Developer Studio;WSID=JIA;
DATABASE=Grocevb;UseProcForPrepare=0\"
Session(\"Grocevb_ConnectionTimeout\") = 15
Session(\"Grocevb_CommandTimeout\") = 30
Session(\"Grocevb_RuntimeUserName\") = \"sa\"
Session(\"Grocevb_RuntimePassword\") = \"\"
End Sub
Sub Session_OnEnd
set objImageLoader = Nothing
End Sub
</SCRIPT>
建立ASP页面
为了连接到数据库,并和ImageLoader这个动态链接库通信,我们在Web项目里建立了一个ASP文件。方法是在文件(File)菜单里选择新建(New)菜单项,在文件(Files)标签卡中选择ASP页面图标,在输入框里输入文件名称。我们把这个页面命名为default.asp。在efault.asp 里包含的代码如列表 D所示。
列表 D: default.asp
<% Set dbConn = Server.CreateObject(\"ADODB.Connection\")
dbConn.ConnectionTimeout = Session(\"Grocevb_ConnectionTimeout\")
dbConn.CommandTimeout = Session(\"Grocevb_CommandTimeout\")
dbConn.Open Session(\"Grocevb_ConnectionString\"), Session(\"Grocevb_RuntimeUserName\"), _
Session(\"Grocevb_RuntimePassword\")
Set cmdTemp = Server.CreateObject(\"ADODB.Command\")
Set rstProduct = Server.CreateObject(\"ADODB.Recordset\")
cmdTemp.CommandText = \"SELECT prod_id, prod_name, prod_desc, prod_unitprice, & _
\" prod_unitquant, prod_imagetype \" & _
\"FROM Products ORDER BY prod_name\"
cmdTemp.CommandType = 1
Set cmdTemp.ActiveConnection = dbConn
rstProduct.Open cmdTemp, , 0, 1
objImageLoader.DbName = \"Grocevb\"
objImageLoader.TableName = \"Products\"
objImageLoader.NameOfImageColumn = \"prod_image\"
objImageLoader.NameOfImageTypeColumn = \"prod_imagetype\"
objImageLoader.NameOfImageIdColumn = \"prod_id\"
objImageLoader.OpenConnection
%>
<HTML>
<HEAD>
<TITLE>从SQL Server装载图片的示例</TITLE>
</HEAD>
<BODY bgcolor=\"#FFFFFF\" TOPMARGIN=8 LEFTMARGIN=4>
<%Do While Not rstProduct.EOF %>
<%ProdId = rstProduct(\"prod_id\") %>
<% objImageLoader.CreateTempImageFile(ProdId) %>
<% FileName = \"images/\" & objImageLoader.ImageFile(ProdId) %>
<TABLE border=1 cellpadding=0 cellspacing=0 width=100%>
<TABLE border=0 cellpadding=5 cellspacing=0 width=100% cols=2>
<td width=30%>
<IMG ALIGN=BOTTOM SRC= <% =FileName %>>
<p> </p>
<font size=2>Image type: <% = rstProduct(\"prod_imagetype\") %>
</td>
<td width=70%>
<p align=center><font size=4><% =rstProduct(\"prod_name\") %></font></p>
<p align=center><% =rstProduct(\"prod_desc\") %></p>
</td>
</TABLE>
<p> </p>
<TABLE border=0 cellpadding=5, cellspacing=0 width=100% cols=2>
<td width=50%>
<p align=left>Unit quantity: <% = rstProduct(\"prod_unitquant\") %></P>
</td>
<td width=50%>
<p align=left>Unit price: <% =rstProduct(\"prod_unitprice\") %></p>
</td>
</TABLE>
</TABLE>
<p> </p>
<% rstProduct.MoveNext %>
<% Loop %>
</BODY>
</HTML>
注意:类ImageLoader 里定义的CreateTempImageFile 方法和ImageFile 属性(只读)需要图片ID作为参数。在这个例子里,图片ID就是表Products的主关键字(prod_id) 。所以, prod_id 的值必须传递给动态链接库。
总结
在这篇文章里,我们演示了一个方法,使用ActiveX动态链接库和ASP,可以从微软SQL Server服务器把图片装载到Web浏览器。它已经表明,这个方法在快速开发、容易使用和自定义Web页面的灵活上都有优势。动态链接库被用来连接数据库,提取图片数据,把图片数据放入文件。ASP页面则负责与SQL数据库和动态链接库通信。我们已经介绍了设置SQL数据库和Web项目的操作过程。
虽然这篇文章里的动态链接库和数据库的功能做了简化,但这里介绍的步骤对于其它任何强大复杂的Web项目都是有效的。
在注册了 ImageLoader 动态链接库之后,我们就可以建立Web项目了。我们使用微软Visual InterDev 1.0 建立ASP页面以及到微SQL Server数据库的数据连接。
首先,打开微软Visual InterDev。在文件File 菜单里,选择新建(New)菜单项。在出现的对话框里,选中Web项目向导,在项目名称字段里输入ImageLoad 。单击确定(OK),完成后面两步,结束向导。
可以看到, Visual InterDev 在工作空间(Workspace)窗口里自动地生成了一个文件,叫做Global.asa。在用户第一次查看Web程序里的页面里,就会自动生成这个文件。要连接SQL Server里的数据库,选择项目 | 加入项目(Project |Add To Project),然后选择数据连接(Data Connection)。这里,选择数据源对话框出现,我们必须定义一个数据源名称(DSN)。
单击新建(New)按钮,在列出的可用数据驱动程序列表里,选择SQL Server,然后单击下一步(Next)。接着,在输入框里输入 Grocevb 作为DSN。接下来的几步很容易完成,不再详述。
下面,出现了SQL Server 登录对话框。输入服务器名称,登录ID和口令,并单击选项(Option)按钮。从列出的可用数据库列表里,选择Grocevb,单击确定(OK)。在结束了全部以上步骤之后,就返回到了选择数据源对话框。在这里,从DSN列表里单击文件名 Grocevb.dsn,然后完成后面几步结束这段操作。
现在,可以双击Global.asa,查看以上步骤在这个文件里生成的代码。代码定义了连接SQL Server数据库所必需的一些变量。
为了初始化类 clsImageLoader ,必须在Global.asp的开始放两行代码。我们在列表 C里列出了Global.asa里的代码。注意clsImageLoader 是一个会话范围内的对象。
列表 C: Global.asa
<OBJECT RUNAT=Server SCOPE=Session ID=objImageLoader PROGID=\"ImageLoader.clsImageLoader\">
</OBJECT>
<SCRIPT LANGUAGE=VBScript RUNAT=Server>
Sub Session_OnStart
Session(\"Grocevb_ConnectionString\") = \"DRIVER=SQL Server; SERVER=(local);
UID=sa;PWD=;APP=Microsoft (R) Developer Studio;WSID=JIA;
DATABASE=Grocevb;UseProcForPrepare=0\"
Session(\"Grocevb_ConnectionTimeout\") = 15
Session(\"Grocevb_CommandTimeout\") = 30
Session(\"Grocevb_RuntimeUserName\") = \"sa\"
Session(\"Grocevb_RuntimePassword\") = \"\"
End Sub
Sub Session_OnEnd
set objImageLoader = Nothing
End Sub
</SCRIPT>
建立ASP页面
为了连接到数据库,并和ImageLoader这个动态链接库通信,我们在Web项目里建立了一个ASP文件。方法是在文件(File)菜单里选择新建(New)菜单项,在文件(Files)标签卡中选择ASP页面图标,在输入框里输入文件名称。我们把这个页面命名为default.asp。在efault.asp 里包含的代码如列表 D所示。
列表 D: default.asp
<% Set dbConn = Server.CreateObject(\"ADODB.Connection\")
dbConn.ConnectionTimeout = Session(\"Grocevb_ConnectionTimeout\")
dbConn.CommandTimeout = Session(\"Grocevb_CommandTimeout\")
dbConn.Open Session(\"Grocevb_ConnectionString\"), Session(\"Grocevb_RuntimeUserName\"), _
Session(\"Grocevb_RuntimePassword\")
Set cmdTemp = Server.CreateObject(\"ADODB.Command\")
Set rstProduct = Server.CreateObject(\"ADODB.Recordset\")
cmdTemp.CommandText = \"SELECT prod_id, prod_name, prod_desc, prod_unitprice, & _
\" prod_unitquant, prod_imagetype \" & _
\"FROM Products ORDER BY prod_name\"
cmdTemp.CommandType = 1
Set cmdTemp.ActiveConnection = dbConn
rstProduct.Open cmdTemp, , 0, 1
objImageLoader.DbName = \"Grocevb\"
objImageLoader.TableName = \"Products\"
objImageLoader.NameOfImageColumn = \"prod_image\"
objImageLoader.NameOfImageTypeColumn = \"prod_imagetype\"
objImageLoader.NameOfImageIdColumn = \"prod_id\"
objImageLoader.OpenConnection
%>
<HTML>
<HEAD>
<TITLE>从SQL Server装载图片的示例</TITLE>
</HEAD>
<BODY bgcolor=\"#FFFFFF\" TOPMARGIN=8 LEFTMARGIN=4>
<%Do While Not rstProduct.EOF %>
<%ProdId = rstProduct(\"prod_id\") %>
<% objImageLoader.CreateTempImageFile(ProdId) %>
<% FileName = \"images/\" & objImageLoader.ImageFile(ProdId) %>
<TABLE border=1 cellpadding=0 cellspacing=0 width=100%>
<TABLE border=0 cellpadding=5 cellspacing=0 width=100% cols=2>
<td width=30%>
<IMG ALIGN=BOTTOM SRC= <% =FileName %>>
<p> </p>
<font size=2>Image type: <% = rstProduct(\"prod_imagetype\") %>
</td>
<td width=70%>
<p align=center><font size=4><% =rstProduct(\"prod_name\") %></font></p>
<p align=center><% =rstProduct(\"prod_desc\") %></p>
</td>
</TABLE>
<p> </p>
<TABLE border=0 cellpadding=5, cellspacing=0 width=100% cols=2>
<td width=50%>
<p align=left>Unit quantity: <% = rstProduct(\"prod_unitquant\") %></P>
</td>
<td width=50%>
<p align=left>Unit price: <% =rstProduct(\"prod_unitprice\") %></p>
</td>
</TABLE>
</TABLE>
<p> </p>
<% rstProduct.MoveNext %>
<% Loop %>
</BODY>
</HTML>
注意:类ImageLoader 里定义的CreateTempImageFile 方法和ImageFile 属性(只读)需要图片ID作为参数。在这个例子里,图片ID就是表Products的主关键字(prod_id) 。所以, prod_id 的值必须传递给动态链接库。
总结
在这篇文章里,我们演示了一个方法,使用ActiveX动态链接库和ASP,可以从微软SQL Server服务器把图片装载到Web浏览器。它已经表明,这个方法在快速开发、容易使用和自定义Web页面的灵活上都有优势。动态链接库被用来连接数据库,提取图片数据,把图片数据放入文件。ASP页面则负责与SQL数据库和动态链接库通信。我们已经介绍了设置SQL数据库和Web项目的操作过程。
虽然这篇文章里的动态链接库和数据库的功能做了简化,但这里介绍的步骤对于其它任何强大复杂的Web项目都是有效的。
- 上一篇: 如何快速建立数据字典
- 下一篇: SQL Server各种日期计算方法
-= 资 源 教 程 =-
文 章 搜 索