לוגו אתר Fresh          
 
 
  אפשרות תפריט  ראשי     אפשרות תפריט  צ'אט     אפשרות תפריט  מבזקים     אפשרות תפריט  צור קשר     חץ שמאלה ברוכים הבאים לפורום ASP חץ ימינה  

לך אחורה   לובי הפורומים > מחשבים > ASP
שמור לעצמך קישור לדף זה באתרי שמירת קישורים חברתיים
 
כלי אשכול חפש באשכול זה



  #3  
ישן 30-10-2004, 09:50
צלמית המשתמש של fat fish
  fat fish fat fish אינו מחובר  
 
חבר מתאריך: 20.06.03
הודעות: 5,616
בדרך כלל כדאי להסביר מה נותנים...
בתגובה להודעה מספר 2 שנכתבה על ידי LBY שמתחילה ב "אני משתמש בשיטה הזאת, כתבתי..."

וגם אז...למה בכל שורה יש <% %> ?
ניתן לפתוח בתחילת הבלוק ולסגור בסופו...
אני אסביר את הקוד שלך (ביצעתי שינויים מינוריים):
קוד:
<% dim dsn,cn,rs dsn="DBQ="&server.MapPath("filename")& _ ";driver={microsoft access driver (*.mdb)};" set cn=server.createobject("adodb.connection") cn.open dsn set rs=server.createobject("adodb.recordset") rs.open sqlStatment,cn,3,3 %>

בשורה הראשונה אנו מכריזים על שלושה משתנים/אוביקטים.
שורה 2 - משתנה dsn מקבל מחרוזת הנקראת "מחרוזת קישור" למסג נתונים (connection string) מחרוזת זו מגדירה את הפרמטרים של החיבור למסד נתונים מסוג microsoft access, ואת המיקום שלו. במקרה זה המיקום נקבע באמצעות האובייקט server שמחזיר את הערך mappath שהוא הנתיב הפיזי אל הקוסץ שמבצע את הקוד. בתוך הסוגריים אנו מוסיפים את הנתיב היחסי מהמיקום של mappath אל קובץ ה-mdb.
שורה 3 ושורה 5 - (שים לב שמפאת מיקום, שורה 2 מתפרסת על שתי שורות פיזית בעזרת הסימן המחבר _ )
בשורה 3 אנו יוצרים אובייקט שרת (המתודה server.createobject) מסוג adodb.connection - אובייקט זה הוא אובייקט מסוג קישור לנתונים של microsoft ואנו יוצרים את מופע הקישור שלו.
בשורה 5 אנו יוצרים מופע אחר של האובייקט מסוג recordset כלומר - אובייקט שיודע להחזיק נתונים טבלאיים.
שורה 4 - היא למעשה שימוש בפונקציה של האובייקט adodb.connection. השיטה open פותחת קישור למסד הנתונים, והיא מקבלת כפרמטר את מחרוזת הקישור שיצרנו בהתחלה (dsn). פונקציה זו מחזירה true אם תהליך הקישור נעשה תקין ו-false אם לאו.
שורה 6 - היא שימוש בפונקציה open של האובייקט מסוג recordset. שיטה זו מקבלת כפרמטר את אובייקט הקישור למסד הנתונים וכן שאילתת SQL ועוד מספר פרמטרים הקובעים את mode העבודה (סוגי קריאה, כמו "לקריאה בלבד" וכו...)

יש לשים שעדיין ניתן לשפר את הקוד הקיים ובכלל - כמו שאני ממליץ תמיד, לעבוד לשימוש ב-ADO.NET לצורך קישוריות למסדי נתונים.

בכל מקרה חשוב מאוד - ASP לא יודעת לנהל זיכרון בצורה אפקטיבית ולכן בסיום העבודה עם האובייקטים הנ"ל יש לסגור אותם ולרוקן אותם:

קוד:
<% rs.close cn.close set rs=nothing set cn=nothing %>


בהצלחה,
_____________________________________
[ זיו ]
[ fat fish ]

חזרה לפורום
  #16  
ישן 02-11-2004, 18:19
  AlexKarpman AlexKarpman אינו מחובר  
 
חבר מתאריך: 20.12.01
הודעות: 20,962
בבקשה:
בתגובה להודעה מספר 15 שנכתבה על ידי המגן שמתחילה ב "פשש האשכול התקדם :P"

