I think application-error might solve my problem. Does it? My counter keeps starting from 0 every few weeks and I never have the total number of visitors. Does application-error solve this and how? thanks
אל תשתמש בכלל ב-Application, אם אתה שומר את הערך במסד נתונים... כל מה שאתה צריך לעשות זה להריץ שאילתת UPDATE פשוטה, ע"י אובייקט Command. כמו כן, אני מאוד ממליץ לך לשמור את הערך ב-Cache (עם timeout, כמובן), כדי לא לשלוף את הערך כל פעם מחדש מהדטאבייס ..
בוא נעשה לך סדר בראש... קודם כל, משתנה cache הוא כמו משתנה Application, אלא שהוא נמחק לאחר זמן מה, והוא גם תומך ב-dependencies, וכו'... (dependencies לא קשור עכשיו...) סדר הענינים הוא כדלהלן: 1. גולש נכנס לאתר, מתרחש Sesion_OnStart, ושם אנחנו מריצים את שאילתת ה-UPDATE שלנו. 2. לאחר מכן, גולש מבקש לצפות ב-counter. 3. אם משתנה ה-cache ריק, אז שולפים את הערך מה-DB, שומרים אותו ב-cache (עם timeout, וכו'), ואז מציגים אותו לגולש. אם הוא לא ריק, לוקחים את הערך מה-cache, ולא מה-DB. לגבי שמירת/טעינת ערכים מ/ל-cache, אתה יכול לקרוא פה: http://aspnet.4guysfromrolla.com/articles/100902-1.aspx
Sub Session_Start(ByVal sender As Object, ByVal e As EventArgs) ' Fires when the session is started Dim strConn As String = _ "Provider=Microsoft.Jet.OLEDB.4.0;data source=" & server.mappath("...\data\vocabularyasp.mdb") Dim conn As OleDbconnection=New OleDbconnection(strConn) Dim cmd As New OleDbCommand(sql, conn) Dim sql As String = "UPDATE CounterTable SET Counter = Counter + 1" Application.Lock() conn.Open() cmd.ExecuteNonQuery() conn.Close() Application.UnLock() End Sub
זה מעדכן את ה- COUNTER. אבל עדיין אני צריך DATAREADER לשליפת הערך החדש! לא?