个人主页的数据库解决方案ASP

---摘自《eNet学院》（文/Netwalker）
如今，CGI日渐衰落，ASP大行其道，大有取而代之之势。对个人主页制作者而言，CGI也确实太复杂了，尤其是在数据库的操作上，繁复无比让人望而生畏。相较而言， ASP则简单得多。其面向对象的思想，将复杂的底层操作掩盖，只留下简单的调用接口。对数据库的操作更是将它的优点体现得淋漓尽致。

本文将简单介绍在个人主页中运用ASP连接数据库，实现动态网页。相信您在读完本文后，您的主页将更加精彩。

1.在ASP中查询ACCESS 数据库

ASP能让我们用简单的方法在网页中查询、更新数据库。下面将给出的例子用的是MS ACCESS DATABASE，但是其操作的原理却可同样地运用在任何支持ODBC的数据库上。(之所以选择ACCESS，是因为它容易操作，且被广泛使用，对大多数的中小型项目而言，ACCESS无疑是最好的选择。)

先用ACCESS建立一个数据表如下:

用户编号 姓名 城市 电话号码

1 张三 武汉 027－84713858

2 李四 北京 010－99581426

3 王五 上海 021－85541253

再请看下面的一段例子:

<％

SET DBCONNECTION=SERVER.CREATEOBJECT(“ADODB.CONNECTION”)

DBCONNECTION.OPEN “DSNNAME”

SQLQUERY=“SELECT ＊ FROM CUSTOMERS”

SET RECUSTIONMERLIST=DBCONNECTION.EXECUTE(SQLQUERY)

％>

< CENTER>

< TABLE BORDER=1>

< ％ DO WHILE NOT RECUSTOMERLIST.EOF ％>

< TR>

< TD><％=RECUSTOMERLIST(“客户编号”)％>< /TD>

< TD><％=RECUSTOMERLIST(“姓名”)％>< /TD>

< TD><％=RECUSTOMERLIST(“城市”)％>< /TD>

< TD><％=RECUSTOMERLIST(“电话号码”)％>< /TD>

< /TR>

< ％ RECUSTOMERLIST.MOVNEXT LOOP ％>

< /TABLE>

< /CENTER>

可以看到，ASP的语法是VBSCRIPT，其面向对象的思想也与VB相类似，所以，只要您初通VB或者VBSCRIPT，那ASP可以很容易地上手。
上面的一部分可以说是ASP中ADO的精髓所在，下面我们讨论一下代码的内容<％和％>是ASP代码的开始和结束标志。服务器在返回用户请求时，先将<％和％>中的内容解释成为标准的html代码，再将它发送到客户浏览器。存取数据库时，首先要建立连接，也就是声明一个CONNECTION类的实例(对象)，然后运用CONNECTION类的OPEN方法，将连接对象连接到一个ODBC数据源上，在上例中就是DSNNAME，这是一个DSN。至于什么是DSN，后面将有介绍，在此先按下不表。到此，数据库的连接就已经完成了，下面要进行的是数据库的操作。
操作也是很简单的，先定义一个SQL语句字串，然后调用CONNECTION的EXECUTE方法执行，执行的结果储存在一个RECORDSET类(可以看成是一个临时存放数据的表)的对象中，在上例中是RECUSTOMERLIST。这样，数据库的查询调用也就完成了，再只需将它输出即可。
在DO WHILE ...LOOP的循环中输出时，调用ASP中RESPOND对象的WRITE方法，一般可以简写为“=”。而语句RECUSTOMERLIST(字段名)返回的是当前纪录对应字段的值。最后调用的是RECORDSET类的MOVENEXT方法，将纪录指针移到下一个纪录，反复执行，直到RECUSTOMERLIST的EOF(文件尾)为真。这样，就将返回的查询结果输出了。
上面所讲的只是一点ASP数据存取的基本知识，但我们已可略窥ASP强大的功能。
2.现在我们可以通过ASP来存取数据库，实现动态效果。但还有一个问题:现在提供ASP支持的个人免费网页，大多数并不提供数据库的支持。也就是说，你无法在它的数据库系统中建立并拥有自己的数据库。若用本地数据库，你也无法配置服务器主机中的ODBC，无法得到你本地数据库的DSN，也就不能通过ASP来存取数据库了。怎么解决这个问题呢?下面的讨论将给出一个简单的方法，那就是FILE DSN。
首先解释几个名词
DSN:根据MICROSOFT的官方文档，DSN的意思是“应用程序用以请求一个连到ODBC数据源的连接(CONNECTION)的名字”，换句话说，它是一个代表ODBC连接的符号。它隐藏了诸如数据库文件名、所在目录、数据库驱动程序、用户ID、密码等细节。因此，当建立一个连接时，你不用去考虑数据库文件名、它在哪儿等等，只要给出它在ODBC中的DSN即可。
FILE DSN: 当我们讨论这个问题时，先看看其他的DSN类型
SYSTEM DSN:这种DSN可以被任何登录到系统中的用户使用。
USER DSN:这是为特定用户建立的DSN。只有建立这个DSN的用户才能看到并使用它。在上面的两种情况中，DSN的细节都储存在系统的注册表中。
知道了上面的预备知识后，让我们来看看什么是FILE DSN。FILE DSN 将DSN的细节内容存贮在一个文件中，而不是存贮在系统注册表中。这个文件是简单的文本文件，用.dsn作为扩展名。
虽然这听起来挺简单，但你需要知道那些组成DSN文件的参数。下面给出一个简单的用来存取ACCESS的DSN文件，
－－－－ file.dsn －－－－
[ODBC]
DRIVER=Microsoft ACCESS Driver (＊.mdb)
ReadOnly=0
UserCommitSync=Yes
Threads=3
SafeTransactions=0
PageTimeout=5
MaxScanRows=8
MaxBufferSize=512
ImplicitCommitSync=Yes
FIL=MS ACCESS
DriverId=25
将它命名为file.dsn，当然，你可根据你的愿意改名。
建立了这个文件后，工作已完成了一半。下面的工作是建立一个连接。当用一个SYSTEM DSN时，建立连接只要简单地引用SYSTEM DSN:
conn.open “mydsn”(conn是连接对象的名字)
当应用如上的FILS DSN 时，你需要加入更多的参数来说明。
Conn.open “filedsn=c:\webdir\file.dsn;DBQ=c:\DATABASE\mydb.mdb;UID=admin;PWD=admin;”
C:\webdir是.dsn文件所在的目录，它需要用文件的物理路径。你可以用SERVER.MAPPATH方法来得到。如Server.MapPath(“/mysite/file.dsn”)。同样，对于DBQ参数也需如此。UID和PWD参数是可选的。
简而概之，要建立一个可重用的FILE DSN
1)用DSN参数建立一个以dsn为扩展名的文本文件。
2)用FILEDSN和DBQ参数建立连接，你可以用SERVER.MPAPATH来得到物理路径。
3)只需更改DBQ、UID和PWD参数，就可将这个FILE DSN用到任何ACCESS数据库上。
需要注意的是，对其他非ACCESS类型的数据库需要应用不同的参数值和一些附加的参数。