Download presentation
Presentation is loading. Please wait.
1
מתחברים למסד נתונים היכרות עם ADO.Net
2
עבודה עם מסדי נתונים- תוכניות רבות מבוססות על מידע שאנחנו אוגרים
המידע נאגר בתוך מסד נתונים (ראה שיעור קודם) אנחנו מעונינים לחבר את שתי "העולמות" עולם המידע : המרוכז בתוכנה המנהלת נתונים עולם האפליקציה: מערכת התוכניות שאנחנו מפתחים כיצד ניתן לקשר ביניהם?
3
ADO.Net ADO.Net הוא שם של אוסף מחלקות שמשתמשים בהם כדי לגשת לנתונים המרוכזים בפורמט טבלאי. ניתן לקשר מסדי נתונים טבלאים דוגמאת: SQL Server, אקסס (של מיקרוסופט) , Oracle, MySQL וכו'. הוא חלק מחבילת ה.Net- ויכול לשתלב בכל הסביבות ה.Net- כולל כמובן C#
4
מטרות ADO.Net גישה פשוטה לנתונים באירגון יחסי או לא יחסי (Relational)
מאפשרת הרחבה כדי לתמוך ביותר מקורות מידע מאשר הטכנולוגיות הקיימות מאפשרת גישה רב שכבתית ברחבי האינטרנט איחוד הטיפול ב- XML וטבלאות רלציוניות
5
סקירת המחלקות של ADO.Net
2 קבוצות מחלקות מחלקות הצרכן מחלקות הספקים
6
אובייקטים מסוג ספקים אלו קבוצות האובייקטים הקשורים ספציפית לספק המידע שלנו. סוג האובייקט נקבע על ידי סוג מקור המידע שנעבוד איתו. דוגמא: אם מקור המידע שלנו היא SQL Server אזי נעבוד עם קבוצת אובייקטים שונה לזו שאם נעבוד עם מסד נתונים של Access * כדי לעבוד עם מקור מידע חדש, נצטרך לספק קבוצת מחלקות שפיזית יודעות לתקשר עם מקור המידע (שומר על גמישות ויכולות הרחבה)
7
אובייקטים מסוג צרכנים אילו האובייקטים שנשתמש בהם ברגע שקיבלנו את הנתונים מקבוצת האובייקטים מסוג ספקים. האובייקטים אינם תלויים במקור המידע, והם יודעים לבצע גישה ושינויים לנתונים מהרגע ששמרנו את הנתונים בזיכרון המחשב
8
פירוט אובייקטים מסוג ספקים
Connection Object : הוא האובייקט הראשון שתשתמש בו והוא מספק את הקשר הממשי. נצטרך לייצור אותו לפני שנוכל לעבוד עם שאר האובייקטים מהקבוצה הזו. שם המחלקה : עבור Sql Server: SqlConnection, עבור אקסס :OledbConnection Command Object: כאן אתה נותן לו את ההוראה של מה לעשות (כגון : select * from tbl) CommandBuilder object: מספק לנו אוטומטית את כל השירותים הדרושים לניהול זרימת המידע DataReader Object: אובייקט מהיר וקל לשימוש שקורא (בלבד) מתזרים (stream) מידע. הוא מספק את המידע בקלות ובמהירות DataAdapter:זוהי מחלקה כללית שמבצע מספר פעולות למקור מידע כמו עדכון נתונים , מילוי ה-data set וכו'
9
פירוט אובייקטים מסוג צרכנים
DataSet: הוא "מלך" הקבוצה והוא מרכז בתוכו אוסף של טבלאות וקשרים גומלין בין הטבלאות. בתוך ה-DataSet אנחנו יכולים לשמור יותר מטבלה אחת ויותר מקשר אחד! DataTable Object : הוא מייצג טבלה אחת ב-DataSet. למחלקה זו יש אוסף אובייקטים נוספים: DataColumn Object (עמודות של הטבלה) ו- DataRow (שורות הנתונים שהם מאורגנים לפי אוסף ה-DataColumns בטבלה) DataRelation Object: הוא מייצג את קשרי הגומלין ומקשר בין עמודות בשתי טבלאות (לאו דוקא שונות) כאשר בטבלה אחת העמודה מוגדרת כמפתח ראשי וטבלה השניה העמודה מוגדרת כמפתח זר
10
Namespace של קבוצות data
כדי להקל את העבודה ממולץ להוסיף הפניה לקבוצת המחלקות שנשתמש במהלך הפרוייקט. קבוצת המחלקות תלויה בסוג המסד נתונים שאיתו אנחנו עובדים. אנחנו נעבוד עם ה- SQL Server לכן נצהיר בתחילת המחלקה using System.Data; using System.Data.SqlClient; אם נעבוד עם אקסס נוסיף: using System.OleDb;
11
דוגמא: טבלת ערים בשיעור שעבר למדנו איך לייצור מסד נתונים ולהזין נתונים לטבלה. כעת נציג את הנתונים ונכתוב קטע תוכנית שתציג את הנתונים
12
הצגת נתוני טבלה ב-Console
נפתח פרוייקט חדש ונקרא לו dataReaderTest נגדיר מחלקה ערים לפי ההגדרות של הטבלה: קוד עיר ושם עיר. class City { private int id; private string name; public City(int id, string Name) Id = id.ToString(); Name = name; } public string Id set { if (int.TryParse(value, out this.id) == false) this.id = 0; get { return this.id.ToString(); } public string Name set { this.name = value; } get { return this.name; } public override string ToString() return Id + ": " + Name;
13
קריאת הערים class Program { static void Main(string[] args)
SqlConnection con = new SqlConnection( @"Data Source=TOBY-HOME-PC\SQLEXPRESS; Initial Catalog=Testing;Integrated Security=True;Pooling=False"); con.Open(); SqlCommand command = con.CreateCommand(); command.CommandText = "Select * From City"; SqlDataReader reader = command.ExecuteReader(); City city; while (reader.Read()) city = new City((int)reader[0],(string)reader[1]); Console.WriteLine(city); } reader.Close(); con.Close(); Console.ReadKey();
14
ניתוח התוכנית הגדרנו אובייקט מסוג SqlConnection וקראנו לו con.
SqlConnection con = new SqlConnection( @"Data Source=TOBY-HOME-PC\SQLEXPRESS; Initial Catalog=Testing;Integrated Security=True;Pooling=False"); con.Open(); הגדרנו אובייקט מסוג SqlConnection וקראנו לו con. איתחלנו אותו באמצעות ה- Connection string המתאר את שם המסד נתונים. ניתן לקבל את פירוט ה-connection string מתוך טבלת המאפיינים (properties) של מסד הנתונים לאחר שאיתחלנו אותו, אנחנו פותחים אותו לשימוש!
15
SqlCommand command = con.CreateCommand();
command.CommandText = "Select * From City"; כעת ניצור את ההוראה ה-Command Object. אנחנו יכולים לבקש מהאובייקט Connection ליצור לנו את האובייקט command . עכשיו נגדיר ל- command מה הוא צריך לעשות: “select * from city” – להעביר את כל הנתונים מתוך הטבלה! SqlDataReader reader = command.ExecuteReader(); עכשיו לאחר שהגדרנו מהיכן אני רוצה לקחת את הנתונים ומה הנתונים שאני רוצה לקחת, נגדיר את ה- DataReader שהוא יהיה אחראי למשוך את הנתונים, באופן רציף, שורה אחר שורה מתוך מסד הנתונים. הקשר שלנו עם מסד הנתונים הוא עד לסוף קריאת הנתונים. הקשר הוא סדרתי (כיוון אחיד ... קדימה) והוא לקריאה בלבד!
16
ניתן לרשום גם reader[“cityId”] כלומר את שם העמודה.
while (reader.Read()) { city = new City((int)reader[0],(string)reader[1]); Console.WriteLine(city); } באמצעות השיטה Read של המחלקה DataReader נוכל למשוך את כל השורות שביקשנו מתוך הטבלה ולהשתמש בנתונים. האובייקט של ה-DataReader מחזיק את הפניה לשורה מסיימת ומאפשר לי גישה לנתונים. יש לשים לב שכל נתון (עמודה בתוך השורה) הוא מסוג Object ולכן צריך לעשות המרה (int) reader[0] כלומר העמודה הראשונה עוברת המרה ל-int ניתן לרשום גם reader[“cityId”] כלומר את שם העמודה. לבסוף נסגור את ה-DataReader ואת ה- Connection. reader.Close(); con.Close();
17
מבנה המחלקות אנחנו מחלקים את הפרויקט למספר קבוצות של מחלקות:
מחלקות ה- Data במקרה שלנו: מחלקת City מחלקת ה-Business Logic כאן נרכז את כל המחלקות המטפלות בכללי המערכת (כולל המחלקות המושכות ומעדכנות את הנתונים במסד הנתונים) מחלקות התצוגה המחלקות המטפלות בטפסים
18
המודל
Similar presentations
© 2024 SlidePlayer.com Inc.
All rights reserved.