用VB編寫組件—封裝數據庫的連接字符串
2024-07-21 02:15:42
供稿:網友
 
如今,開發web應用程序絕大多數都是使用browser/server模式,而在b/s 應用程序開發領域中,微軟公司的iis/asp組合以其強大的功能、良好的擴展能力及與其它微軟產品良好的兼容性,迅速地流行起來。asp以其簡單易學、功能強大而博得廣大程序員的喜愛,國內的大部分網站都是利用asp架構的。當我們使用ado訪問數據庫時,有時是把連接字符串顯式的寫在.asp文件中,這樣做顯然不太安全,很容易被別有用心的人獲取密碼、數據庫名等信息。為了數據的安全,我們可以自己編寫組件來封裝訪問數據庫的字符串,然后再在global.asa文件或.asp也面上調用即可。
一、下面我們就來一步一步的創建組件:
啟動vb6.0新建-->activex dll工程。單擊"工程"-->引用,選擇"microsoft active server pages object library"和"microsoft activex data objects 2.1 library"兩項。將類模塊的名稱改為wenconnection.將工程的名稱改為wenadodb.保存工程文件wenadodb.vbp和類文件wenconnection.cls。具體做法:1)選擇“工程”—>“引用”進入引用用戶選擇界面如圖1所示,在“可用的引用”復選框選擇"microsoft active server pages object library"和"microsoft activex data objects 2.1 library"兩項。
 圖1
2)選擇“工程”—>“工程屬性”進入工程屬性設置界面,選“通用”頁,在“工程類型”的下拉框中選擇“activex dll”,在工程名輸入框中輸入工程名為“wenadodb”,如圖2所示。
 圖2
3)再選擇“編譯”頁,選中“代碼大小優化”一項,如圖3所示。
 圖3
至此,我們對新建的工程的屬性、引用等基本設置完成。
二、接下來我們就在類wenconnection.cls中寫入代碼:
1)首先要申明變量:
private wenscriptingcontext as scriptingcontext
private wenapplication as application
private wenrequest as request
private wenresponse as response
private wenserver as server
private wensession as session
2)為了在wenconnection類中使用asp的內建對象,必須在此類中寫一個onstartpage子函數。那是因為無論什么時候用戶訪問一個帶有本組件的asp文件,iis就會把scriptingcontext傳送給我們的對象請我們使用。這個scriptingcontext包括了全部的asp方法和屬性,這使得我們有能力訪問所有asp的對象。
public sub onstartpage (passedscriptingcontext as scriptingcontext)
set wenscriptingcontext = passedscriptingcontext
set wenapplication = wenscriptingcontext.application
set wenrequest = wenscriptingcontext.request
set wenresponse = wenscriptingcontext.response
set wenserver = wenscriptingcontext.server
set wensession = wenscriptingcontext.session
end sub
我們既然用onstartpage函數來創建對象,那么我們這里就用onendpage子函數來釋放對象:
public sub onendpage()
set wenscriptingcontext = nothing
set wenapplication = nothing
set wenrequest = nothing
set wenresponse = nothing
set wenserver = nothing
set wensession = nothing
end sub
接下來定義兩個函數rsresult()和datasource():
public function rs(strsql as string) as recordset
dim oconn as connection
dim ors as recordset
dim strconnstring as string
strconnstring = "driver={sql server};server=servername;uid=sa;pwd=;" & _
 "database=databasename"
oconn.open strconnstring
ors.activeconnection = oconn
strsql="select * from tablename"
ors.open strsql, oconn, 1, 3
set rs = ors
end function
 
public function datasourceconnection() as variant
datasourceconnection = "driver={sql server};server=servername;uid=sa;pwd=;database=databasename"
end function
三、 存工程名為wenadodb.vbp和保存類名為wenconnection.cls,然后點擊“文件”—>“生成wenadodb.dll”編譯成動態連接庫文件。vb在編譯好動態連接庫文件的同時也將該組件注冊到注冊表里了,要是想在另外一臺機器上注冊該組件的話,請用以下指令注冊或反注冊:
regsvr32 x:/路徑/wenadodb.dll x:/路徑/為wenadodb.dll文件存放的盤符和路徑
regsvr32 /u x:/路徑/wenadodb.dll 參數u為反注冊
四、 在asp文件中調用wenadodb.dll組件的例子。
<%
set conn=server.createobject("wenadodb.wenconnection") ‘調用組件創建對象實例
 objconn=conn.datasourceconnection()
 application("strconn")=objconn
 
set rs=server.createobject("adodb.recordset")
 sql="select * from tablename order by id desc"
 rs.open sql,application("strconn"),1,3
%>
<table align="center" border="1">
 <% 
if rs.bof and rs.eof then
 response.write "暫時還沒有任何數據。"
else
do while not rs.eof 
%>
 <tr width=100%>
 <td width=50%><%=rs("field1")%></td><td width=50%><%=rs("field2")%></td>
 </tr>
<%
rs.movenext
loop
end if
rs.close;set rs=nothing
%>
</table>
五、 小結
我們這里只是編 |||寫了一個連接數據庫的簡單的動態連接庫文件,利用vb的強大組件編寫功能還可以寫出功能更加強大跟齊全的組件,來完成更加實用的任務。