קוד:
<% Dim oCon Dim oRS Dim sConStr Dim sDBPath Dim oSQLQuery 'We get the path of the MDB file(access database) through the Server.MapPath method which recieves a realtive path as an argument, and return ABSOLUTE path. sDBPath = Server.MapPath ("db.mdb") 'We create the ADO Connection String: 'Provider tells ADO what type of data source we use. In our case it's OLEDB's access mechanism to MS Access Databases(The Access database engine is called Jet. first introduced around VB3 or VB4) 'Data Source, if using THIS provider is the path to the Access database MDB file, which we concatenate to sConStr from sDBPath, which holds the path. 'If we were using MS SQl Server, for instance, Data Source would be the machine name. sConStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & sDBPath 'We create new instanced of ADO's Connection(which connects us to the database), and Recordset(which gets the actual data) classes. Set oCon = Server.CreateObject ("ADODB.Connection") Set oRS = Server.CreateObject ("ADODB.RecordSet") 'We put our SQL Query here, to use later. sSQLQuery = 'whatever you need 'We tell our connection, oCon, how to connect to the database by specifying the Connection String we prepared earlier, sConStr. oCon.ConnectionString = sConStr 'We "open" the connection. This is the moment in which we actually connect to the database. oCon.Open 'We specify to our Recordset, oRS, that the connection he should use is oCon. oRS.ActiveConnection = oCon 'We execute the SQL Query we prepared eariler, sSQLQuery. oRS.Open sSQLQuery 'From now on we can proccess the data in any way we want. %>
חזרה לפורום
  #20  
ישן 03-11-2004, 21:57
  AlexKarpman AlexKarpman אינו מחובר  
 
חבר מתאריך: 20.12.01
הודעות: 20,962
לא רק שזה לא יותר פשוט - זה גם חסר תועלת...
בתגובה להודעה מספר 19 שנכתבה על ידי LBY שמתחילה ב "אז למה לא כתבו פשוט ישר את..."

זה לא יותר פשוט, כי מבחיינת קריאות, יותר נוח במקום אחד יצירת משפט SQL, ובמקום אחר שימוש בו.
קח דוגמה:

קוד:
<% Dim oCon Dim oRS Dim sConStr Dim sDBPath Dim oSQLQuery sDBPath = Server.MapPath ("db.mdb") sConStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & sDBPath Set oCon = Server.CreateObject ("ADODB.Connection") Set oRS = Server.CreateObject ("ADODB.RecordSet") Select Case Reqeust.Query("action") Case "a" sSQLQuery = 'something Case "b" sSQLQuery = 'something else Case "c" sSQLQuery = 'something totally different Case Else 'Action to do with bad input or default action End If oCon.ConnectionString = sConStr oCon.Open oRS.ActiveConnection = oCon oRS.Open sSQLQuery %>


נדמה לי שברור שהקוד למעלה יותר נוח מאשר:
קוד:
<% Dim oCon Dim oRS Dim sConStr Dim sDBPath sDBPath = Server.MapPath ("db.mdb") sConStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & sDBPath Set oCon = Server.CreateObject ("ADODB.Connection") Set oRS = Server.CreateObject ("ADODB.RecordSet") oCon.ConnectionString = sConStr oCon.Open oRS.ActiveConnection = oCon Select Case Reqeust.Query("action") Case "a" oRS.Open 'something Case "b" oRS.Open 'something else Case "c" oRS.Open 'something totally different Case Else 'Action to do with bad input or default action End If %>


אתה לא חושב כך?
חזרה לפורום

כלי אשכול חפש באשכול זה
חפש באשכול זה:

חיפוש מתקדם
מצבי תצוגה דרג אשכול זה
דרג אשכול זה:

מזער את תיבת המידע אפשרויות משלוח הודעות
אתה לא יכול לפתוח אשכולות חדשים
אתה לא יכול להגיב לאשכולות
אתה לא יכול לצרף קבצים
אתה לא יכול לערוך את ההודעות שלך

קוד vB פעיל
קוד [IMG] פעיל
קוד HTML כבוי
מעבר לפורום



כל הזמנים המוצגים בדף זה הם לפי איזור זמן GMT +2. השעה כעת היא 08:02

הדף נוצר ב 0.08 שניות עם 11 שאילתות

הפורום מבוסס על vBulletin, גירסא 3.0.6
כל הזכויות לתוכנת הפורומים שמורות © 2024 - 2000 לחברת Jelsoft Enterprises.
כל הזכויות שמורות ל Fresh.co.il ©

צור קשר | תקנון האתר