人民銀行網站建設中資料庫預存程序的調用

來源:互聯網
上載者:User
預存程序|資料|資料庫|網站建設 一、引言
隨著人民銀行中心支行電腦網路建設的逐步發展和內連網二期工程的落實到位,多數中心支行已建立了內部網路(Intranet),提供檔案傳輸、電子郵件、及簡單WEB等相關網路服務。
對於人民銀行中心支行而言,網站的建設需要報表、台帳等各種數字資訊,報告、分析等各種文字資訊,公文處理、會議通知等各種辦公自動化資訊,聲音、圖象、視頻會議等各種多媒體資訊。而如何充分利用現有資訊資源和電腦網路技術,建設人民銀行內部的資訊網站,為金融監管和政策給予及時、準確、多樣的資訊服務,很大程度上離不開資料庫的支援。同時,人民銀行網站的建設是一項系統工程和標誌性工程,它代表一個行的形象,體現科技興行的精神。建設和維護網站涉及的部門眾多,需要協調的關係很多,技術複雜程度高,這就迫切需要利用資料庫技術建設一個動態、互動的、高效的網站來滿足資訊化時代的要求。
資料庫預存程序(Stored-Procedure)是諸如SYBASE、ORACLE、INFORMIX、MICROSOFT SQLSERVER等大型資料庫一種成熟的技術,是由一些或多個SQL語句和控制語句組成的被封裝起來的過程,它駐留在資料庫中,可以被客戶應用程式調用,也可以從另一個過程或觸發器調用。通過使用變數和條件,它的參數可以被傳遞和返回。在B/S(瀏覽器/伺服器)模式中,網站的用戶端在執行複雜的任務,處理大而複雜的SQL語句時,預存程序提供了諸多方便之處和優點,能夠滿足網站建設的需要。
二、採用預存程序的優點  
1、運行速度加快
在網站資料庫伺服器中,一般互動SQL命令,每次執行前資料庫伺服器都要為其建立先行編譯的過程,而預存程序在第一次執行之後,經過了最佳化和編譯好的過程,儲存在快取之中,在接下來的運行中可以直接從快取中執行,省去了以後執行的最佳化和編譯階段,節省了執行過程的大量時間,使用預存程序從而加快了執行速度。
2、網路負荷減少
當用戶端發出執行預存程序的請求時,只有執行預存程序的命令在內部網路上傳送,當它們到達資料庫伺服器時,運行預存程序,用戶端在網上只接收返回結果或狀態資訊,所以使得客戶機與伺服器的通訊量降至最小,大大減少了網路負荷。縮短了使用者要求的相應時間,避免了使用者枯燥的等待。  
3、團隊開發方便
網站程式編製過程中,PHP、ASP等調用預存程序能夠減少在程式開發中構造複雜SQL語句的難度,由於預存程序的可重用、可共用性,使得預存程序可被多處重複使用,也可以被多個使用者共用,在開發中反覆使用,給網站的團隊開發帶來了極大的方便,而且使網站更易於維護和更新。
4、安全機制放心
預存程序本身有很強的安全機制,只有具有相應的系統許可權才能夠調用相應的預存程序,或者只訪問預存程序而不能夠訪問其中涉及的表或視圖,只通過預存程序中所給出的功能來間接操作資料庫。在預存程序的代碼中可以包含對資訊和資料的合法性檢查、對商務規則要求的各種完整性檢查等,這無疑給那些安全性較差的網站平台帶來了福音。
5、服務使用者滿意
預存程序可以充分利用資料視點集中的原則,使使用者把注意力集中在所關心的資料上、簡化使用者的資料查詢操作、使不同的使用者能夠多角度“看待”同一資料,能夠用預存程序建立非常複雜的查詢,以非常複雜的方式更新(update、delete、select、insert)資料庫。同時預存程序能夠自動對複雜或敏感的交易處理,對某些表進行各種處理,可以保證這些表的資料完整性。這樣做,滿意了使用者。
三、調用預存程序的方法
下面以某中心支行金融資訊港使用者資訊發布登入模組為例,結合實際開發工作中的一些經驗說明如何調用預存程序
1、網站平台伺服器端為WinNT4.0、SERVERPACK5、IIS5.0,ASP應用程式,MS SQL SERVER7.0為後台資料庫
2、相關表Department中儲存了單位號(Dep_id)單位名稱(Dep_name)和密碼(Dep_passwd)。
3、實現功能使用者從下拉式功能表中選擇使用者名稱稱,輸入密碼,登入。如果有單位使用者擁有指定的密碼,輸出參數將返回“pass",否則,返回“Invalid"。  
4、執行個體說明
(1)預存程序sp_CheckPwd,檢查使用者是否輸入了合法的密碼,建立預存程序,可以從Microsoft SQL Sever程式組中啟動ISQL/w。然後,在查詢時段中輸入預存程序。
(2)使用者登入介面login.asp,使用通常的SQL語句和使用預存程序進行對比。
(3)檢驗密碼是否正確Checklogin.asp,在其中,使用定義的預存程序。
(4)資料庫連接檔案conn.asp
5、執行個體
(1)/*預存程序執行個體*/
CREATE PROCEDURE sp_CheckPwd
@CHKDepid VARCHAR(30),@CHKPass VARCHAR(30),
@ISValid CHAR(8) OUTPUT  
AS
IF EXISTS(SELECT Dep_id FROM Department
WHERE Dep_id=@CHKDepid AND Dep_passwd=@CHKPass)
SELECT @ISVaid="pass"
ELSE
SELECT @ISValid="Invalid"
/*預存程序接收兩個輸入參數。輸入參數@CHKDepid向預存程序傳遞一個單位ID號。@CHKPass向預存程序傳遞一個單位使用者密碼。如果表中存在這個單位ID號和密碼組合,則輸出參數將返回“pass",否則,返回“Invalid" */  
(2)//login.asp
// 使用者登入介面
<!--#include file="conn.asp"-->
'包含資料庫連接定義的檔案
<html>
<head><title>單位使用者登入</title></head>
<body>
<%
dim rs,dept_sql
set rs=server.createobject("adodb.recordset")
'建立記錄集
dept_sql="select dep_id,dep_name from Department "
'使用標準SQL語句,將所有的單位ID號和單位使用者的名稱取回到用戶端
rs.open dept_sql,conn,1,1
%>  
<form method="post" action="chklogin.asp" name="frmNewDepartment">
單位使用者名稱:  
<select name=" DepartmentId " size="1">
<%
do while not rs.eof
response.write"<option value='"+cstr(rs("dep_id"))+"'>"+rs("dep_name")+"</option>"+chr(13)+chr(10)
rs.movenext
loop
%>  
'建立列表對象,顯示單位名稱,返回單位ID值
</select>
密 碼:  
<input type="password" name=" DepartmentUserPwd ">
<input type="submit" name="Submit1" value="確定">
<input type="reset" name="Submit2" value="重寫">
</form>
</body>
</html>
(3)//Checklogin.asp
//檢驗登入的單位使用者的合法性,傳回值。同時調用預存程序sp_CheckPwd  
  
