一、Recordset 對(duì)象簡(jiǎn)述 Recordset 對(duì)象表示的是來(lái)自基本表或命令執(zhí)行結(jié)果的記錄全集。在任何情況下,該對(duì)象所指的當(dāng)前記錄均為集合內(nèi)的單條記錄。使用 Recordset 對(duì)象可以操作來(lái)自提供程序的數(shù)據(jù),通過(guò)該對(duì)象幾乎可以對(duì)所有數(shù)據(jù)進(jìn)行操作。所有 Recordset 對(duì)象均使用記錄(行)和字段(列)進(jìn)行構(gòu)造。Recordset 對(duì)象實(shí)際上是依附于 Connection 對(duì)象和 Command 對(duì)象之上的。通過(guò)建立及開(kāi)啟一個(gè) Connection 對(duì)象,可以與我們關(guān)心的數(shù)據(jù)庫(kù)建立連接;通過(guò)使用 Command 對(duì)象,則可以告訴數(shù)據(jù)庫(kù)我們想要做什么:是插入一條記錄,還是查找符合條件的記錄;通過(guò)使用 Recordset 對(duì)象,則可以方便自如地操作 Command 對(duì)象返回的結(jié)果。
二、創(chuàng)建 Recordset 對(duì)象
要使用 Recordset 對(duì)象處理結(jié)果,首先必須創(chuàng)建 Recordset 對(duì)象實(shí)例。其格式如下:
Set RS=Server.CreateObject("adodb.recordset") 三、打開(kāi)記錄集
RS.Open Source,ActiveConnection,CursorType,LockType,Options 所有的參數(shù)都是可選項(xiàng)。Source 為 Command 對(duì)象變量名、SQL 語(yǔ)句、表名、存儲(chǔ)過(guò)程調(diào)用或持久 Rcordset 文件名。
ActiveConnection 為有效的 Connection 對(duì)象變量名或包含 ConnectionString 字符串。
LockType 指定打開(kāi) Recordset 時(shí)應(yīng)使用的鎖定類(lèi)型。
Options 指定如何計(jì)算 Source 參數(shù)或從以前保存 Recordset 的文件中恢復(fù) Recordset。
四、Recordset 對(duì)象的常用屬性
Recordset 對(duì)象的常用屬性<表>
| 屬 性 |
描 述 / 注 解 |
| ActiveConnection |
指定與數(shù)據(jù)提供者的連接信息,用來(lái)指定當(dāng)前的 Recordset 對(duì)象屬于哪個(gè) Connection 對(duì)象。 |
| Source |
指定 Recordset 對(duì)象的數(shù)據(jù)源,可以是一個(gè) Command 對(duì)象名、SQL 語(yǔ)句、數(shù)據(jù)庫(kù)表或存儲(chǔ)過(guò)程 。 |
| CoursorType |
指定 Recordset 對(duì)象所使用的光標(biāo)類(lèi)型。 |
共有 4 種光標(biāo)類(lèi)型: 0 一 前滾光標(biāo),光標(biāo)只能向前移動(dòng),執(zhí)行效率高。是 Cursor 的默認(rèn)值; 1 一 鍵盤(pán)光標(biāo),光標(biāo)可向前或向后移動(dòng),Recordset 記錄集同步反映自它創(chuàng)建后其他用戶(hù)所作的修改和刪除,但卻不能同步反映自它創(chuàng)建后其他用戶(hù)新增加的記錄; 2 一 動(dòng)態(tài)光標(biāo),光標(biāo)可向前或向后滾動(dòng),任何時(shí)候 Recordset 記錄集都同步反映其他用戶(hù)的任何操作; 3 一 靜態(tài)光標(biāo),光標(biāo)可向前或向后移動(dòng),自創(chuàng)建后無(wú)法同步反映其他用戶(hù)所做的任何操作,它的功能簡(jiǎn)單但消耗資源少。
|
| LockType |
表示編輯時(shí)記錄的鎖定類(lèi)型。它決定了當(dāng)不止一個(gè)用戶(hù)試圖同時(shí)改變一個(gè)記錄時(shí),Recordset 如何處理數(shù)據(jù)記錄。 |
0 一 只讀鎖定,記錄只讀,不能更新 Recordset ,為 LockType 的默認(rèn)值; 1 一 悲觀鎖定,編輯記錄開(kāi)始立刻鎖定,直到提交給數(shù)據(jù)提供者; 2 一 樂(lè)觀鎖定,一次鎖定一條記錄,只有調(diào)用 Update 方法提交數(shù)據(jù)時(shí)才鎖定記錄; 3 一 樂(lè)觀的批量更新,允許同時(shí)更新多條記錄。
|
| Filter |
用來(lái)設(shè)定一個(gè)過(guò)濾條件,以便對(duì) Recordset 記錄進(jìn)行過(guò)濾。 |
| CacheSize |
表示一個(gè) Recordset 對(duì)象在高速緩存中的記錄數(shù)。 |
| Maxrecords |
執(zhí)行一個(gè) SQL 查詢(xún)時(shí),返回 Recordset 對(duì)象的最大記錄數(shù)。 |
| Bof |
判斷記錄指針是否到了第一條記錄之前。 |
| Eof |
判斷記錄指針是否到了最后一條記錄之后。 |
| RecordCount |
返回 Recordset 對(duì)象的記錄數(shù),(在使用鍵盤(pán)光標(biāo)時(shí),該屬懷返回 的可能是不太準(zhǔn)確的數(shù)值;一般情況下,并不用這種方法來(lái)統(tǒng)計(jì) Recordset 中的記錄數(shù),因?yàn)樗男阅懿⒉环€(wěn)定) |
| Bookmark |
書(shū)簽標(biāo)記,用來(lái)保存當(dāng)前記錄的位置。 |
| AbsolutePosition |
用來(lái)設(shè)定 Recordset 對(duì)象中當(dāng)前記錄的順序位置是第幾行記錄。 |
| PageSize |
表示 Reccordset 對(duì)象的頁(yè)面大小(每頁(yè)多少條記錄),默認(rèn)值為10。 |
| PageCount |
表示 Recordset 對(duì)象的頁(yè)面?zhèn)€數(shù)。 |
| AbsolutePage |
表示當(dāng)前記錄的頁(yè)號(hào)。 |
| EditMode |
指示當(dāng)前記錄的編輯狀態(tài),0 一 已被編輯;1 一 已被修改而未提交;2 一 存入數(shù)據(jù)庫(kù)的新記錄 。 |
| Status |
對(duì) Recordset 對(duì)象進(jìn)行批量更新后,查詢(xún)當(dāng)前記錄的狀態(tài)。 |
| 值 |
意義描述 |
值 |
意義描述 |
| 0 |
記錄更新成功。 |
1024 |
存在記錄鎖定,新記錄未保存。 |
| 1 |
新記錄。 |
2048 |
使用樂(lè)觀并發(fā)事件,未保存。 |
| 2 |
記錄被刪除。 |
4096 |
用戶(hù)違反完整性規(guī)則,記錄未保存。 |
| 4 |
記錄未被刪除。 |
8192 |
很待定修改,記錄未保存。
|
| 8 |
記錄未被修改。 |
16384 |
與一存儲(chǔ)對(duì)象相沖突,記錄未保存。 |
| 16 |
書(shū)簽不合法,記錄未保存。 |
32768 |
內(nèi)存不夠,記錄未保存。 |
| 64 |
影響多個(gè)記錄,未保存。 |
65536 |
用戶(hù)沒(méi)有中、足夠的權(quán)限,未保存。 |
| 128 |
指向一待定插入,記錄未保存。 |
131072 |
違反基本數(shù)據(jù)庫(kù)原則,記錄未保存。 |
| 256 |
操作被取消,記錄未保存。 |
262144 |
記錄已從數(shù)據(jù)源刪除。 |
五、Rcordset 對(duì)象的方法
Recordset 對(duì)象的方法<表二> 方法 描述 / 格式 / 注解
Open 打開(kāi)一個(gè) Recordset 對(duì)象。
Rs.Open[Source][,ActiveConnection][,CursorType][,LursorType][,Option]
Rs :為已經(jīng)建立的 Recordset 對(duì)象;
Source :為可選參數(shù),可以是一個(gè) Command 對(duì)象名、SQL 語(yǔ)句、數(shù)據(jù)庫(kù)表或存儲(chǔ)過(guò)程;
ActiveConnection :定義與數(shù)據(jù)庫(kù)的連接信息;
CursorType :是Recordset 對(duì)象所使用的光標(biāo)類(lèi)型;
LockTypec 是編輯 Recordset 對(duì)象記錄時(shí)所使用的鎖定類(lèi)型;
Option 指示數(shù)據(jù)提供者如何處理 Source 的內(nèi)容類(lèi)型,其參數(shù)值及其意義見(jiàn)下表:
Options值 意義描述
1 表示被執(zhí)行的字符串包含一個(gè)命令文本。
2 表示被執(zhí)行的字符串包含一個(gè)表名。
4 表示被執(zhí)行的字符串包含一個(gè)存儲(chǔ)過(guò)程名。
8 沒(méi)有指定字符串的內(nèi)容(這是默認(rèn)值)
Close 關(guān)閉一個(gè) Recordset 對(duì)象。 但并不從內(nèi)存中刪除該對(duì)象,只是無(wú)法讀取其中的數(shù)據(jù),但仍然可以讀取它的屬性。因此一個(gè)關(guān)閉的 Recordset 對(duì)象還可以用 Open 方法打開(kāi)并保持其原有屬性。
Rs.Close
Rs:為已經(jīng)建立的 Recordset 對(duì)象;如果正進(jìn)行編輯更新數(shù)據(jù)的操作,則在使用此方法之前必須先調(diào)用 Update 和 CancelUpdate 方法。否則將會(huì)出現(xiàn)錯(cuò)誤。
Clone 創(chuàng)建一個(gè) Recordset 對(duì)象的完全拷貝,但只有所用的 Recordset 對(duì)象類(lèi)型允許使用 Bookmarks時(shí)才能使用該方法。
MoveFirst 把 Recordset 指針指向第一行記錄。
Rs.MoveFirst
MoveLast 把 Recordset 指針指向最后一條記錄(該 Recordset 必須支持書(shū)簽)。
Rs.MoveLast
MovePrevious 把Recordset 指針上移一行(使用前應(yīng)判斷 BOF 是否為真,該方法必須支持書(shū)簽)。
Rs.MovePreviors
MoveNext 把Recordset 指針下移一行(使用前應(yīng)判斷 EOF 是否為真)。
Rs.MoveNext
Move 把Recordset 指針指向指定的記錄。
Move n [,start]
n 為要移動(dòng)的記錄數(shù),取正時(shí)表示向前(下)移動(dòng),取負(fù)時(shí)表示向后(上)移動(dòng);
start 是可選參數(shù),表示移動(dòng)的起點(diǎn)。
GetRows 從一個(gè) Rexordset 對(duì)象讀取一行或多行記錄到一個(gè)數(shù)組中。
Myarray=Rs.GetRows ( rows,start,fields )
Myarray 為目標(biāo)數(shù)組名;Rs 為已創(chuàng)建的 Recordset 對(duì)象,Rows 為返回?cái)?shù)組的行數(shù);start 為讀取數(shù)據(jù)的起點(diǎn) (書(shū)簽);Fields 為 Recordset 的字段。
NextRecordSet 清除當(dāng)前的 Recordset 并執(zhí)行下一條指令,以傳回下一個(gè) Recordset 對(duì)象,如果沒(méi)有下一條指令,則返回 Nothing 給 Recordset 。
Requery 重新執(zhí)行 SQL 操作,以更新 Recordset 對(duì)象中的數(shù)據(jù)。
Resync 從數(shù)據(jù)源更新當(dāng)前的 Recordset 記錄,實(shí)現(xiàn)與數(shù)據(jù)源的同步。
Addnew 增加一條空記錄。
Rs.AddNew N
增加一條空記錄,并將數(shù)組中的元素(N)添加到這條空記錄中。
Delete 刪除當(dāng)前記錄。
Delete [value]
如果 value=1(默認(rèn)值)表示該方法只刪除當(dāng)前記錄,value=2 表示該方法刪除所有由 Filter 屬性設(shè)定的記錄。
Update 保存當(dāng)前記錄的任何變動(dòng)。
Rs.Update
CancelUpdate 取消前一個(gè) Update 方法所做的一切修改。
UpdateBatch Recordset 工作在批量方式時(shí),取消對(duì) Recordset 的更新。
Suports 獲取創(chuàng)建的 Recordset 對(duì)象的能力信息。
注:使用 Move 、MoveFirst 、MoveLast 、MovePrevious 、MoveNext 方法移動(dòng)記錄指針時(shí),需要注意 Rrcordset 對(duì)象的光標(biāo)類(lèi)型。如“前滾光標(biāo)”限制了記錄指針只能向前移動(dòng)。
六、Recordset 對(duì)象的應(yīng)用實(shí)例
1、這是一個(gè)簡(jiǎn)單的員工基本情況管理系統(tǒng),其功能有:1)、添加員工資料;2)、更改員工資料;3)、刪除員工資料。它包含著六個(gè)頁(yè)面和一個(gè)數(shù)據(jù)庫(kù)。分別為:
1)、主頁(yè)面:index.asp
2)、添加數(shù)據(jù)頁(yè)面:add.htm
3)、保存添加數(shù)據(jù)頁(yè)面:add.asp
4)、更改數(shù)據(jù)頁(yè)面:Update.asp
5)、保存更改數(shù)據(jù)頁(yè)面:Update2.asp
6)、刪除記錄頁(yè)面:Detele.asp
7)、數(shù)據(jù)庫(kù):RSGL.mdb.用到該數(shù)據(jù)庫(kù)中的”員工基本情況表“。
2、各頁(yè)面的代碼如下:
1)、主頁(yè)面:index.asp。該頁(yè)面的功能有:
a、創(chuàng)建兩個(gè)對(duì)象,Connectiion對(duì)象和Recordset對(duì)象,其目的是連接數(shù)據(jù)庫(kù)和返回一個(gè)記錄集;
b、創(chuàng)建一個(gè)表格,使do while循環(huán)語(yǔ)句將各條記錄在表格中顯示出來(lái);
c)、創(chuàng)建三個(gè)超連接,一個(gè)用以連接添加數(shù)據(jù)頁(yè)面,另一個(gè)通過(guò)指定的員工姓名連接到更改數(shù)據(jù)頁(yè)面,還有一個(gè)通過(guò)指定的員工姓名連接到刪除頁(yè)面。
<% @ Language="VBScript" %>
<html>
<head><title>員工基本情況管理系統(tǒng)</title></head>
<body>
<%
'****************創(chuàng)建兩個(gè)對(duì)象(連接對(duì)象、記錄集對(duì)象)*********************
dim cnn,rst
set cnn=Server.CreateObject("ADODB.Connection")
set rst=Server.CreateObject("ADODB.Recordset")
'指定連接字符串,
cnn.ConnectionString="PROVIDER=Microsoft.jet.OLEDB.4.0;Data Source=" & server.MapPath("../rsgl.mdb")
cnn.Open
sSQL="select * from 員工基本情況表"
'rst.Open sSQL,cnn,1,1
set rst=cnn.Execute(sSQL,,adCmdText)
%>
<!--************創(chuàng)建一個(gè)表格,用以顯示數(shù)據(jù)庫(kù)中的各條記錄***********-->
<table align="center" border="1">
<caption><h3>教職員工基本情況表</h3></caption>
<tr colspan="5"><td><a href="add.htm">添加記錄</a></td></tr>
<!--顯示各字段名-->
<tr><td align="center">員工姓名</td><td align="center">所在部門(mén)</td><td align="center">家庭住址</td><td align="center">家庭電話(huà)</td><td align="center">Email</td><td align="center">狀態(tài)</td>
<%
'使用do while循環(huán)語(yǔ)句將各條記錄顯示出來(lái)。
do while Not rst.eof
t1=rst("員工姓名")
t2=rst("所在部門(mén)")
t3=rst("家庭住址")
t4=rst("家庭電話(huà)")
t5=rst("Email")
tt="<tr align='center'><td>" & t1 & "</td><td>" &t2& "</td><td>" &t3& "</td><td>" &t4& "</td><td>" &t5& "</td><td>"
tt=tt & "<a href=Update.asp?id=" & t1 & ">修改</a><a href=Detele.asp?id=" & t1 & ">||刪除</a></td></tr>"
response.write tt
rst.MoveNext
loop
cnn.Close
Set cnn=Nothing
%>
</table>
</body>
</html>
2)、添加數(shù)據(jù)頁(yè)面:add.htm 。本頁(yè)面由一個(gè)表單組成,其功能是向保存添加數(shù)據(jù)頁(yè)面(add.asp)提交數(shù)據(jù)。
<html>
<head><title>添加記錄</title></head>
<body>
<div align="center">
<form name="form1" method="post" action="add.asp">
<table align="center" border="1">
<tr><td colspan="2" align="center">員工基本情況表</td></tr>
<tr><td align="right">員工姓名:</td>
<td><input type="text" name="txtName"></td></tr>
<tr><td align="right">所在部門(mén):</td>
<td><input type="text" name="txtDepartment"></td></tr>
<tr><td align="right">家庭住址:</td>
<td><input type="text" name="txtAddr"></td></tr>
<tr><td align="right">家庭電話(huà):</td>
<td><input type="text" name="txtTel"></td></tr>
<tr><td align="right">Email:</td>
<td><input type="text" name="txtemail"></td></tr>
<tr><td align="center"><input type="submit" value="提交"></td>
<td align="center"><input type="reset" value="全部重寫(xiě)"></td></tr>
</table>
</form>
<a href="index.asp">返回首頁(yè)</a>
</div>
</body>
</html>
3)、保存添加數(shù)據(jù)頁(yè)面:add.asp。該頁(yè)面的功能有:a)、使用Request對(duì)象獲取從add.htm頁(yè)面提交的值;b)、創(chuàng)建三個(gè)對(duì)象(一個(gè)連接對(duì)象、二個(gè)記錄集對(duì)象),通過(guò)rs.addnew,rs.update兩個(gè)函數(shù)將數(shù)據(jù)保存到數(shù)據(jù)庫(kù);c)、顯示信息提示框。
<% @ Language="VBScript" %>
<html>
<head>
<title>添加記錄</title>
</head>
<body>
<!-- #include virtual ="/adovbs.inc" -->
<%
'**************使用Request對(duì)象獲取從add.htm頁(yè)面中提交的值************************************
Name1=Request.Form("txtName")
Department=Request.Form("txtDepartment")
Addr=Request.Form("txtAddr")
Tel=Request.Form("txtTel")
Email=Request.Form("txtEmail")
if Tel="" then
Tel="不祥"
end if
if Email="" then
Email="不祥"
end if
if name1="" or department="" or Addr="" then
%>
<script language="vbscript">
alert("員工姓名、所在部門(mén)和家庭住址中只少有一項(xiàng)為空,請(qǐng)?zhí)顚?xiě)完整。")
history.back
</script>
<%
else
'****************創(chuàng)建三個(gè)對(duì)象(一個(gè)連接對(duì)象、二個(gè)記錄集對(duì)象)*********************
dim cnn,rst
set cnn=Server.CreateObject("ADODB.Connection")
'指定連接字符串,
cnn.ConnectionString="PROVIDER=Microsoft.jet.OLEDB.4.0;Data Source=" & server.MapPath("../rsgl.mdb")
cnn.Open
'建立Recordset對(duì)象并以追加記錄方式打開(kāi)數(shù)據(jù)庫(kù)。
set rst=Server.CreateObject("ADODB.Recordset")
set rst1=Server.CreateObject("ADODB.Recordset")
sSQL="select * from 員工基本情況表 where 員工姓名='" & name1 & "'"
rst.Open sSQL,cnn,1,1
if rst.EOF or rst.BOF then '如果數(shù)據(jù)表中無(wú)此數(shù)據(jù),則添加記錄。
rst1.Open "員工基本情況表",cnn ,1,2
rst1.addnew array("員工姓名","所在部門(mén)","家庭住址","家庭電話(huà)","Email"),array(name1,Department,Addr,Tel,Email)
rst1.update
%>
<!--**********顯示信息提示框**************-->
<script language="vbscript">
alert("記錄添加成功!")
window.location.href="index.asp"
</script>
<%
rst1.close
set rst1=nothing
else
%>
<script language="vbscript">
alert("員工姓名為:“<%=name1 %>” 的記錄已經(jīng)存在。")
history.back
</script>
<%
end if
rst.close
set rst=nothing
end if
%>
<h3>記錄添加成功!</h3>
<p><a href="add.htm">返回記錄添加表單</a> || <a href="index.asp">返回首頁(yè)</a>
</center>
</body>
</html>
4)、更改數(shù)據(jù)頁(yè)面:Update.asp。該頁(yè)面的功能有:a、創(chuàng)建兩個(gè)對(duì)象,Connectiion對(duì)象和Recordset對(duì)象,其目的是連接數(shù)據(jù)庫(kù)和返回一個(gè)記錄集;b、創(chuàng)建一個(gè)表單,其目的是提交更改過(guò)的數(shù)據(jù)。
<%
a=request("id")
response.write a
'response.end
'****************創(chuàng)建兩個(gè)對(duì)象(連接對(duì)象、記錄集對(duì)象)*********************
dim cnn,rst,cmd
set cnn=Server.CreateObject("ADODB.Connection")
set rst=Server.CreateObject("ADODB.Recordset")
'指定連接字符串,
cnn.ConnectionString="PROVIDER=Microsoft.jet.OLEDB.4.0;Data Source=" & server.MapPath("../rsgl.mdb")
cnn.Open
sSQL="select * from 員工基本情況表 where 員工姓名='" & a & "'"
'rst.Open sSQL,cnn,1,1
set rst=cnn.Execute(sSQL,,adCmdText)
%>
<html>
<head><title>更改記錄</title></head>
<body>
<div align="center">
<!--****************創(chuàng)建一個(gè)表單*****************************-->
<form name="form1" method="post" action="Update2.asp">
<table align="center" border="1">
<tr><td colspan="2" align="center">員工基本情況表</td></tr>
<tr><td align="right">員工姓名:</td>
<td><input type="text" name="txtName" value=<%=rst("員工姓名")%> readonly></td></tr>
<tr><td align="right">所在部門(mén):</td>
<td><input type="text" name="txtDepartment" value=<%=rst("所在部門(mén)")%>></td></tr>
<tr><td align="right">家庭住址:</td>
<td><input type="text" name="txtAddr" value=<%=rst("家庭住址")%>></td></tr>
<tr><td align="right">家庭電話(huà):</td>
<td><input type="text" name="txtTel" value=<%=rst("家庭電話(huà)")%>></td></tr>
<tr><td align="right">Email:</td>
<td><input type="text" name="txtemail" value=<%=rst("Email")%>></td></tr>
<tr><td align="center"><input type="submit" value="提交"></td>
<td align="center"><input type="reset" value="全部重寫(xiě)"></td></tr>
</table>
</form>
</div>
</body>
</html>
5)、保存更改數(shù)據(jù)頁(yè)面:Update2.asp。 該頁(yè)面的功能有:a)、使用Request對(duì)象獲取從Update.asp頁(yè)面提交的值;b)、創(chuàng)建二個(gè)對(duì)象(連接對(duì)象、記錄集對(duì)象);c)、通過(guò)表格顯示更改后的記錄。
<% @ Language="VBScript" %>
<%
'*****************從提交表單中提取數(shù)值***************************
Dim Name,Department,Addr,Tel,Email
Name=Trim(Request.Form("txtName"))
Department=Trim(Request.Form("txtDepartment"))
Addr=Trim(Request.Form("txtAddr"))
Tel=Trim(Request.Form("txtTel"))
Email=Trim(Request.Form("txtEmail"))
%>
<html>
<head>
<title>更改記錄</title>
</head>
<body>
<!-- #include virtual ="/adovbs.inc" -->
<%
'****************創(chuàng)建二個(gè)對(duì)象(連接對(duì)象、記錄集對(duì)象)*********************
dim cnn,rst,cmd
set cnn=Server.CreateObject("ADODB.Connection")
set rst=Server.CreateObject("ADODB.Recordset")
'指定連接字符串,
cnn.ConnectionString="PROVIDER=Microsoft.jet.OLEDB.4.0;Data Source=" & server.MapPath("../rsgl.mdb")
cnn.Open
sSQL="update 員工基本情況表 set 所在部門(mén)='" & Department & "',家庭住址='" & Addr & "',家庭電話(huà)='" & Tel & "',Email='" & Email & "' where 員工姓名='" & name & "'"
rst.Open sSQL,cnn,1,2
set rst=nothing
%>
<!--**************************用表格顯示記錄。**********************-->
<table align="center" border="1">
<tr><td colspan="2" align="center">員工基本情況表</td></tr>
<tr><td align="right" width="130" align="center">員工姓名:</td>
<td width="200"><%=Name %></td></tr>
<tr><td align="right">所在部門(mén):</td>
<td><%=Department %></td></tr>
<tr><td align="right">家庭住址:</td>
<td><%=Addr %></td></tr>
<tr><td align="right">家庭電話(huà):</td>
<td><%=Tel %></td></tr>
<tr><td align="right">Email:</td>
<td><%=Email %></td></tr>
</table>
<center>
<p><hr width="505" color="#cc9999">
<h3>記錄更改成功!</h3>
<p><a href="index.asp">返回首頁(yè)</a>
</center>
</body>
</html>
6)、刪除數(shù)據(jù)頁(yè)面:Detele.asp。 a)、使用Request對(duì)象獲取要?jiǎng)h除的員工姓名;b)、創(chuàng)建二個(gè)對(duì)象(連接對(duì)象、記錄集對(duì)象);c)、給出刪除成功提示框。
<% @ Language="VBScript" %>
<%
'從提交表單中提取數(shù)值
Dim Name
Name=Trim(Request.Querystring("id"))
%>
<html>
<head>
<title>更改記錄</title>
</head>
<body>
<!-- #include virtual ="/adovbs.inc" -->
<%
'****************創(chuàng)建二個(gè)對(duì)象(連接對(duì)象、記錄集對(duì)象)*********************
dim cnn,rst,cmd
set cnn=Server.CreateObject("ADODB.Connection")
set rst=Server.CreateObject("ADODB.Recordset")
'指定連接字符串,
cnn.ConnectionString="PROVIDER=Microsoft.jet.OLEDB.4.0;Data Source=" & server.MapPath("../rsgl.mdb")
cnn.Open
sSQL="delete from 員工基本情況表 where 員工姓名=" & "'" & Name & "'"
rst.Open sSQL,cnn,1,2
set rst=nothing
ifo="員工姓名為:“" & name & "” 的記錄已被您成功的刪除!"
%>
<script languge="vbscript">
alert("<%=ifo %>")
window.location.href="index.asp"
</script>
<p><a href="index.asp">返回記錄添加表單</a>
</center>
</body>
</html>
RS.OPEN SQL,CONN,A,B
A: ADOPENFORWARDONLY(=0) 只讀,且當(dāng)前數(shù)據(jù)記錄只能向下移動(dòng)
ADOPENKEYSET(=1) 可讀寫(xiě),當(dāng)前數(shù)據(jù)記錄可自由移動(dòng)
ADOPENDYNAMIC(=2) 可讀寫(xiě),當(dāng)前數(shù)據(jù)記錄可自由移動(dòng),可看到新增記錄
ADOPENSTATIC(=3) 只讀,當(dāng)前數(shù)據(jù)記錄可自由移動(dòng)
B: ADLOCKREADONLY(=1) 缺省鎖定類(lèi)型,記錄集是只讀的,不能修改記錄
ADLOCKPESSIMISTIC(=2) 悲觀鎖定,當(dāng)修改記錄時(shí),數(shù)據(jù)提供者將嘗試鎖定記錄以確保成功地編輯記錄。只要編輯一開(kāi)始,則立即鎖住記錄。
ADLOCKOPTIMISTIC(=3) 樂(lè)觀鎖定 ,直到用Update方法提交更新記錄時(shí)才鎖定記錄。
ADLOCKBATCHOPTIMISTIC(=4) 批量樂(lè)觀鎖定,允許修改多個(gè)記錄,只有調(diào)用UpdateBatch方法后才鎖定記錄。
當(dāng)不需要改動(dòng)任何記錄時(shí),應(yīng)該使用只讀的記錄集,這樣提供者不用做任何檢測(cè)。對(duì)于一般的使用,樂(lè)觀的鎖定可能是最好的選擇,因?yàn)橛涗浿槐绘i定一小段時(shí)間, 數(shù)據(jù)在這段時(shí)間被更新。這減少了資源的使用。