מדריך ASP – עבודה מול DB – חלק א'
כדי לעבוד מול מידע השמור בבסיס נתונים, יש צורך בשלושה שלבים:
1. יצירת אובייקט החיבור (connection)
2. פתיחת החיבור לבסיס הנתונים
3. תימרון המידע בבסיס הנתונים (שליפה, הזנה, שינוי וכו')
האובייקט connection
כל קובץ ASP בו אנו רוצים לפנות לבסיס הנתונים, זקוק לאובייקט connection.
<% Set conn = Server.CreateObject("ADODB.Connection") %>
<% var conn = Server.CreateObject("ADODB.Connection") %>
conn מחזיק כרגע מופע של אובייקט connection, אך עדיין אינו מקושר לבסיס נתונים מסויים.
פתיחת החיבור לבסיס הנתונים:
הפתיחה נעשית ע"י המטודה Open של אובייקט ה-Connection.
<%conn.Open ConnectionString%>
<%conn.Open (ConnectionString)%>
ConnectionString יכול להיות שם של DSN המוגדר במחשב, או מחרוזת חיבור המכילה את שם בסיס הנתונים,
סוגו מיקומו (PATH), וסיסמת הגישה אליו ,אם ישנה. חיבור זה נקרא DSN-Less.
שימוש ב- System DSN
המוגדר מקומית על השרת הוא הרבה יותר בטוח.
כאשר משתמשים בחיבור DSN-Less תמיד ישנו
הסיכוי שמישהויפתח את קוד ה-ASP (כתוצאה מתקלה או באמצעות פריצה לשרת), וכך הוא יוכל לדעת
את כל הפרטים הנחוצים כדי "להזיק" לבסיס הנתונים, אם בסיס הנתונים הוא access, הוא יכול אפילו תוך
שימוש בפרטים על מיקומו להוריד את בסיס הנתונים למחשבו האישי.
מצד שני – שימוש ב-DSN-Less
הוא הרבה פעמים יותר נוח לתחזוקה, מהסיבה הפשוטה שאין צורך לשנות את הקוד, או להוסיף DSN בשרת
במעבר בין שרתים, או כאשר מיקומו של בסיס הנתונים משתנה.
הגדרת DSN
1. control panel-> administative tools -> Data Sources (ODBC) -> System DSN
(ב- win 98, האפשרות Data Sources נמצאת ישירות ב-control panel)
2. יש ללחוץ על ADD, לבחור את סוג בסיס הנתונים (אם זה אקסס, אז את האפשרות השניה)
3. ללחוץ על Finish
4. תופיע תיבה המבקשת שם לDSN (נגדיר לו את השם myDSN) ב-description יש לכתוב תיאור קצר ל-DSN (לא הכרחי).
5. בחלק ה- database ללחוץ על select ולבחור את הבסיס הנותנים הרצוי (יש לוודא שהוא סגור לפני שמתחילים בתהליך)
6. ללחוץ OK.
עכשיו יש לנו DSN בשם myDSN המקשר אותנו לבסיס הנתונים.
כדי לפתוח את אובייקט החיבור באמצעות ה-DSN, נכתוב:
<%conn.Open "myDSN"%>
<%conn.Open ("myDSN")%>
פתיחת האובייקט בצורת DSN-Less:
<%conn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source =" & Server.MapPath("\db\MyDB.mdb")%>
<%conn.Open ("Provider=Microsoft.Jet.OLEDB.4.0; Data Source =" + Server.MapPath("\db\MyDB.mdb"))%>
יש לזכור לסגור את החיבור לבסיס הנתונים בסיום הפעולות באמצעות השיטה Close. ולבטל את המופע של האובייקט connection בתוך המשתנה conn.
<% conn.Close Set conn=nothing %>
<% conn.Close conn = null; delete conn; %>
שימוש בשיטה Execute של האובייקט Connection:
השיטה Execute משמשת להרצת פקודה כלשהי על בסיס הנתונים.
<%conn.Execute "UPDATE tblName SET fld1=fld1*10"%>
<%conn.Execute ("UPDATE tblName SET fld1=fld1*10")%>
בדוגמא הבאה נבצע הרשמה פשוטה לאתר.
בקובץ subscribeForm.htm יש לנו טופס הרשמה המבקש שם משתמש וסיסמא. כאשר המשתמש ממלא אותו ושולח את הטופס, אנו עוברים לקובץ Subscribe.asp, אשר מכניס את הנתונים לטבלה SiteUsers בבסיס הנתונים.
הטבלה נראית כך:
הקובץ SubscribeForm.htm:
<html> <head> <title> subscribeform.htm </title> <script language="javascript"> function inputvalidation(form) { if(form.login.value=="" || form.password.value=="") { alert("you must enter a login & password"); return false; } return true; } </script> </head> <body> <form method=post action="subscribe.asp" onsubmit="return(inputvalidation(this))"> login: <input type="text" name="login"><br> password: <input type="text" name="password"><br> <input type="submit"> </form> </body> </html>
הקובץ Subscribe.asp:
<% Dim conn, SQLstr Set conn = Server.CreateObject("ADODB.Connection") conn.Open "myDSN" SQLstr="INSERT INTO SiteUsers (Login,Password) VALUES ('" SQLstr = SQLstr & Request("Login") & "','" SQLstr = SQLstr & Request("Password") & "')" conn.Execute SQLstr conn.Close Set conn = Nothing %>
<% var conn= Server.CreateObject("ADODB.Connection"), SQLstr conn.Open ("myDSN") SQLstr="INSERT INTO SiteUsers (Login,Password) VALUES ('" SQLstr+= Request("Login") + "','" SQLstr+= Request("Password") + "')" conn.Execute (SQLstr) conn.Close delete conn; conn = null; %>
ראשית כל אנו פותחים את החיבור לבסיס הנתונים, באמצעות ה-DSN שהגדרנו, לאחר מכן אנו מפעילים את מטודת Execute של אובייקט החיבור, על שאילתת INSERT.
(יש לשים לב, שכאשר השדות הם מסוג טקסט, אנו עוטפים את הערכים בשני גרשים [']).
ובסופו של דבר, אנו סוגרים את החיבור.
תגובות בפייסבוק