細心的開發人員有時會想到,我們在一個需要讀寫資料庫的頁面裡包含類似
<!-- #include file="conn.asp" -->
的程式碼時,實際上,當你沒有進行任何讀寫資料庫操作時,這個資料庫連線仍然是開啟的,仍然在消耗伺服器的資源。
那麼,我們有沒有辦法讓資料庫連接僅在需要讀取資料庫時才打開,不讀取時就沒有任何動作呢,以下即提供這種思路,以求拋磚引玉。
這種想法即是將資料庫連接程式碼封裝在函數裡,在需要讀取時呼叫這個函數。
以下是SQL連線程式碼:
Function Open_conn()
dim Conn,Strconn
set Conn=server.createobject("adodb.connection")
Strconn = "Provider = Sqloledb; User ID = 資料庫登入帳號; Password = 資料庫登入密碼; Initial Catalog = 資料庫名稱; Data Source = (local);"
Conn.open Strconn
set Open_conn=Conn
If Err Then
err.Clear
Conn.close:set Conn=nothing
Response.Write "對不起,資料庫連線出錯。"
Response.End
End If
End Function
呼叫方法:
將原來的
rs.open sql,conn
改成
rs.open sql,Open_conn()
以下是ACCESS連線碼:
Function Open_conn()
dim Dbpath,Conn
Dbpath=server.MapPath("資料庫路徑")
set Conn=server.createObject("ADODB.connection")
Conn.open "data source="&dbpath&";provider=microsoft.Jet.OLEDB.4.0;"
set Open_conn=Conn
If Err Then
err.Clear
Conn.close:set Conn=nothing
Response.Write "對不起,資料庫連線出錯。"
Response.End
End If
End Function
呼叫方法:
將原來的
rs.open sql,conn
改成
rs.open sql,Open_conn()
順便提供一個同一伺服器上可以跨站共享ACCESS資料庫的老代碼,也許有朋友用得著:
有時,我們有很多二級域名,可能需要讓這些二級域名調用某同一個ACCESS資料庫,在你不願意使用SQL資料庫的情況下,資料庫連線可以採用以下辦法。 (特別提示:如果你的伺服器做了FSO安全權限,需要將這個資料庫目錄設定為,允許你需要呼叫的各站的IIS使用者有權存取修改。)
以下的資料庫實體路徑類似E:目錄目錄資料庫名稱
dim Conn,Strconn
Set Conn = Server.CreateObject("ADODB.Connection")
Strconn="Provider = Microsoft.Jet.OLEDB.4.0; "
Strconn=Strconn & "Data Source=資料庫實體路徑"
Conn.Open Strconn
If Err Then
err.Clear
Conn.close:set Conn=nothing
Response.Write "對不起,資料庫連線出錯。"
Response.End
End If