在ASP中使用数据库ASP有一个最重要的功能,就是它可以让你非常轻松地连接数据库。通常都是和一个Access或者一个SQL数据库相连。因为Access是最容易
起步的,同时,在你的机器上也许已经都装有Access了,所以,在下面的例子中,我们都将使用Access来做例子。一旦你学习了ASP和Access
数据库连接的核心技术方法,当你开始使用SQL server的时候,你就会发现,两者所需要的关键技术是基本相同的。
当你要连接数据库的时候,你需要在服务器上将这个数据库打开。你可以通过使用数据源名(DSN)或者通过在你的脚本语言中直接使用一个DSN-less连接的方法来连接和打开数据库。 创建一个数据源名(DSN) ISP提供服务的,并且这个ISP支持ASP,那么很有可能它就会提供一个GUI接口,来给你的数据库创建一个DSN。 在Windows 95/98/NT中,打开控制面板(开始菜单->设置->控制面板),双击ODBC进入。 连接数据库 要创建一个DSN-less连接,你就需要提供同样的信息。下面这个例子就显示了如何给一个叫products的数据库建立一个DSN-less连接: <% 第二行定义了数据库的驱动和物理路径。为了要使用一个DSN-less连接,你就需要知道实际的文件存放地点(绝对路径)。Server.MapPath给任何一个使用主机服务的人提供了一个简单的工作环境来查找出那些难于查到的实际访问路径。 如果我们已经建立了一个系统DSN,并命名为products,则连接码应该为: <% 现在,数据库就已经打开了,那么你可以做些什么呢?第一件事情当然就是阅读数据库中的一系列记录,并将它们放到你的页面中去。但是,在这之前,你需要一个recordset。 Recordset Set objRec = Server.CreateObject ("ADODB.Recordset") 这个语句就创建了一个名为downloadable表的recordset(objRec),这个表在products数据库的
strConnect中定义。使用Recordset open,
我们就可以循环浏览这个表,并且可以将它的所有内容都显示到屏幕上。或者,我们可以测试特定字段的内容,也可以只将我们关注的内容写到屏幕上去。 每一列代表一个字段。所以,如果数据库表如下所示: Product ID SKU
填写recordset内容 While NOT objRec.EOF Response.WriteobjRec("ProductID") & ", " 即使你没有如此使用过loop,你仍然可以通过阅读这个代码来将信息写到comma-delimited字符串里,并且当数据库表中创建了一个新行
的时候,就重新创建一个新的行,来记录表中的那一行。你可以使用同样的方法将数据写到HTML表格中去。通过使用Response.Write添加你的
TABLE标签,需要记住以下几点: 你的HTML 标签和引号中的内容。 下面,我们就可以确认我们需要将哪个字段打印到屏幕上,而要忽略哪些那些字段。或者,我们可以选择哪些字段用一种格式,而另外的字段用其它的格式,如,使用不同的颜色。 使用一个简单的If...,循环就可以给我们提供更多的数据库控制权利。首先让我们来打印有关Windows NT产品的记录:
<% If objRec("OS") = "Windows NT" THEN \\\\\\\' specifies the criteria Response.Write "<TR><TD BGCOLOR=""#FFFF66"">" & objRec("ProductID") & "</TD>" end if %>
<% \\\\\\\' database connection already made; code not shown here objRec.Open "books", bookdb, adOpenStatic, adLockOptimistic, adCmdTable %> (如果你没有使用adovbs.inc的复制文件,第三行应该为:objRec.Open "books", bookdb, 3,3,2). recordset现在就准备好接收数据了,你只需要告诉它添加什么。在这个情况下,假设我们从表格中取出变量:strBookTitle
和strBookAuthor。我们的table, books有两个字段,称作Title 和
Author,所以我们可以通过使用下面的语句来添加一个新的记录: <% ObjRec("Title") = strBookTitle %> strBookTitle和strBookAuthor代表值,通常被用户访问。如果你只是想测试add功能,你可以给title和author添加一个变量――只是需要记住使用引号。在你第一次使用它的时候,你可能会立即打开你的数据库,以确保更新的发生。 Recordset类型 0,1,2 实际上代表: adOpenForwardOnly, adLockReadOnly, adCmdTable 当然,如果在你的服务器上已经有了adovbs.inc的备份,那么,你也可以不使用数字,直接使用这些单词。adovbs.inc 包括了这三个常量和其它常量的一个列表。 |
|