<!--#include file="conn.asp"-->
'包含資料庫連接定義的檔案
< %
Set cmdTemp=Sever.CreateObject("ADODB.Command")
'建立命令對象
Set cmdTemp.ActiveConnection=Conn
'把命令和開啟的串連聯絡起來
cmdTemp.CommandType=adCMdStoredProc  
'指定要執行的是一個預存程序
cmdTemp.CommandText="sp_CheckPwd"  
'引用預存程序指定名稱
Set tmpFirstParam =cmdTemp.CreateParameter
("DepartmentUserPwd",adVarChar,adParamInput,30)
'建立輸入參數對象,命令對象的CreateParameter()方法建立輸入參數,同理可以建立輸入參數對象DepartmentId,對象的方法帶有四個參數,需要注意區別
Set tmpThirdParam=cmdTemp.CreateParameter
("RetValue",adChar,adParamOutput,8)  
'建立返回參數對象
cmdTemp.Parameters.Append.tmpFirstParam  
'把第一個參數追加到參數集合中,同理依次追加其他參數到集合中
cmdTemp("DepartmentId ")=Request.FORM("DepartmentId ")
'取得輸入參數,從請求的login.asp的 FORM中獲得  
cmdTemp("DepartmentUserPwd ")=Request.FORM("DepartmentUserPwd ")
cmdTemp.Execute
'調用Execute方法執行預存程序
% >
The Check Result is < %=cmdTemp("RetValue")% >  
'輸出傳回值,這是最為簡單的應用,在實際中可以根據需求,進行相應開發
< %
DataConn.Close  
'關閉資料庫連接
% >
(4)//conn.asp
//資料庫連接定義檔案
<%
dim conn  
dim connstr  
set conn=server.createobject("ADODB.CONNECTION")
'建立連線物件
connstr="driver={SQL Server};server=xx.xxx.xx.xx;uid=fzxxg_u



相關文章

E-Commerce Solutions

Leverage the same tools powering the Alibaba Ecosystem

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

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

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