用VB產生DLL封裝ASP代碼,串連資料庫

來源:互聯網
上載者:User
封裝|串連資料庫 這篇文章以VB產生的DLL封裝ASP代碼來串連資料庫(以Access資料庫為例)。

一般情況下我們在用ASP串連Access的資料庫時通常都會進行如下的操作

'//Proconn.asp
<%
dim ProConn
set ProConn=Server.CreateObject("ADODB.CONNECTION")
ProConn.Open "driver={Microsoft Access Driver (*.mdb)};uid=;pwd=123;DBQ=" & Server.MapPath("DB.asp")
'一個原本為DB.mdb的Access資料庫更改尾碼為DB.asp的檔案,資料庫密碼123

if err.Number <> 0 then
ResPonse.Write "資料庫沒有連結,請檢查"
ResPonse.End
else
ResPonse.Write "資料庫連結成功"
ResPonse.End
end if
%>

如果配置好伺服器,訪問Proconn.asp,如果串連資料庫成功會輸出“資料庫連結成功”。

但是這樣的asp代碼的安全層級非常低,如果此asp原代被人看到,那麼再有此資料庫檔案的話,其他人就能輕而易舉
隨便開啟你的資料庫進行操作。

所以我們的任務來了,如何將這些關鍵的內容封裝起來呢?

首先需要確定方式方法和對象。

查看了網上的一些資料,主要都是用VB產生DLL的辦法來封裝的,那麼我們也採取這樣的方法好了,(雖然我還沒用真正用過VB這東東)

方式方法確定,那麼什麼是我們需要封裝的對象呢?

大家來看
"driver={Microsoft Access Driver (*.mdb)};uid=;pwd=123;DBQ=" & Server.MapPath("DB.asp")
是最關鍵的代碼,這段代碼封裝在一個用VB產生的DLL中,應該比較好。
之所以不將整個
dim ProConn
set ProConn=Server.CreateObject("ADODB.CONNECTION")
ProConn.Open "driver={Microsoft Access Driver (*.mdb)};uid=;pwd=123;DBQ=" & Server.MapPath("DB.asp")
都封裝,(因為網上有講將整個串連代碼都封裝)是因為,在其他asp檔案引用Proconn.asp時,
我還需要裡面的ProConn進行其他動作,如果封裝,不便進行引用和操作。
(以上封裝對象的解釋原因是我個人的見解,有朋友說整體封裝對ProConn的使用沒有影響,這個我不理解,請知道的給我講講)


所在只想封裝最關鍵的部分“"driver={Microsoft Access Driver (*.mdb)};uid=;pwd=123;DBQ=" & Server.MapPath("DB.asp")”

分析一下這段要封裝的內容,
它的前半部分就是一個字串:
"driver={Microsoft Access Driver (*.mdb)};uid=;pwd=123;DBQ="
用&串連上後半部分的另一個字串。
後半部分的另一個字串是Server.MapPath對象函數的傳回值。



下面開始這個封裝的操作過程。
首先
建立一個VB下的ActiveX DLL工程,工程的名稱Project1更改成ConDBDLL?? 方法class1的名稱更改成cs
工程名和方法名會在調用這個DLL的時候使用到,大家可以按照自己命名規則定義,但請注意好好使用。
這個DLL的代碼部分書寫如下:

Dim rp As Response
Dim rq As Request
Dim ap As Application
Dim sr As Server
Dim sn As Session

Public Sub OnStartPage(MyScriptingContext As ScriptingContext)
Set rp = MyScriptingContext.Response
Set rq = MyScriptingContext.Request
Set sr = MyScriptingContext.Server
Set ap = MyScriptingContext.Application
Set sn = MyScriptingContext.Session
End Sub

Public Sub OnEndPage()
Set rp = Nothing
Set rq = Nothing
Set sr = Nothing
Set ap = Nothing
Set sn = Nothing
End Sub
'以上語句是必須的,將原本的對象作了簡化處理,並在兩個基本函數中作了處理

Public Function ConnectDB() As Variant

ConnectDB = "driver={Microsoft Access Driver (*.mdb)};uid=;pwd=123;DBQ="

End Function
'上面這個函數是處理前半部分字串的,直接返回這個字串的內容

'另外定義下面這個函數來處理後半部分內容
Public Function DBPath() As Variant
DBPath = sr.MapPath("DB.asp")
End Function
'注意上面使用的是sr,不要使用成Server了

到了關鍵的一步,給這個工程添加"Microsoft Active Server Pages ObjectContext Object Library" 的 Reference
添加方法,選擇菜單中的"Project"->"Reference",在開啟的對話方塊裡選擇。
對了,還要選擇上"microsoft activeX data objects 2.6 library"

進行完以上操作,我們就可以編譯產生DLL了,(別忘了前面的改工程名和方法名)

準備好資料庫檔案DB.asp (由DB.mdb更改尾碼而成,密碼123)

下面就是調用封裝的串連資料庫的asp檔案代碼:
'//ProConn.asp
<%
dim ProConn
set ProConn=Server.CreateObject("ADODB.CONNECTION")
Dim ConDB
set ConDB=Server.CreateObject("ConDBDLL.Conn")
'ConDB就是建立的DLL對象

Dim StrConn
'定義一個字串
StrConn = ConDB.ConnectDB() & ConDB.DBPath()
'串連兩部分內容組成字串
ProConn.Open StrConn
'執行資料庫物件操作
%>


由於是自己建立的DLL,把它拷貝到相應的目錄後,必須註冊才能使用。
註冊的方法,在“運行”中執行:
Regsvr32.exe lyfUpload.dll

取消這個DLL的註冊的方法是:Regsvr32.exe /u lyfUpload.dll

註冊完畢,我們的工作基本上就做完了,現在我們可以使用這樣的封裝方法串連具有針對性的資料庫了。

不過有一點需要特別注意的是:
由於
Dim ConDB
set ConDB=Server.CreateObject("ConDBDLL.Conn")
'ConDB就是建立的DLL對象
這是在ASP中建立的對象,包括ProConn,那麼我們在任何使用到(引用)ProConn.asp的其他ASP檔案中記得釋放這兩個對象!
ProConn.close
set ProConn=nothing
set ConDB=Nothing
否則系統會由於對象沒有釋放,而變得越來越不堪重負。

關於這個封裝ASP代碼串連Access資料庫的方法,我想完全適用其他資料庫的串連方法。

我想我的這個方法並不是最好的,有任何不足之處,請看過的人給我指正,在此先行謝過。




相關文章

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 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。