(一)数据库的选择:有许多的数据库你可以选择,SQL SERVER、ACCESS(*.mdb)、EXCEL(*.xls)、FOXPRO(*.dbf)甚至普通的文本文件(*.txt)都可以达到存储数据的功能。
那么到底选择什么数据库最合适呢?其中SQL SERVER是服务器级的,足以应付每天上万次的访问量。
对于非服务器级的数据库建议使用ACCESS97。
因为:(1)只要安装了PWS或IIS4肯定有ACCESS的ODBC驱动,即你的系统肯定支持ACCESS数据库的存取。
(2)ACCESS支持的SQL指令非常齐全。
(3)ACCESS ODBC驱动程序的效率非常高。
虽然它不是服务器级的数据库,但是作为中小型企业内部网的数据库支持还是绰绰有余的。
(4)ACCESS97在OFFICE97中就有,非常方便得到和使用。
本文就以ACCESS数据库为准介绍基于WEB的数据库存取方法。
(二)例子:我们建立一个“客户”数据库,需要保存如下的客户资料:客户名称、联络人姓名、所在城市、电话号码。
(1)首先建立ACCESS数据库customer.mdb(今后有用的)。
建立如下字段:客户名称、联络人姓名、所在城市、电话号码、客户编号、时间。
将表保存为"客户"(今后有用的,===>看看图)。
注意:建立字段时多作了2个(客户编号、时间),因为在今后排序时要用到它们。
建议今后做数据库时最好都加上这2项,不会没用的。
此外,在保存表时ACCESS 会询问是否建立一个住关键字,我们不需要它所以不必建立。
还有:时间字段的"默认值"设成"now()",即去系统当时的时间。
同时将索引项设成"有(允许重复)",含义:WEB上极有可能同时存取数据,所以允许重复,索引设成"有"可以加快排序速度。
===>看看图(2)建立递交表单add.htm:源代码如下:<html><head><title>添加数据库记录</title><meta http-equiv="Content-Type" content="text/html; charset=gb2312"></head><body bgcolor="#FFFFFF"><p align="center"><font size="5">添加数据库记录</font></p><form method="post" action="adddatabase.asp"><div align="center"><table width="46%" border="0"><tr><td width="28%"><div align="right">公司名称:</div></td><td width="72%"><input type="text" name="CompanyName"></td></tr><tr><td width="28%"><div align="right">联络人姓名:</div></td><td width="72%"><input type="text" name="CName"></td></tr><tr><td width="28%"><div align="right">所在城市:</div></td><td width="72%"><input type="text" name="City"></td></tr><tr><td width="28%"><div align="right">电话号码:</div></td><td width="72%"><input type="text" name="Tel"></td></tr><tr><td width="28%"><div align="right"> </div></td><td width="72%"><input type="submit" name="Submit" value="Submit"> <input type="reset" name="reset" value="Reset"></td></tr></table></div></form></body></html>这与普通的HTML没有任何区别,关键部分已经用红色标记了。
递交方法用POST,递交后处理的程序是adddatabase.asp(下一步就重点讨论它)。
(3)关键部分:建立与数据库的联系并将表单中收集到的信息添加到ACCESS数据库中。
ASP代码放在〈%和%>之间。
adddatabase.asp程序内容:<%CompanyName = Request("CompanyName")CName = Request("CName")City = Request("City")Tel = Request("Tel")%>以上,首先取得表单中填写的数据,使用ASP的Request对象非常容易可以实现数据的收集。
双引号中的就是上个文件中建立的各个输入框中的名字红色部分(NAME=)。
所以今后为每个输入框起名字是个好习惯,尽管有时候并不一定用得到。
这样取得的数据就保存在等号坐侧的变量中了。
If CompanyName = "" Or CName = "" Or City = "" Or Tel = "" ThenResponse.Write "<html><body><center><font size=5>请将资料填写完整。
</font></center></body></html>"'Response.Redirect "error.htm"Response.EndEnd If这里是检测各个项目是否输入了东西,如果为空则不往下继续执行,显示错误信息。
注意:你可以使用两种方法。
我都列出了。
方法一:使用Response.Write方法写一个出错页面,类似于java scripts的document.write写法,只是ASP使用Response.write罢了。
方法二:使用Response.Redirect方法导向出错页面error.htm。
我在方法一的代码前加上单引号表示注释。
('ASP中表示注释用单引号')。
<%set dbconnection=Server.CREATEOBJECT("ADODB.CONNECTION")DBPath = Server.MapPath("customer.mdb")dbconnection.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & DBPath%>程序解释:(1)建立Connection对象:dbconnection,建立一个连接(Connection)是数据库存取的开始。
我们使用ASP的内建对象方法Server.Createobject建立与数据库的连接。
ADODB是ASP的数据库存取组件,不必担心只要有ASP就有它了,是内置的。
(2)使用dbconnection.open方法打开数据库customer.mdb。
driver参数语法:driver={Microsoft Access Driver (*.mdb)}必须这么写。
告诉系统使用ACCESS ODBC驱动处理。
dbq参数用来指定打开的数据库文件,它必须是完整的路径。
例如"c:\inetpub\wwwroot\customer\customer.mdb",我们使用Server.MapPath 的方法取得数据库的完整路径。
<%Set rs = Server.CreateObject("ADODB.Recordset")%>建立Recordset对象rs。
Connection仅仅是建立了与数据库间的连接,要存取数据还应该再建立Recordset 对象。
rs.Open "客户", dbconnection, adOpenDynamic, 3打开数据库中的表"客户"(客户是表名)。
语法:rs.open 数据表名或SQL指令,已经建立的Connection对象(这里是dbconnection), 锁定类型<%rs.AddNewrs("公司名称") = CompanyNamers("联络人姓名") = CNamers("所在城市") = Cityrs("电话号码") = Telrs.Update%>用AddNew向数据库请求添加数据。