如今CGI日渐衰落ASP大行其道大有取而代之之势对个人主页制作者而言CGI也确实太复杂了尤其是在数据库的操作上繁复无比让人望而生畏相较而言 ASP则简单得多其面向对象的思想将复杂的底层操作掩盖只留下简单的调用接口对数据库的操作更是将它的优点体现得淋漓尽致
本文将简单介绍在个人主页中运用ASP连接数据库实现动态网页相信您在读完本文后您的主页将更加精彩
在ASP中查询ACCESS 数据库
ASP能让我们用简单的方法在网页中查询更新数据库下面将给出的例子用的是MS ACCESS DATABASE但是其操作的原理却可同样地运用在任何支持ODBC的数据库上(之所以选择ACCESS是因为它容易操作且被广泛使用对大多数的中小型项目而言ACCESS无疑是最好的选择)
先用ACCESS建立一个数据表如下:
用户编号 姓名 城市 电话号码
张三 武汉 -
李四 北京 -
王五 上海 -
再请看下面的一段例子:
<%
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强大的功能
现在我们可以通过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 DSNFILE DSN 将DSN的细节内容存贮在一个文件中而不是存贮在系统注册表中这个文件是简单的文本文件用dsn作为扩展名
虽然这听起来挺简单但你需要知道那些组成DSN文件的参数下面给出一个简单的用来存取ACCESS的DSN文件
---- filedsn ----
[ODBC]
DRIVER=Microsoft ACCESS Driver (*mdb)
ReadOnly=
UserCommitSync=Yes
Threads=
SafeTransactions=
PageTimeout=
MaxScanRows=
MaxBufferSize=
ImplicitCommitSync=Yes
FIL=MS ACCESS
DriverId=
将它命名为filedsn当然你可根据你的愿意改名
建立了这个文件后工作已完成了一半下面的工作是建立一个连接当用一个SYSTEM DSN时建立连接只要简单地引用SYSTEM DSN:
connopen mydsn(conn是连接对象的名字)
当应用如上的FILS DSN 时你需要加入更多的参数来说明
Connopen filedsn=c:\webdir\filedsn;DBQ=c:\DATABASE\mydbmdb;UID=admin;PWD=admin;
C:\webdir是dsn文件所在的目录它需要用文件的物理路径你可以用SERVERMAPPATH方法来得到如ServerMapPath(/mysite/filedsn)同样对于DBQ参数也需如此UID和PWD参数是可选的
简而概之要建立一个可重用的FILE DSN
)用DSN参数建立一个以dsn为扩展名的文本文件
)用FILEDSN和DBQ参数建立连接你可以用SERVERMPAPATH来得到物理路径
)只需更改DBQUID和PWD参数就可将这个FILE DSN用到任何ACCESS数据库上
需要注意的是对其他非ACCESS类型的数据库需要应用不同的参数值和一些附加的参数