資料庫遠端控制的ASP實現

來源:互聯網
上載者:User
廣州地鐵運營事業總部電腦中心 周振喜 呂利

著電腦應用的發展,越來越多的資料被儲存在中心機房的伺服器上,由於一些管理員的地理位置不在中心機房,於是帶來了資料的遠端管理問題。本文以廣州地鐵運營事業總部的圖書資料管理系統為例,介紹利用ASP技術實現這種資料庫遠端控制的具體方法和步驟。
問題的提出
廣州地鐵運營事業總部已經實現電腦內部連網,因為個人電腦在人們下班後都處於關機狀態,為使員工可以24小時通過連網本機電腦查知圖書資料的即時狀態資訊,因此將圖書資料管理資料庫放在電腦中心的伺服器上,而不是放在資料室的個人電腦中。這樣就帶來了資料庫的遠端管理問題。
因為只有在仍有複本可借的情況下,員工才有必要去資料室辦理借閱手續,並且如果已無複本可借而本人正急需使用時,還可以查詢借閱人資訊,以便同借閱人共同參閱或請其儘快歸還以便借閱。所以,公司資料室圖書資料管理資料庫必須能向查詢員工提供複本總量、剩餘複本量、借閱人等即時狀態資訊。
為此,在運營事業總部內部網首頁上給圖書資料管理員提供一個對圖書資料借閱情況進行管理的入口。當圖書資料管理員進入時,進行身分識別驗證,憑使用者名稱和密碼進入圖書資料借閱情況管理頁面。對圖書資料管理員來說,對資料庫的操作就像在本機電腦上一樣。
操作該網路資料庫時用到的對象主要有Request對象和ADO組件的Connection、Response、CreateObject對象,用到的方法主要是SQL語言的一些命令如Select、Update等。Request對象用來從地址欄中取回參數值;Connection對象用來建立和管理應用程式和ODBC資料庫之間的串連,該對象具有各種屬性和方法,可以使用它們開啟和關閉資料庫的串連,並且可以發出查詢請求更新資訊; SQL命令主要實現資料記錄的查詢、更新等操作。
下面是各主要功能模組的關鍵代碼和解釋。
使用者登入(login.asp)
<!--#include file=“adovbs.inc” -->
<%
// 擷取操作電腦的IP地址
Dim ipaddr
Ipaddr = Request.ServerVariables(“REMOTE_ADDR”)
// 限制只有資料室的電腦(固定IP地址)才能進入圖書資料資料庫維護系統
if Ipaddr<>“172.16.1.56” and paddr<>“172.16.1.58” and Ipaddr<>“172.16.3.61” then
IpError=1
end if
// 要求輸入使用者名稱與密碼,與上一條件構成雙重保護,並將輸入的使用者名稱和密碼與使用者管理資料庫中的使用者名稱和密碼對照,如果有此使用者且密碼正確,則繼續執行
name=trim(request(“name”))
password=trim(request(“password”))
if name<>“” and password<>“” then
Set conn=Server.CreateObject(“ADODB.Connection”)
Set rs=Server.CreateObject(“adodb.recordset”)
sql=“select * from user where username=‘”&name&“’and passwd=‘”&password&“’”
Set rs=conn.execute(sql)
 ……
if not(rs.eof) then
Session(“pass”)=1
Session(“user”)=name
Response.Redirect (“bmanage.asp”)
   ……
end if
  ……
