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产品的记录:
Windows NT Products |
<%
While NOT objRec.EOF
If objRec("OS") = "Windows NT" THEN \\\\\\\' specifies the criteria
Response.Write "
" & objRec("ProductID") & " | "
Response.Write "" & objRec("SKU") & " | "
Response.Write "" & objRec("Name") & " | "
Response.Write "" & objRec("File") & " |
"
end if
objRec.MoveNext
Wend
%>
增加一个记录
一旦你开始
使用recordset和ASP了,你就会十分
盼望
可以通过网络将数据增加到数据库中去 。增加内容是十分主要的,如,当你需求你的网页阅读者留下它们的观点和
意见,或者,当你想要进行治理更新的时候 。
下面的代码
打开了一个recordset,这个recordset是有关一个有着书本和它们作者名字的数据库表格 。你可能曾经看到过这个,然而这次,最终三个
注明书定义的指针类型是不同的:adOpenStatic, adLockOptimistic, adCmdTable:
<%\\\\\\\' database connection already made; code not shown here
Set objRec = Server.CreateObject ("ADODB.Recordset")
objRec.Open "books", bookdb, adOpenStatic, adLockOptimistic, adCmdTable
%>
(假如你没有
使用adovbs.inc的复制文件,第三行应该为:objRec.Open "books", bookdb, 3,3,2).
recordset现在就
预备好
接纳数据了,你
惟独求告诉它增加什么 。在这个状况下,
假如我们从表格中
存入变量:strBookTitle和strBookAuthor 。我们的table, books有两个字段,称作Title 和 Author,所以我们
可以通过
使用下面的语句来增加一个新的记录:
<%
objRec.AddNew
ObjRec("Title") = strBookTitle
objRec("Author") = strBookAuthor
objRec.Update
%>
strBookTitle和strBookAuthor代表值,通常被消费者
拜访 。假如你只不过想测试add
性能,你
可以给title和author增加一个变量――只不过需求记住
使用引号 。在你第一次
使用它的时候,你可能会马上
打开你的数据库,以确保更新的
产生 。
Recordset类型
在显示的objRec.Open例子中,你会发现在末尾有0,1,2的字样 。这些数字代表不同的指针类型 。你是用的类型依赖于你将
使用它来干什么 。例如,假如你不需求
批改或增加任何的记录,你
可以
使用一个Lock类型 。而当你
方案要
批改或者更新数据库的时候,你所
取舍的类型就会不同 。
0,1,2 实际上代表:
adOpenForwardOnly, adLockReadOnly, adCmdTable
固然,假如在你的服务器上已经有了adovbs.inc的备份,那么,你也
可以不
使用数字,直接
使用这些单词 。adovbs.inc 包括了这三个常量和其它常量的一个列表 。