ASP有一个最重要的功能,就是它可以让你非常轻松地连接 数据库 。通常都是和一个Access或者一个SQL 数据库 相连。因为Access是最容易起步的,同时,在你的机器上也许已经都装有Access了,所以,在下面的例子中,我们都将 使用 Access来做例子。一旦你学习了A
ASP有一个最重要的功能,就是它可以让你非常轻松地连接 数据库 。通常都是和一个Access或者一个SQL 数据库 相连。因为Access是最容易起步的,同时,在你的机器上也许已经都装有Access了,所以,在下面的例子中,我们都将 使用 Access来做例子。一旦你学习了ASP和Access 数据库 连接的核心技术方法,当你开始 使用 SQL server的时候,你就会发现,两者所需要的关键技术是基本相同的。
被过滤广告
当你要连接 数据库 的时候,你需要在服务器上将这个 数据库 打开。你可以通过 使用 数据源名(DSN)或者通过在你的脚本语言中直接 使用 一个DSN-less连接的方法来连接和打开 数据库 。
创建一个数据源名(DSN)
你可以通过在控制面板中给你的 数据库 建立一个系统DSN来使你的 数据库 可以在ASP中连接 使用 。你可以在你的本地计算机上建立若干个DSN,每个DSN对应你 使用 的不同的 数据库 。在建立完DSN之后,你就可以在你的本地服务器上测试你的页面了。如果你的网站是由
ISP提供服务的,并且这个ISP支持ASP,那么很有可能它就会提供一个GUI接口,来给你的 数据库 创建一个DSN。
在Windows 95/98/NT中,打开控制面板(开始菜单->设置->控制面板),双击ODBC进入。
选择系统DSN,点击Add。
选择“Microsoft Access Driver”,点击结束。
填写数据源名。这是你给你的 数据库 起的名字,所以和一个alias是同样的操作。
在 数据库 选择中点击选择按钮,浏览系统中你创建的Access 数据库 所存放的位置。
点击OK
现在,新的DSN现在就会在系统DSN中显示,并且可以在你的本地服务器上 使用 了。
连接 数据库
让我们建立一个DSN-less连接,并且看看是如何连接 数据库 的。当你创建一个DSN的时候,你就已经存储了关于这个 数据库 的一些信息,所以你不需要在每次需要 使用 一些信息的时候重复它们,这些信息如: 数据库 类型、名称、存放地点和可选性、用户和密码。
要创建一个DSN-less连接,你就需要提供同样的信息。下面这个例子就显示了如何给一个叫products的 数据库 建立一个DSN-less连接:
StrConnect = "Driver={Microsoft Access Driver (*.mdb)}; DBQ=C:\\\\\\\\db\\\\\\\\products.mdb"
Set objConn = Server.CreateObject ("ADODB.Connection")
objConn.OpenStrConnect
%>
第二行定义了 数据库 的驱动和物理路径。为了要 使用 一个DSN-less连接,你就需要知道实际的文件存放地点(绝对路径)。Server.MapPath给任何一个 使用 主机服务的人提供了一个简单的工作环境来查找出那些难于查到的实际访问路径。
如果我们已经建立了一个系统DSN,并命名为products,则连接码应该为:
Set objConn = Server.CreateObject ("ADODB.Connection")
objConn.Open "products"
%>
现在, 数据库 就已经打开了,那么你可以做些什么呢?第一件事情当然就是阅读 数据库 中的一系列记录,并将它们放到你的页面中去。但是,在这之前,你需要一个recordset。
Recordset
一个recordset是存储在特殊 数据库 表上的所有信息。所以,当你打开这个recordset的时候,表中所有的行和列的内容都是可访问的。你需要打开这个recordeset,正如你需要打开 数据库 连接一样。它们的命令是相似的:
Set objRec = Server.CreateObject ("ADODB.Recordset")
objRec.Open "downloadable", strConnect, 0,1,2
这个语句就创建了一个名为downloadable表的recordset(objRec),这个表在products 数据库 的strConnect中定义。 使用 Recordset open, 我们就可以循环浏览这个表,并且可以将它的所有内容都显示到屏幕上。或者,我们可以测试特定字段的内容,也可以只将我们关注的内容写到屏幕上去。
每一列代表一个字段。所以,如果 数据库 表如下所示:
Product ID
SKU
Name
File
1
PR12345
Product A
install_a.exe
2
PR12346
Product B
Install_b.exe
那么,我们就有如下字段的内容:ProductID, SKU, Name, 和File。你的表很可能会有许多额外的字段内容,可能包含很多东西,如价格或者是产品(商品)描述。但是这个示意图可以给你提供最基本的 数据库 表的概念。
填写recordset内容
使用 recordset是非常容易的一件事情。如果你想要循环浏览 数据库 ,并将所有的信息都打印到屏幕上显示,你可以按照下面来操作:
While NOT objRec.EOF
\\\\\\\' says to do this as long as we haven\\\\\\\'t reached the end of the file
Response.WriteobjRec("ProductID") & ", "
Response.WriteobjRec("SKU") & ", "
Response.WriteobjRec("Name") & ", "
Response.WriteobjRec("File") & "
"
objRec.MoveNext
Wend ;
即使你没有如此 使用 过loop,你仍然可以通过阅读这个代码来将信息写到comma-delimited字符串里,并且当 数据库 表中创建了一个新行的时候,就重新创建一个新的行,来记录表中的那一行。你可以 使用 同样的方法将数据写到HTML表格中去。通过 使用 Response.Write添加你的TABLE标签,需要记住以下几点:
你的HTML 标签和引号中的内容。
如果你的标签或者内容 使用 了引号,注意 使用 双引号:
.
使用 &来连接变量和HTML/内容信息
选择recordset中的字段
假设我们的products 数据库 同样包含一个叫OS的字段,假设这个字段是一个平台分界符。同样,让我们假设存储在这个字段的数据只能是如下的数据:Windows NT, Windows 95, windows 98, Windows, Mac, Unix, 或者 Linux。
下面,我们就可以确认我们需要将哪个字段打印到屏幕上,而要忽略哪些那些字段。或者,我们可以选择哪些字段用一种格式,而另外的字段用其它的格式,如, 使用 不同的颜色。
使用 一个简单的If...,循环就可以给我们提供更多的 数据库 控制权利。首先让我们来打印有关Windows NT产品的记录: