1 / 80

ADO.NET

ADO.NET. Agenda. ADO.NET, Why ? What Is ADO.NET ? Disconnected Scenario. Disconnected Scenario – Data Providers . Disconnected Scenario – Data Cache . Disconnected Scenario – Working With DB. Data Relations. DataView. Connected Scenario. Agenda. ADO.NET Why? What Is ADO.NET?

pelham
Download Presentation

ADO.NET

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. ADO.NET

  2. Agenda • ADO.NET, Why ? • What Is ADO.NET ? • Disconnected Scenario. • Disconnected Scenario – Data Providers. • Disconnected Scenario – Data Cache. • Disconnected Scenario – Working With DB. • Data Relations. • DataView. • Connected Scenario.

  3. Agenda • ADO.NET Why? • What Is ADO.NET? • Disconnected Scenario. • Disconnected Scenario – Data Providers. • Disconnected Scenario – Data Cache. • Disconnected Scenario – Working With DB. • Data Relations. • DataView. • Connected Scenario.

  4. ADO.NET, Why? • אפליקציות מודרניות עושות שימוש בהרבה מאוד מידע. • המידע יכול להגיע מ- Database (אחד או יותר), מהאינטרנט (קבצי XML) וכו'. • ניתן לעבוד ישירות מול ה- Database , אולם זו עבודה מורכבת וקשה. • ולכן ,לאורך השנים, פותחו טכנולוגיות שונות המקלות על העבודה מול Databases .

  5. ADO.NET, Why? טכנולוגיות לעבודה מול DB - אבולוציה

  6. ADO.NET, Why? המטרה של כל הטכנולוגיות הללו היתה : • לפשט את הטיפול במערכות מבוססות מידע. • להפוך את המערכות הללו לקלות יותר ליישום. • פשוטות יותר לתחזוקה. • וזולות יותר.

  7. ADO.NET, Why? • ADO.NET הינה הטכנולוגיה האחרונה באבולוציה זו. • מותאמת לדרישות מודרניות ולארכיטקטורה מודרנית של טיפול במספר רב של מערכות מידע דרך ה- Web .

  8. Agenda • ADO.NET Why? • What Is ADO.NET? • Disconnected Scenario. • Disconnected Scenario – Data Providers. • Disconnected Scenario – Data Cache. • Disconnected Scenario – Working With DB. • Data Relations. • DataView. • Connected Scenario.

  9. What Is ADO.NET? • טכנולוגיה לטיפול ב- Database ובקבצי XML . • אוסף של מחלקות, מבנים, ממשקים המספקים גישה מתקדמת וגמישה לטיפול במידע. • טכנולוגיה העונה על צרכים מודרניים. • מתוכננת לעבוד במודל המכונה Disconnected environments • מסוגלת לעבוד גם במודל הנקרא Connected environments • תמיכה מלאה ב- XML .

  10. What Is ADO.NET? מרחבי השמות System.Data ה- Root Namespace של עבודה עם ADO.NET . System.Data.SqlClient מרחב שמות המספק אוסף של מחלקות, מבנים ממשקים לעבודה מול SqlServer 2000 . System.Data.OleDb מרחב שמות המספק אוסף של מחלקות, מבנים ממשקים לעבודה מול כל מסד נתונים התומך ב- OleDb .

  11. Agenda • ADO.NET Why? • What Is ADO.NET? • Disconnected Scenario. • Disconnected Scenario – Data Providers. • Disconnected Scenario – Data Cache. • Disconnected Scenario – Working With DB. • Data Relations. • DataView. • Connected Scenario.

  12. Disconnected Scenario • הטיפול במערכות מידע יכול להיות מבוסס על חיבור קבוע בין התוכנית לבין ה- Database , או חיבור מזדמן בין התוכנית לבין ה- Database . • בפרק זה עוסק בחיבור מזדמן ל- Database . • צורת עבודה זו מול Database מכונה Disconnected environment(מערכות מנותקות) והיא ברירת המחדל בעבודה עם ADO.NET .

  13. Disconnected Scenario במערכות מנותקות טוענים מה- Database לזיכרון המחשב את המידע הדרוש לתוכנית לצורך עיבוד התוכנית ומתנתקים, כל העיבוד מתבצע על זיכרון המחשב, בסיום העיבוד מתחברים חזרה ל- Database שומרים את המידע המעובד ב- Database ומתנתקים.

  14. Disconnected Scenario יתרונות • ניתן בקלות להעביר יחידות מידע ממחשב לקוח אחד לשני. • אין תלות בנגישותו של מקור המידע. • משפר את הגמישות של התוכנית. • משפר את הביצועים של התוכנית. חסרונות • לא תמיד עובדים עם המידע העדכני ביותר. • צריך לטפל בקונפליקטים המתרחשים בין לקוחות שונים המטפלים באותו המידע.

  15. Disconnected Scenario המחלקות: בתהליך העבודה עם Database נעבוד עם מספר מחלקות. את כל המחלקות ניתן לשייך לאחת משתי המשפחות הבאות: ProvidersData , Data Cache . מחלקות ה- Data Providers : תפקידם להגדיר ולנהל את הקשר בין התוכנית ל- Database . מחלקות ה- Data Cache : תפקידם להגדיר ולנהל את המידע כל עוד הוא שוכן בזיכרון.

  16. Agenda • ADO.NET Why? • What Is ADO.NET? • Disconnected Scenario. • Disconnected Scenario – Data Providers. • Disconnected Scenario – Data Cache. • Disconnected Scenario – Working With DB. • Data Relations. • DataView. • Connected Scenario.

  17. Disconnected Scenario – Data Providers תפקידם להגדיר ולנהל את הקשר בין התוכנית ל- Database. במשפחה זו, בין השאר, נמצא את המחלקות המרכזיות הבאות: XxxConnection XxxCommand XxxDataAdapter

  18. Disconnected Scenario – Data Providers מחלקות ה- Data Providers, תפקידים : XxxConnection - ניהול ההתחברות ל- Database . XxxCommand - הבקשה למידע, הרצת שאילתא (Query), או פרוצדורה מאוחסנת (Stored Procedure) על ה- Database . XxxDataAdapter – בניית ה- Cache על פי השאילתא המוגדרת באובייקט ה- Command , השאילתא רצה על ה- Database שמוגדר באובייקט ה- Connection .

  19. Disconnected Scenario – Data Providers מחלקות ה- Data Providers : מה משמעות ה- Xxx ? • Microsoft יצרו מספר מחלקות Connection , מספר מחלקות Command ומספר מחלקות DataAdapter . • המטרה היא לעבוד Native מול ה- Database . • למספר סוגים של Database יש מחלקות Connection ,Command ו- DataAdapter המיועדים לעבודה רק איתם, מחלקות אלו עברו אופטימיזציה לעבודה עם Database מסוג מוגדר. • עבודה Native משפרת את הביצועים בעבודה מול ה- Database . • לכל משפחות המחלקות ממשקים זהים ולכן ההבדל היחידי ביניהם הוא שם המחלקה, למדנו לעבוד מול Database אחד , אנו יודעים כיצד לעבוד מול שאר ה- Databases .

  20. Disconnected Scenario – Data Providers משפחת ה- OleDB: OleDbConnection, OleDbCommand, OleDbDataAdapter באמצעות מחלקות אלו ניתן לגשת לכל Database התומך ב- Oledb, Oracle,Access,SqlServer,MySql וכו, עבודה אם מחלקות אלו היא לא Native ולכן נעדיף לעבוד איתם רק כאשר אין אוסף מחלקות ייעודי ל- Database שעובדים מולו. לדוגמה : בעבודה עם Access או SqlServer 6.0 וכו. מחלקות אלו מוגדרות במרחב השמות System.Data.OleDb .

  21. Disconnected Scenario – Data Providers משפחת ה- Sql: SqlConnection, SqlCommand, SqlDataAdapter באמצעות מחלקות אלו ניתן לגשת ל- Sql Server (החל מגירסה 7). עבודה אם מחלקות אלו מותאמת לעבודה רק עם SqlServer ולכן נקבל מהירות גישה גבוהה יותר מאשר עם OleDb. מחלקות אלו מוגדרות במרחב השמות System.Data.SqlClient .

  22. Disconnected Scenario – Data Providers SqlConnection לפני שמריצים שאילתא יש להתחבר ל- Database מחלקה זו אחראית על ההתחברות ל- Database . מחלקה זו מכילה מאפיין חשוב אחד : SqlConnection.ConnectionString מחלקה זו מכילה שתי מתודות עיקריות : SqlConnection.Open() SqlConnection.Close()

  23. Disconnected Scenario – Data Providers SqlConnection : המחלקה מכילה מאפיין אחד חשוב SqlConnection.ConnectionString : מחרוזת זו מגדירה פרמטרים שונים וחיוניים להתחברות ל- Database כגון: סוג ה- Database , שם ה- Database , שם משתמש וסיסמה , כתובת IP של שרת המידע וכו'.

  24. Disconnected Scenario – Data Providers SqlConnection : מחלקה זו מכילה שתי מתודות עיקריות : SqlConnection.Open() מתחברת ל- Database לצורך ביצוע שאילתא וקבלת תשובה (Result set או Scalar) SqlConnection.Close() ניתוק התוכנית מה –Database בסיום העבודה עמו.

  25. Disconnected Scenario – Data Providers SqlConnection – דוגמה: SqlConnection cn = new SqlConnection(); cn.ConnectionString = "Data Source=localhost;Initial Catalog = pubs;Integrated Security = True;"; try { cn.Open(); . . . } catch (Exception exc) { . . . } finally { cn.Close(); }

  26. Disconnected Scenario – Data Providers SqlCommand תפקיד מחלקה זו להריץ שאילתא ( Query) או פרוצדורה מאוחסנת (Stored Procedure) על ה- Database. מחלקה זו מכילה מספר מאפיינים חשובים: SqlCommand.Connection SqlCommand.CommandText SqlCommand.CommandType מחלקה זו מכילה מספר מתודות עיקריות : SqlCommand.ExecuteReader() SqlCommand. ExecuteNonQuery() SqlCommand.ExecuteScalar()

  27. Disconnected Scenario – Data Providers SqlCommand : מחלקה זו מכילה שני מאפיינים מרכזיים : SqlCommand.Connection ייחוס למחלקת ה- Connection , אובייקט ה- Command קובע מה לבקש, אובייקט ה- Connection קובע היכן לבקש . SqlCommand.CommandText הבקשה - גוף השאילתא או הפרוצדורה. SqlCommand.CommandType קובע את סוג הבקשה , שאילתא רגילה או פרוצדורה מאוחסנת.

  28. Disconnected Scenario – Data Providers SqlCommand : מחלקה זו מכילה שלוש מתודות מרכזיות : SqlCommand.ExecuteReader() מתודה זו מריצה שאילתא אשר מצפה לאוסף רשומות (Result Set ). SqlCommand. ExecuteNonQuery() שאילתות עידכון מבנה ה –Database ושאילתות עידכון,מחיקה והוספת רשומות. SqlCommand.ExecuteScalar() הרצת שאילתא בעלת תשובה בודדה כגון : Count, Sum, Average, Date וכו'

  29. Disconnected Scenario – Data Providers SqlCommand – דוגמה: SqlConnection cn = new SqlConnection(); cn.ConnectionString = "Data Source=localhost;Initial Catalog = pubs;Integrated Security = True;"; try { SqlCommand command = new SqlCommand(); command.Connection = cn; command.CommandText = "SELECT au_lname,au_fname,phone FROM authors"; cn.Open(); SqlDataReader reader = command.ExecuteReader(); . . . } catch (Exception exc) { . . } finally { cn.Close(); }

  30. Disconnected Scenario – Data Providers SqlDataAdapter המידע הנדרש נקרא מ- Database המוגדר באובייקט ה-Connection , פריטי המידע הנדרשים מוגדרים באובייקט מהמחלקה Command . תפקידו הראשוני של האובייקט מהמחלקה DataAdapter הוא לבנות את אובייקט ה- Data Cache אשר יכיל את המידע הנדרש בזיכרון התוכנית. תפקידו השני הוא לעדכן את ה- Database בסיום העיבוד.

  31. Disconnected Scenario – Data Providers SqlDataAdapter מגדיר שתי מתודות מרכזיות : SqlDataAdapter.Fill( … ) תפקיד מתודה זו לקרוא מידע מה – Database ולייצר את אובייקט ה- Data Cache של התוכנית, מתודה זו מופעלת בתחילת העיבוד. SqlDataAdapter.Update( … ) תפקיד מתודה זו לשמור בסיום העיבוד את התוצאות ואו השינויים ב- Database מופעלת בסוף העיבוד.

  32. Disconnected Scenario – Data Providers SqlDataAdapter – דוגמה: SqlConnection cn = new SqlConnection(); cn.ConnectionString = "Data Source=localhost;Initial Catalog = pubs;Integrated Security = True;"; DataSet ds = new DataSet(); SqlCommand command = new SqlCommand(); command.Connection = cn; command.CommandText = "SELECT au_lname,au_fname,phone FROM authors"; SqlDataAdapter adapter = new SqlDataAdapter(); adapter.SelectCommand = command; try { cn.Open(); adapter.Fill(ds, "Authors"); } המשך בשקף הבא :

  33. Disconnected Scenario – Data Providers SqlDataAdapter – דוגמה: המשך: catch (Exception exc) { . . } finally { cn.Close(); }

  34. Disconnected Scenario – Data Providers SqlDataAdapter התהליך והמחלקות המשתתפות: SqlCommand SqlDataAdapter DataSet SqlConnection SQL Server 2000

  35. Agenda • ADO.NET Why? • What Is ADO.NET? • Disconnected Scenario. • Disconnected Scenario – Data Providers. • Disconnected Scenario – Data Cache. • Disconnected Scenario – Working With DB. • Data Relations. • DataView. • Connected Scenario.

  36. Disconnected Scenario – Data Cache מחלקות ה- Data Cache : • מוגדרות כולם במרחב השמות System.Data . • מכילות את המידע בזיכרון התוכנית, התוכנית משתמשת במידע האגור בהן לצורך העיבוד ולכן אין לה צורך לפנות ל- Database : DataSet DataTable DataColumn DataRow DataRelation

  37. Disconnected Scenario – Data Cache מחלקות ה- Data Cache : • המחלקה המרכזית היא המחלקה DataSet . • שתי ציפיות מרכזיות ממחלקה זו : א – מבנה מידע דומה ככל הניתן לייצוג המידע ב- Database . ב – התנהגות דומה להתנהגות של ה- Database . • באם ציפיות אלו יתמלאו ניתן לעבוד עם המידע בזיכרון והמידע ב- Database על פי אותו מודל, מה שמאוד יקל על מפתחים שלא ייאלצו ללמוד מודלים שונים לטיפול במידע.

  38. DataSet PrimaryKey DataRow[] Tables DataTable Columns DataColumn Object DataConstraints Constraints Collection Rows DataRow Relations DataRelation Disconnected Scenario – Data Cache מבנה המחלקה DataSet :

  39. DataSet Tables Relations Disconnected Scenario – Data Cache מבנה המחלקה DataSet : כמו המידע ב- Database הרילאציוני כך גם המחלקה DataSet מורכבת מאוסף של טבלאות וקשרים ביניהם.

  40. Disconnected Scenario – Data Cache מבנה המחלקה DataSet : • האוסף Tables הוא אוסף של אובייקטים מהמחלקה DataTable . • כל אובייקט מהמחלקה DataTable מייצג טבלה בזיכרון. • כמו שמקובל ב- Database קיימים קשרים בין הטבלאות בזיכרון, הקשרים נשמרים באוסף Relations המורכב מאובייקטים מהמחלקה DataRelation .

  41. Disconnected Scenario – Data Cache מבנה המחלקה DataTable : כמו טבלה ב- DataBase האובייקט מהמחלקה DataTable המייצג טבלה ב- DataSet בנוי מאוסף של שדות המגדיר את מבנה הטבלה , אוסף של אילוצים על השדות, אוסף של רשומות המכילות את המידע ומפתח ראשי אשר יכול להכיל יותר מאשר שדה אחד.

  42. Disconnected Scenario – Data Cache מבנה המחלקה DataTable : • האוסף Columns הוא אוסף של אובייקטים מהמחלקה DataColumn. • המחלקה DataColumn מתארת שדה בודד בטבלה. • האוסף Columns מתאר את מבנה (Schema) הטבלה. • האוסף Constraints הוא אוסף של אובייקטים מהמחלקה DataConstraint . • המחלקה DataConstraint מייצגת אילוץ בודד (Length, AllowDbNull,Required). • האוסף Rows הוא אוסף של אובייקטים מהמחלקה DataRow . • המחלקה DataRow מייצגת רשומה בודדה. • המערך PrimaryKey מכיל ייחוסים לשדות המוגדרים במפתח.

  43. דוגמאות מבנה DataSet

  44. Agenda • ADO.NET Why? • What Is ADO.NET? • Disconnected Scenario. • Disconnected Scenario – Data Providers. • Disconnected Scenario – Data Cache. • Disconnected Scenario – Working With DB. • Data Relations. • DataView. • Connected Scenario.

  45. Disconnected Scenario – Working With DB זוכרים את השלבים ? • התחברות ל- Database , קריאת המידע הנדרש והעתקתו לזיכרון והתנתקות מה- Database . • פעולות אלו הן באחריותה של המחלקה DataAdapter . • עיבוד המידע מתבצע על אובייקט מהמחלקה DataSet אשר נוצר על ידי ה- DataAdapter , בזמן בעיבוד התוכנית מנותקת מה- DataBase . • בסיום העיבוד התחברות נוספת ל- Database ועידכונו על ידי האובייקט DataAdapter .

  46. Disconnected Scenario – Working With DB ובחלוקה לשלבים שלב א – בניית ה- DataSet התחברות ל- Database , קריאת המידע הנדרש והעתקתו לזיכרון והתנתקות מה- Database . פעולות אלו הן באחריותה של המחלקה DataAdapter . שלב ב - העיבוד עיבוד המידע מתבצע על אובייקט מהמחלקה DataSet אשר נוצר על ידי ה- DataAdapter, בזמן בעיבוד התוכנית מנותקת מה- DataBase. שלב ג – עידכון ה- DataBase בסיום העיבוד התחברות נוספת ל- Database ועידכונו על ידי האובייקט DataAdapter .

  47. Disconnected Scenario – Working With DB שלב א – בניית ה- DataSet • התחברות ל- Database , קריאת המידע הנדרש והעתקתו לזיכרון והתנתקות מה- Database . • בניית ה- DataSet מתבצעת על ידי ה- DataAdapter בשלבים. • בכל קריאה למתודה DataAdapter.Fill(…) מתווסף ל- DataSet אובייקט חדש מהמחלקה DataTable . • לסיום נגדיר את הקשרים (Relation) ידנית. • ישנם מספר צורות אפשריות ליישום שלב א' (כולן מאוד דומות). • על מנת לבצע שלב זה יש להכיר יותר לעומק את המחלקה DataAdapter .

  48. DataAdapter SelectCommand UpdateCommand InsertCommand DeleteCommand DataReader Command Command Command Command Connection Database Disconnected Scenario – Working With DB מבנה ה- DataAdapter

  49. Disconnected Scenario – Working With DB שלב א – בניית ה- DataSet DataSet ds = new DataSet(); SqlConnection cn = new SqlConnection(); cn.ConnectionString = "Data Source=localhost;Initial Catalog = pubs; Integrated Security =True;"; SqlCommand command = new SqlCommand(); command.Connection = cn; command.CommandText = "SELECT au_lname,au_fname,phone FROM authors"; SqlDataAdapter adapter = new SqlDataAdapter(); adapter.SelectCommand = command; המשך ...

  50. Disconnected Scenario – Working With DB שלב א – המשך . . . try { cn.Open(); adapter.Fill(ds, "Authors"); } catch (SqlException exc ) { … } finally { cn.Close(); }

More Related