end if
%>
建立使用者查詢介面(bmanage.asp)
//保證只有通過登入的人才能進入
<%
if session(“pass”)<>1 then
response.redirect (“login.asp”)
end if
%>
// 建立表單,給出幾個類別(分類號、借閱情況、題名、出版者、著編者),供自選查詢條件
<form name=“form_choice” action=“inq_modi.asp”>
<input type=“radio” name=“choice” value=“type”>分類號  
<input type=“radio” name=“choice” value=“borrow” checked>借閱情況  
<input type=“radio” name=“choice” value=“title”>題名  
<input type=“radio” name=“choice” value=“press”>出版者  
<input type=“radio” name=“choice” value=“author”>著編者  
<b>包含: </b>
<input type=“text” name=“include” value=“<%=include%>” maxlength=“30”>
<input type=“submit” name=“Submit” value=“ 搜尋 ”>
</form>
執行查詢操作(inq_modi.asp)
<!--#include file=“RsToModi.asp” -->
<%
//利用Request傳回的值到資料庫中查詢相應的記錄
choice=Request(“choice”)
include=Request(“include”)
sql = “Select * From 圖書目錄”
Select Case choice
case “borrow”
sql = sql & “Where 借閱情況 like ‘%” & include & “%’”
titlestr=“借閱情況”
……
End Select
titlestr = titlestr & “ 包含 ” & include & “圖書目錄”
sql = sql & “Order by 分類號”
%>
// 調用RsToModi.asp顯示查詢結果
<%  
Set conn = Server.CreateObject(“ADODB.Connection”)
conn.open “driver={Microsoft Access Driver (*.mdb)}; dbq=”& Server.MapPath(“Books.mdb”)
Set rs = conn.Execute(sql)
RsToModiTable rs  
%>
顯示查詢結果(RsToModi.asp)
<%
Sub RsToModiTable( rs )
’Part I 取得圖書序號和借閱情況欄位值
For i=0 to rs.Fields.Count-1
Response.WRITE “<TD>” & rs.Fields(i).Name & “</TD>”
if rs.Fields(i).Name = “序號” then
bookidfield= i
end if
if rs.Fields(i).Name = “借閱情況” then
linkfield= i
end if
Next
’Part Ⅱ 建立借閱情況連結,調用借閱情況修改頁面
While Not rs.EOF  
For i=0 to rs.Fields.Count-1
if i <> linkfield then
if i = bookidfield then
bookidvalue = rs.Fields(i).Value
end if
if trim(rs.Fields(i).Value) <> “” then
Response.WRITE “<TD>”& rs.Fields(i).Value & “</TD>”
else
Response.WRITE “<TD>” & “—” & “</TD>”
end if
else
linkstr = “<a href=” & ““”” & “bookmodi.asp?bookid=” & bookidvalue & ““””
linkstr = linkstr & “target=” & ““”” & “_blank” & ““”” & “>”
alignstr = “<p align=”& ““”” &“center” & ““”” & “>”
if trim(rs.Fields(i).Value) <> “” then
Response.WRITE “<TD>” & alignstr & linkstr & rs.Fields(i).Value & “</a>” & “</TD>”
else
Response.WRITE “<TD>” & alignstr & linkstr & “無” & “</a>” & “</TD>”
end if
end if
Next
rs.MoveNext
Wend
End Sub
%>
借閱情況修改頁面(BookModi.asp)
// 將Request傳遞來的序號所對應的記錄顯示在頁面上,對冊數、借閱情況、借閱日期欄位進行修改
<%  
BookID=Request(“BookID”)
DbPath = Server.MapPath(“Books.mdb”)
Set conn = Server.CreateObject(“ADODB.Connection”)
conn.open “driver={Microsoft Access Driver (*.mdb)}; dbq=” & DbPath
sql = “Select * From 圖書目錄”
sql = sql & “ Where 序號 =” & BookID
Set rs = conn.Execute(sql)
%>
// 建立表單,對冊數、借閱情況、借閱日期欄位進行修改
<form Action=“BookUpdate. asp?BookID=<%=BookID%>” method=“POST”>
<td height=“35” width=“17”>序號</td>
 ……
<td height=“80” width=“17”><%=rs(“序號”)%></td>
 ……
<Input Type=Text Name=“BNumber” Value=<%=rs(“冊數”)%> size=“3”>
<Input Type=Text Name=“BPerson”Value=<%=rs(“借閱情況”)%> ></td>
<Input Type=Text Name=“BDate” Value=<%=rs(“借閱日期”)%>>
<p><input type=“submit” value=“ 修改 ” name=“MODIFY”>
<input type=“button” value=“ 退出 ” name=“EXIT” onclick=“window.close()”>
</p>
</form>
儲存修改結果(BookUpdate.asp)
<!--#include file=“adovbs.inc” -->
<%
BookID=Request(“BookID”)
DbPath = SERVER.MapPath(“Books.mdb”)
Set conn = Server.CreateObject(“ADODB.Connection”)
conn.open “driver={Microsoft Access Driver (*.mdb)}; dbq=” & DbPath
B_number = Request(“BNumber”)
B_person = Request(“BPerson”)
B_date = Request(“BDate”)
if len(B_number) = 0 then
B_number = 1
end if
if len(B_person) = 0 then
B_person = “ ”
end if
if len(B_date) = 0 then
B_date = “ ”
end if
Set rs=SERVER.CreateObject(“ADODB.Recordset”)
rs.Open “圖書目錄”, conn , adOpenDynamic, adLockPessimistic
sql = “Update 圖書目錄”
sql = sql & “ Set 借閱情況 = ” & “‘” & B_person & “’”
sql = sql & “ , 借閱日期 = ” & “‘” & B_date & “’”
sql = sql & “ , 冊數 = ”& “‘” & B_number & “’”
sql = sql & “Where 序號 = ” & BookID
Set rs = conn.Execute(sql)
%>


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.