צעדים ראשונים בעבודה עם מסדי נתונים בעזרת ASP.NET
הגישה למסדי נתונים השתנתנה רבות מ-ASP קלאסית. יש לנו את ADO.NET, שהיא משפחה חדשה של אובייקטים המאפשרים עבודה עם מסדי נתונים. אובייקטים אלו אינם אובייקטים COM (חסל סדר CreateObject), אלא אובייקטים המובנים בתוך הפריימוורק.
במאמר הבא, ההסברים והדוגמאות מתייחסים לאקסס.
הדוגמאות ייכתבו ב-#C.
לפני תחילת העבודה, עלינו לייבא את ה-Namespace-ים שעוסקים בגישה למסדי נתונים. לשם כך עלינו לרשום את זה בראש הדף:
1 2 |
|
שתי השורות האלו בעצם אומרות – אני עומד לבצע גישה למסדי נתונים, תוך שימוש באובייקטים של ADO.NET.
כדי להתחבר למסד הנתונים, אנחנו משתמשים (ופה הדימיון ל-ADO) באובייקט חיבור, הלא הוא ה-Connection.
כמו ב-ADO הקלאסי, אנחנו משתמשים במחרוזת חיבור (Connection String) כדי לציין לאיזה מסד נתונים אנחנו רוצים להתחבר.
נשים את הקוד הבא ב-Page_Load (נניח ש-myDB.mdb הוא מסד הנתונים שברצוננו לגשת אליו):
1 2 3 4 5 6 7 8 |
|
בתחילה הגדרנו מחרוזת חיבור קבועה (const). מחרוזת החיבור בADO.NET זהה לחלוטין לזו של ADO.
כמו שניתן לראות, הקונסטרקטור של אובייקט ה-OleDbConnection מקבל את מחרזות החיבור בתור פרמטר. ניתן להגדיר אותה מחוץ לקונסטרקטור עי המאפיין ConnectionString.
לאחר מכן, פתחנו את ה-Connection עי השיטה Open.
עכשיו מגיע הקטע ששונה מ-ASP קלאסית. מה שעכשיו היינו עושים בASP קלאסית זה לפתוח Recordset. בASP.NET, אפשר לומר, בגדול, שה-Recordset התפצל לשני אובייקטים – DataReader ו-Command. (על DataSet ו-DataAdapter אסביר במאמר אחר)
אובייקט הCommand הוא אובייקט שאחראי על כל האספקטים של ה-Recordset שנוגעים לשאילתות SQL (כולל העברת פרמטרים, וכו´), ואילו ה-DataReader הוא בעצם כמו רקורדסט לקריאה קדימה בלבד.
להלן דוגמאת קוד:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
|
כפי שניתן לראות מהדוגמה, התבצעו השלבים הבאים:
- פתיחת אובייקט מסוג Connection, וקישור למסד נתונים.
- הכרזה על אובייקט מסוג Command, תוך כדי ציון פקודת הSQL בה הוא ישתמש. ניתן לוותר על העברת הפרמטר הנל ל-Constructor, אולם יש לציין את פקודת ה-SQL דרך המאפיין CommandText.
- הכרזה על אובייקט DataReader.
- מילוי ה-DataReader עי המתודה ExecuteReader().
כעת כשברשותנו אובייקט DataReader פתוח ועובד, אפשר לקרוא ממנו את הנתונים. המקבילה של MoveNext באובייקט ה-DataReader היא Read(). מתודה זו מחזירה false במידה והגענו לשורה האחרונה של ה-DataReader. שאיבת הנתונים מן ה-DataReader תיעשה עי המתודות GetString, GetInt32, אשר מקבלות מספר (Zero-based) שמציין מאיזה שדה לשלוף את הנתונים. הבחירה באיזו מתודה להתשמש תיעשה לפי סוג הנתונים של אותו שדה. לרשימת המתודות המלאה, יש לעיין בדוקומנטציה של ה-SDK.
1 2 3 4 5 6 7 8 |
|
כמו שניתן לראות, הסמן של ה-DataReader נמצא בהתחלה לפני השורה הראשונה, כך שיש צורך לקרוא ל-Read() לפני הקריאה מה-DataReader.
כמו כן, ניתן לקשר (Bind) את ה-DataReader ל-DataGrid.
זהו זה להפעם,
מקווה שנהנתם…
תגובות בפייסבוק