利用Application和Session最佳化Asp的資料庫聯結

來源:互聯網
上載者:User
application|session|資料|資料庫|最佳化 ....對於Asp開發中對資料庫的串連管理,目前一般的處理方法都是調用一個conn.asp頁面,在裡面定義好相關的變數,然後根據不同的資料庫類型,建立好對應的Connection;以後其他需要資料庫聯結的地方就調用該頁面,然後進行相應處理!

    我在最近的研究中發現,其實這種方法並不是最佳化的,對於稍大型一下的系統論壇來說,在每個頁面調用時候如果超過連線時間,就需要重建立立一遍對於資料庫的串連;我的初步想法是:在conn.asp頁面裡面,將一個開啟的Connection賦給Application儲存,然後,對於每個新串連使用者,再將該Application的串連賦給Session;這樣就可以保證每一個使用者的只建立一個Connection,對於速度提升和資料庫負載會有一定的協助尤其是使用者多的時候。(最近因為要做一個資訊平台,才接觸Asp開發,難免說錯,請見諒!)

    附上我的conn.asp代碼:

<%
 xzcInforCookies = "xzcInfor"

  on error resume next

 If g_dataBaseSort = "A" Then
  g_connStr = "DBQ="& server.MapPath (""&g_dataPath&"\"&g_DBMasterName&"") &";DRIVER={Microsoft Access Driver (*.mdb)};"
   SqlNowString = "Now()"
   SqlChar      = "'"
  connstr="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath(""&g_dataPath&"\"&g_DBMasterName&"")
 Else
  SqlLocalName   ="192.1.*.*"    '串連IP
  SqlUsername    ="****"           '使用者名稱
  SqlPassword    ="****"         '使用者密碼
  SqlDatabaseName="***"       '資料庫名

  g_connStr = "Provider=Sqloledb; User ID=" & SqlUsername & "; Password=" & SqlPassword & "; Initial Catalog = " & SqlDatabaseName & "; Data Source=" & SqlLocalName & ";"
  SqlNowString = "GetDate()"
  SqlChar      = ""
  ver          = "4.10 SQL"
 End If

'========================================================
'-- use Application 's connection for better performance
'--------------------------------------------------------
if isObject(Application(xzcInforCookies & "conn")) = False then

 set g_conn = server.CreateObject("adodb.connection")
  g_conn.CommandTimeout = 60  '以秒為單位
  g_conn.Open g_connStr

 if g_conn.Errors.count>0 then  '錯誤處理(包括串連錯誤和oracle資料庫錯誤)
  for i=0 to g_conn.Errors.count-1
   tempErr=replace(replace(replace(g_conn.Errors(i).Description,vbcrlf,""),vbcr,""),vblf,"")
   Response.Write "<script language='vbscript'>"  + vbcrlf
   Response.write "MsgBox ""發生資料庫連接錯誤,請於管理員聯絡。錯誤提示如下:""&vbcrlf&vbcrlf&"""&tempErr&""",vbOKonly,""錯誤提示資訊"""  + vbcrlf
   Response.Write "</script>"
  next
  Response.End
 end if

 Application.Lock
  set Application(xzcInforCookies & "conn") = g_conn
 Application.UnLock

end if

 '=========================================
 '-- every user use own session connection
 '-----------------------------------------
 if session(session.sessionid & "conn") = "" then
  set session(session.sessionid & "conn") = Application(xzcInforCookies & "conn")
 end if

 set g_conn = session(session.sessionid & "conn")
%>




相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.