建立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
1<object id="objImageLoader" progid="ImageLoader.clsImageLoader" runat="Server" scope="Session">
2</object>
1<script language="VBScript" runat="Server">
2Sub Session_OnStart
3Session("Grocevb_ConnectionString") = "DRIVER=SQL Server; SERVER=(local);
4UID=sa;PWD=;APP=Microsoft (R) Developer Studio;WSID=JIA;
5DATABASE=Grocevb;UseProcForPrepare=0"
6Session("Grocevb_ConnectionTimeout") = 15
7Session("Grocevb_CommandTimeout") = 30
8Session("Grocevb_RuntimeUserName") = "sa"
9Session("Grocevb_RuntimePassword") = ""
10End Sub
11
12Sub Session_OnEnd
13set objImageLoader = Nothing
14End Sub
15
16</script>
建立ASP页面
为了连接到数据库,并和ImageLoader这个动态链接库通信,我们在Web项目里建立了一个ASP文件。方法是在文件(File)
菜单里选择新建(New)菜单项,在文件(Files)标签卡中选择ASP页面图标,在输入框里输入文件名称。我们把这个页面
命名为default.asp。在default.asp 里包含的代码如列表 D所示。
列表 D: default.asp
1 Set dbConn = Server.CreateObject("ADODB.Connection")
2dbConn.ConnectionTimeout = Session("Grocevb_ConnectionTimeout")
3dbConn.CommandTimeout = Session("Grocevb_CommandTimeout")
4dbConn.Open Session("Grocevb_ConnectionString"), Session("Grocevb_RuntimeUserName"), _
5Session("Grocevb_RuntimePassword")
6
7Set cmdTemp = Server.CreateObject("ADODB.Command")
8Set rstProduct = Server.CreateObject("ADODB.Recordset")
9cmdTemp.CommandText = "SELECT prod_id, prod_name, prod_desc, prod_unitprice, & _
10" prod_unitquant, prod_imagetype " & _
11"FROM Products ORDER BY prod_name"
12cmdTemp.CommandType = 1
13Set cmdTemp.ActiveConnection = dbConn
14rstProduct.Open cmdTemp, , 0, 1
15
16objImageLoader.DbName = "Grocevb"
17objImageLoader.TableName = "Products"
18objImageLoader.NameOfImageColumn = "prod_image"
19objImageLoader.NameOfImageTypeColumn = "prod_imagetype"
20objImageLoader.NameOfImageIdColumn = "prod_id"
21objImageLoader.OpenConnection
1<html>
2<head>
3<title>从SQL Server装载图片的示例</title>
4</head>
5<body bgcolor="#FFFFFF" leftmargin="4" topmargin="8">
Do While Not rstProduct.EOF
ProdId = rstProduct("prod_id")
objImageLoader.CreateTempImageFile(ProdId)
FileName = "images/" & objImageLoader.ImageFile(ProdId)
1
2<table border="1" cellpadding="0" cellspacing="0" width="100%">
3<table border="0" cellpadding="5" cellspacing="0" cols="2" width="100%">
4<td width="30%">
5<img =filename="" ```="" align="BOTTOM" src="```"/>
6<p> </p>
7<font size="2">Image type: ```
8 = rstProduct("prod_imagetype")
``` =rstProduct("prod_name") ```
``` =rstProduct("prod_desc") ```
Unit quantity: ``` = rstProduct("prod_unitquant") ``` | Unit price: ``` =rstProduct("prod_unitprice") ``` |