ado.net
DESCRIPTION
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? - PowerPoint PPT PresentationTRANSCRIPT
![Page 1: ADO.NET](https://reader035.vdocuments.net/reader035/viewer/2022062408/56813b0a550346895da3b004/html5/thumbnails/1.jpg)
ADO.NET
![Page 2: ADO.NET](https://reader035.vdocuments.net/reader035/viewer/2022062408/56813b0a550346895da3b004/html5/thumbnails/2.jpg)
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.
![Page 3: ADO.NET](https://reader035.vdocuments.net/reader035/viewer/2022062408/56813b0a550346895da3b004/html5/thumbnails/3.jpg)
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.
![Page 4: ADO.NET](https://reader035.vdocuments.net/reader035/viewer/2022062408/56813b0a550346895da3b004/html5/thumbnails/4.jpg)
4
ADO.NET, Why?
אפליקציות מודרניות עושות שימוש בהרבה •מאוד מידע.
)אחד או Databaseהמידע יכול להגיע מ- •( וכו'.XMLיותר(, מהאינטרנט )קבצי
, אולם זו Databaseניתן לעבוד ישירות מול ה- •עבודה מורכבת וקשה.
ולכן ,לאורך השנים, פותחו טכנולוגיות שונות • .Databasesהמקלות על העבודה מול
![Page 5: ADO.NET](https://reader035.vdocuments.net/reader035/viewer/2022062408/56813b0a550346895da3b004/html5/thumbnails/5.jpg)
5
ADO.NET, Why?
- DBטכנולוגיות לעבודה מול אבולוציה
![Page 6: ADO.NET](https://reader035.vdocuments.net/reader035/viewer/2022062408/56813b0a550346895da3b004/html5/thumbnails/6.jpg)
6
ADO.NET, Why?
המטרה של כל הטכנולוגיות הללו היתה :לפשט את הטיפול במערכות מבוססות מידע.•להפוך את המערכות הללו לקלות יותר ליישום.•פשוטות יותר לתחזוקה.•וזולות יותר.•
![Page 7: ADO.NET](https://reader035.vdocuments.net/reader035/viewer/2022062408/56813b0a550346895da3b004/html5/thumbnails/7.jpg)
7
ADO.NET, Why?
•ADO.NET.הינה הטכנולוגיה האחרונה באבולוציה זו מותאמת לדרישות מודרניות ולארכיטקטורה מודרנית •
Webשל טיפול במספר רב של מערכות מידע דרך ה- .
![Page 8: ADO.NET](https://reader035.vdocuments.net/reader035/viewer/2022062408/56813b0a550346895da3b004/html5/thumbnails/8.jpg)
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.
![Page 9: ADO.NET](https://reader035.vdocuments.net/reader035/viewer/2022062408/56813b0a550346895da3b004/html5/thumbnails/9.jpg)
9
What Is ADO.NET?
.XML ובקבצי Databaseטכנולוגיה לטיפול ב- •אוסף של מחלקות, מבנים, ממשקים המספקים גישה •
מתקדמת וגמישה לטיפול במידע.טכנולוגיה העונה על צרכים מודרניים.•מתוכננת לעבוד במודל המכונה•
Disconnected environmentsמסוגלת לעבוד גם במודל הנקרא•
Connected environments .XMLתמיכה מלאה ב- •
![Page 10: ADO.NET](https://reader035.vdocuments.net/reader035/viewer/2022062408/56813b0a550346895da3b004/html5/thumbnails/10.jpg)
10
What Is ADO.NET?
מרחבי השמותSystem.Data
.ADO.NET של עבודה עם Root Namespaceה-
System.Data.SqlClient מרחב שמות המספק אוסף של מחלקות, מבנים ממשקים
.SqlServer 2000לעבודה מול
System.Data.OleDb
מרחב שמות המספק אוסף של מחלקות, מבנים ממשקים .OleDbלעבודה מול כל מסד נתונים התומך ב-
![Page 11: ADO.NET](https://reader035.vdocuments.net/reader035/viewer/2022062408/56813b0a550346895da3b004/html5/thumbnails/11.jpg)
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.
![Page 12: ADO.NET](https://reader035.vdocuments.net/reader035/viewer/2022062408/56813b0a550346895da3b004/html5/thumbnails/12.jpg)
12
Disconnected Scenario
הטיפול במערכות מידע יכול להיות מבוסס על • , או Databaseחיבור קבוע בין התוכנית לבין ה-
.Databaseחיבור מזדמן בין התוכנית לבין ה- .Databaseבפרק זה עוסק בחיבור מזדמן ל- • מכונהDatabaseצורת עבודה זו מול •
Disconnected environment )מערכות מנותקות(
.ADO.NET והיא ברירת המחדל בעבודה עם
![Page 13: ADO.NET](https://reader035.vdocuments.net/reader035/viewer/2022062408/56813b0a550346895da3b004/html5/thumbnails/13.jpg)
13
Disconnected Scenario
במערכות מנותקות טוענים מה- Database לזיכרון המחשב את המידע
הדרוש לתוכנית לצורך עיבוד התוכנית ומתנתקים, כל העיבוד מתבצע על זיכרון
המחשב, בסיום העיבוד מתחברים שומרים את המידע Databaseחזרה ל-
ומתנתקים.Databaseהמעובד ב-
![Page 14: ADO.NET](https://reader035.vdocuments.net/reader035/viewer/2022062408/56813b0a550346895da3b004/html5/thumbnails/14.jpg)
14
Disconnected Scenario
יתרונותניתן בקלות להעביר יחידות מידע ממחשב לקוח אחד •
לשני.אין תלות בנגישותו של מקור המידע.•משפר את הגמישות של התוכנית.•משפר את הביצועים של התוכנית.•
חסרונותלא תמיד עובדים עם המידע העדכני ביותר.•צריך לטפל בקונפליקטים המתרחשים בין לקוחות •
שונים המטפלים באותו המידע.
![Page 15: ADO.NET](https://reader035.vdocuments.net/reader035/viewer/2022062408/56813b0a550346895da3b004/html5/thumbnails/15.jpg)
15
Disconnected Scenario
המחלקות: נעבוד עם מספר מחלקות.Databaseבתהליך העבודה עם
את כל המחלקות ניתן לשייך לאחת משתי המשפחות הבאות:
Providers Data , Data Cache.
:Data Providersמחלקות ה-
.Database תפקידם להגדיר ולנהל את הקשר בין התוכנית ל-
:Data Cacheמחלקות ה-
תפקידם להגדיר ולנהל את המידע כל עוד הוא שוכן בזיכרון.
![Page 16: ADO.NET](https://reader035.vdocuments.net/reader035/viewer/2022062408/56813b0a550346895da3b004/html5/thumbnails/16.jpg)
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.
![Page 17: ADO.NET](https://reader035.vdocuments.net/reader035/viewer/2022062408/56813b0a550346895da3b004/html5/thumbnails/17.jpg)
17
Disconnected Scenario – Data Providers
.Databaseתפקידם להגדיר ולנהל את הקשר בין התוכנית ל-
במשפחה זו, בין השאר, נמצא את המחלקות המרכזיות הבאות:
XxxConnection
XxxCommand
XxxDataAdapter
![Page 18: ADO.NET](https://reader035.vdocuments.net/reader035/viewer/2022062408/56813b0a550346895da3b004/html5/thumbnails/18.jpg)
18
Disconnected Scenario – Data Providers
:תפקידים, Data Providersמחלקות ה- XxxConnection - -ניהול ההתחברות לDatabase.
XxxCommand - ( הבקשה למידע, הרצת שאילתאQuery ,)( על ה- Stored Procedureאו פרוצדורה מאוחסנת )
Database.
XxxDataAdapter – -בניית הCache על פי השאילתא , השאילתא רצה על ה- Commandהמוגדרת באובייקט ה-
Database -שמוגדר באובייקט ה Connection.
![Page 19: ADO.NET](https://reader035.vdocuments.net/reader035/viewer/2022062408/56813b0a550346895da3b004/html5/thumbnails/19.jpg)
19
Disconnected Scenario – Data Providers
:Data Providersמחלקות ה- ?Xxxמה משמעות ה-
•Microsoft יצרו מספר מחלקות Connection מספר מחלקות , Command .DataAdapterומספר מחלקות
.Database מול ה- Nativeהמטרה היא לעבוד • ו- Connection ,Command יש מחלקות Databaseלמספר סוגים של •
DataAdapter המיועדים לעבודה רק איתם, מחלקות אלו עברו מסוג מוגדר.Databaseאופטימיזציה לעבודה עם
.Database משפרת את הביצועים בעבודה מול ה- Nativeעבודה •לכל משפחות המחלקות ממשקים זהים ולכן ההבדל היחידי ביניהם הוא •
אחד , אנו יודעים כיצד לעבוד Databaseשם המחלקה, למדנו לעבוד מול .Databasesמול שאר ה-
![Page 20: ADO.NET](https://reader035.vdocuments.net/reader035/viewer/2022062408/56813b0a550346895da3b004/html5/thumbnails/20.jpg)
20
Disconnected Scenario – Data Providers
:OleDBמשפחת ה- OleDbConnection, OleDbCommand, OleDbDataAdapter
התומך ב- Databaseבאמצעות מחלקות אלו ניתן לגשת לכל Oledb,
Oracle,Access,SqlServer,MySql,וכו
ולכן נעדיף לעבוד איתם Nativeעבודה אם מחלקות אלו היא לא שעובדים Databaseרק כאשר אין אוסף מחלקות ייעודי ל-
מולו.
וכו.SqlServer 6.0 או Accessלדוגמה : בעבודה עם
מחלקות אלו מוגדרות במרחב השמות System.Data.OleDb.
![Page 21: ADO.NET](https://reader035.vdocuments.net/reader035/viewer/2022062408/56813b0a550346895da3b004/html5/thumbnails/21.jpg)
21
Disconnected Scenario – Data Providers
:Sqlמשפחת ה- SqlConnection, SqlCommand, SqlDataAdapter
)החל מגירסה Sql Serverבאמצעות מחלקות אלו ניתן לגשת ל- 7.)
SqlServerעבודה אם מחלקות אלו מותאמת לעבודה רק עם .OleDbולכן נקבל מהירות גישה גבוהה יותר מאשר עם
מחלקות אלו מוגדרות במרחב השמות System.Data.SqlClient.
![Page 22: ADO.NET](https://reader035.vdocuments.net/reader035/viewer/2022062408/56813b0a550346895da3b004/html5/thumbnails/22.jpg)
22
Disconnected Scenario – Data Providers
SqlConnection Databaseלפני שמריצים שאילתא יש להתחבר ל-
.Databaseמחלקה זו אחראית על ההתחברות ל-
מחלקה זו מכילה מאפיין חשוב אחד :
SqlConnection.ConnectionString
מחלקה זו מכילה שתי מתודות עיקריות :
SqlConnection.Open)(
SqlConnection.Close)(
![Page 23: ADO.NET](https://reader035.vdocuments.net/reader035/viewer/2022062408/56813b0a550346895da3b004/html5/thumbnails/23.jpg)
23
Disconnected Scenario – Data Providers
SqlConnection: המחלקה מכילה מאפיין אחד חשוב
SqlConnection.ConnectionString: מחרוזת זו מגדירה פרמטרים שונים וחיוניים להתחברות ל-
Database -כגון: סוג ה Database -שם ה , Database שם , של שרת המידע וכו'. IPמשתמש וסיסמה , כתובת
![Page 24: ADO.NET](https://reader035.vdocuments.net/reader035/viewer/2022062408/56813b0a550346895da3b004/html5/thumbnails/24.jpg)
24
Disconnected Scenario – Data Providers
SqlConnection: מחלקה זו מכילה שתי מתודות עיקריות :
SqlConnection.Open)(
לצורך ביצוע שאילתא וקבלת תשובה Databaseמתחברת ל- (Result set או Scalar)
SqlConnection.Close)(
בסיום העבודה עמו.Databaseניתוק התוכנית מה –
![Page 25: ADO.NET](https://reader035.vdocuments.net/reader035/viewer/2022062408/56813b0a550346895da3b004/html5/thumbnails/25.jpg)
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)(;}
![Page 26: ADO.NET](https://reader035.vdocuments.net/reader035/viewer/2022062408/56813b0a550346895da3b004/html5/thumbnails/26.jpg)
26
Disconnected Scenario – Data Providers
SqlCommand Stored( או פרוצדורה מאוחסנת )Queryתפקיד מחלקה זו להריץ שאילתא )
Procedure -על ה )Database.מחלקה זו מכילה מספר מאפיינים חשובים:
SqlCommand.ConnectionSqlCommand.CommandTextSqlCommand.CommandType
מחלקה זו מכילה מספר מתודות עיקריות :
SqlCommand.ExecuteReader)(SqlCommand. ExecuteNonQuery)(
SqlCommand.ExecuteScalar)(
![Page 27: ADO.NET](https://reader035.vdocuments.net/reader035/viewer/2022062408/56813b0a550346895da3b004/html5/thumbnails/27.jpg)
27
Disconnected Scenario – Data Providers
SqlCommand: מחלקה זו מכילה שני מאפיינים מרכזיים :
SqlCommand.Connection
קובע Command , אובייקט ה- Connectionייחוס למחלקת ה- קובע היכן לבקש .Connectionמה לבקש, אובייקט ה-
SqlCommand.CommandText
הבקשה - גוף השאילתא או הפרוצדורה.
SqlCommand.CommandType
קובע את סוג הבקשה , שאילתא רגילה או פרוצדורה מאוחסנת.
![Page 28: ADO.NET](https://reader035.vdocuments.net/reader035/viewer/2022062408/56813b0a550346895da3b004/html5/thumbnails/28.jpg)
28
Disconnected Scenario – Data Providers
SqlCommand: מחלקה זו מכילה שלוש מתודות מרכזיות :
SqlCommand.ExecuteReader)(
Resultמתודה זו מריצה שאילתא אשר מצפה לאוסף רשומות )Set.)
SqlCommand. ExecuteNonQuery)(
ושאילתות עידכון,מחיקה Databaseשאילתות עידכון מבנה ה –והוספת רשומות.
SqlCommand.ExecuteScalar)(
,Count, Sumהרצת שאילתא בעלת תשובה בודדה כגון : Average, Date'וכו
![Page 29: ADO.NET](https://reader035.vdocuments.net/reader035/viewer/2022062408/56813b0a550346895da3b004/html5/thumbnails/29.jpg)
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)(;
}
![Page 30: ADO.NET](https://reader035.vdocuments.net/reader035/viewer/2022062408/56813b0a550346895da3b004/html5/thumbnails/30.jpg)
30
Disconnected Scenario – Data Providers
SqlDataAdapter המוגדר באובייקט Databaseהמידע הנדרש נקרא מ-
, פריטי המידע הנדרשים מוגדרים באובייקט Connectionה- .Commandמהמחלקה
הוא DataAdapterתפקידו הראשוני של האובייקט מהמחלקה אשר יכיל את המידע Data Cacheלבנות את אובייקט ה-
הנדרש בזיכרון התוכנית.
בסיום העיבוד.Databaseתפקידו השני הוא לעדכן את ה-
![Page 31: ADO.NET](https://reader035.vdocuments.net/reader035/viewer/2022062408/56813b0a550346895da3b004/html5/thumbnails/31.jpg)
31
Disconnected Scenario – Data Providers
SqlDataAdapterמגדיר שתי מתודות מרכזיות :
SqlDataAdapter.Fill) … (
ולייצר את Databaseתפקיד מתודה זו לקרוא מידע מה – של התוכנית, מתודה זו מופעלת Data Cacheאובייקט ה-
בתחילת העיבוד.
SqlDataAdapter.Update) … (
תפקיד מתודה זו לשמור בסיום העיבוד את התוצאות ואו השינויים מופעלת בסוף העיבוד.Databaseב-
![Page 32: ADO.NET](https://reader035.vdocuments.net/reader035/viewer/2022062408/56813b0a550346895da3b004/html5/thumbnails/32.jpg)
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"(;
}
המשך בשקף הבא :
![Page 33: ADO.NET](https://reader035.vdocuments.net/reader035/viewer/2022062408/56813b0a550346895da3b004/html5/thumbnails/33.jpg)
33
Disconnected Scenario – Data Providers SqlDataAdapter – דוגמה:
המשך:catch )Exception exc( { . . }
finally
{
cn.Close)(;
}
![Page 34: ADO.NET](https://reader035.vdocuments.net/reader035/viewer/2022062408/56813b0a550346895da3b004/html5/thumbnails/34.jpg)
34
Disconnected Scenario – Data Providers
SqlDataAdapterהתהליך והמחלקות המשתתפות:
SqlConnectionSqlConnection
SqlDataAdapterSqlDataAdapter DataSetDataSet
SQL Server 2000
SqlCommandSqlCommand
![Page 35: ADO.NET](https://reader035.vdocuments.net/reader035/viewer/2022062408/56813b0a550346895da3b004/html5/thumbnails/35.jpg)
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.
![Page 36: ADO.NET](https://reader035.vdocuments.net/reader035/viewer/2022062408/56813b0a550346895da3b004/html5/thumbnails/36.jpg)
36
Disconnected Scenario – Data Cache
:Data Cacheמחלקות ה- .System.Dataמוגדרות כולם במרחב השמות •מכילות את המידע בזיכרון התוכנית, התוכנית משתמשת •
במידע האגור בהן לצורך העיבוד ולכן אין לה צורך לפנות ל- Database :
DataSet DataTable
DataColumnDataRow
DataRelation
![Page 37: ADO.NET](https://reader035.vdocuments.net/reader035/viewer/2022062408/56813b0a550346895da3b004/html5/thumbnails/37.jpg)
37
Disconnected Scenario – Data Cache
:Data Cacheמחלקות ה- .DataSetהמחלקה המרכזית היא המחלקה •שתי ציפיות מרכזיות ממחלקה זו :•
.Databaseא – מבנה מידע דומה ככל הניתן לייצוג המידע ב-
.Databaseב – התנהגות דומה להתנהגות של ה- באם ציפיות אלו יתמלאו ניתן לעבוד עם המידע בזיכרון •
על פי אותו מודל, מה שמאוד יקל על Databaseוהמידע ב- מפתחים שלא ייאלצו ללמוד מודלים שונים לטיפול במידע.
![Page 38: ADO.NET](https://reader035.vdocuments.net/reader035/viewer/2022062408/56813b0a550346895da3b004/html5/thumbnails/38.jpg)
38
Disconnected Scenario – Data Cache
:DataSetמבנה המחלקה
ConstraintsConstraints DataConstraintsDataConstraints
ColumnsColumns DataColumnDataColumn
DataSetDataSet
TablesTables DDataataTableTable
Object
Collection
RelationsRelations DataRelationDataRelation
RowsRows DataRowDataRow
PPrimaryKeyrimaryKey DataRow[]DataRow[]
![Page 39: ADO.NET](https://reader035.vdocuments.net/reader035/viewer/2022062408/56813b0a550346895da3b004/html5/thumbnails/39.jpg)
39
Disconnected Scenario – Data Cache
:DataSetמבנה המחלקה DataSet הרילאציוני כך גם המחלקה Databaseכמו המידע ב-
מורכבת מאוסף של טבלאות וקשרים ביניהם.
DataSetDataSet
TablesTables
RelationsRelations
![Page 40: ADO.NET](https://reader035.vdocuments.net/reader035/viewer/2022062408/56813b0a550346895da3b004/html5/thumbnails/40.jpg)
40
Disconnected Scenario – Data Cache
:DataSetמבנה המחלקה
הוא אוסף של אובייקטים Tablesהאוסף •
.DataTable מהמחלקה מייצג טבלהDataTableכל אובייקט מהמחלקה •
בזיכרון. קיימים קשרים ביןDatabaseכמו שמקובל ב- •
המורכב Relations הטבלאות בזיכרון, הקשרים נשמרים באוסף
.DataRelation מאובייקטים מהמחלקה
![Page 41: ADO.NET](https://reader035.vdocuments.net/reader035/viewer/2022062408/56813b0a550346895da3b004/html5/thumbnails/41.jpg)
41
Disconnected Scenario – Data Cache
:DataTableמבנה המחלקה DataTable האובייקט מהמחלקה DataBase טבלה ב- כמו
בנוי מאוסף של שדות המגדיר את DataSetהמייצג טבלה ב- מבנה הטבלה , אוסף של אילוצים על השדות, אוסף של
רשומות המכילות את המידע ומפתח ראשי אשר יכול להכיל יותר מאשר שדה אחד.
![Page 42: ADO.NET](https://reader035.vdocuments.net/reader035/viewer/2022062408/56813b0a550346895da3b004/html5/thumbnails/42.jpg)
42
Disconnected Scenario – Data Cache
:DataTableמבנה המחלקה הוא אוסף של אובייקטיםColumnsהאוסף •
.DataColumn מהמחלקה מתארת שדה בודד בטבלה.DataColumnהמחלקה •( הטבלה.Schema מתאר את מבנה )Columnsהאוסף • DataConstraint הוא אוסף של אובייקטים מהמחלקה Constraintsהאוסף •
. ,Length, AllowDbNull מייצגת אילוץ בודד )DataConstraintהמחלקה •
Required.) .DataRow הוא אוסף של אובייקטים מהמחלקה Rowsהאוסף • מייצגת רשומה בודדה.DataRowהמחלקה • מכיל ייחוסים לשדות המוגדרים במפתח.PrimaryKeyהמערך •
![Page 43: ADO.NET](https://reader035.vdocuments.net/reader035/viewer/2022062408/56813b0a550346895da3b004/html5/thumbnails/43.jpg)
43
דוגמאותDataSetמבנה
![Page 44: ADO.NET](https://reader035.vdocuments.net/reader035/viewer/2022062408/56813b0a550346895da3b004/html5/thumbnails/44.jpg)
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.
![Page 45: ADO.NET](https://reader035.vdocuments.net/reader035/viewer/2022062408/56813b0a550346895da3b004/html5/thumbnails/45.jpg)
45
Disconnected Scenario – Working With DB
זוכרים את השלבים ? , קריאת המידע הנדרשDatabaseהתחברות ל- •
.Databaseוהעתקתו לזיכרון והתנתקות מה- פעולות אלו הן באחריותה של המחלקה•
DataAdapter. עיבוד המידע מתבצע על אובייקט מהמחלקה• DataSet -אשר נוצר על ידי ה DataAdapter ,
.DataBaseבזמן בעיבוד התוכנית מנותקת מה- Databaseבסיום העיבוד התחברות נוספת ל- •
.DataAdapterועידכונו על ידי האובייקט
![Page 46: ADO.NET](https://reader035.vdocuments.net/reader035/viewer/2022062408/56813b0a550346895da3b004/html5/thumbnails/46.jpg)
46
Disconnected Scenario – Working With DB
ובחלוקה לשלביםDataSetשלב א – בניית ה-
, קריאת המידע הנדרש והעתקתו לזיכרון Databaseהתחברות ל- .Databaseוהתנתקות מה-
.DataAdapterפעולות אלו הן באחריותה של המחלקה
שלב ב - העיבוד אשר נוצר DataSetעיבוד המידע מתבצע על אובייקט מהמחלקה
, בזמן בעיבוד התוכנית מנותקת מה- DataAdapterעל ידי ה- DataBase.
DataBaseשלב ג – עידכון ה- ועידכונו על ידי Databaseבסיום העיבוד התחברות נוספת ל-
.DataAdapterהאובייקט
![Page 47: ADO.NET](https://reader035.vdocuments.net/reader035/viewer/2022062408/56813b0a550346895da3b004/html5/thumbnails/47.jpg)
47
Disconnected Scenario – Working With DB
DataSetשלב א – בניית ה- , קריאת המידע הנדרש והעתקתוDatabase התחברות ל- •
.Database לזיכרון והתנתקות מה- בשלבים.DataAdapter מתבצעת על ידי ה- DataSetבניית ה- • DataSet מתווסף ל- )…(DataAdapter.Fill בכל קריאה למתודה •
.DataTable אובייקט חדש מהמחלקה ( ידנית.Relation לסיום נגדיר את הקשרים )• ישנם מספר צורות אפשריות ליישום שלב א' )כולן מאוד דומות(.•
על מנת לבצע שלב זה יש להכיר יותר לעומק את המחלקה• DataAdapter.
![Page 48: ADO.NET](https://reader035.vdocuments.net/reader035/viewer/2022062408/56813b0a550346895da3b004/html5/thumbnails/48.jpg)
48
CommandCommand
SelectCommand UpdateCommand InsertCommand DeleteCommand
DataAdapter
CommandCommand CommandCommand CommandCommand
ConnectionConnection
Database
DataReaderDataReader
Disconnected Scenario – Working With DB
DataAdapterמבנה ה-
![Page 49: ADO.NET](https://reader035.vdocuments.net/reader035/viewer/2022062408/56813b0a550346895da3b004/html5/thumbnails/49.jpg)
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;
המשך ...
![Page 50: ADO.NET](https://reader035.vdocuments.net/reader035/viewer/2022062408/56813b0a550346895da3b004/html5/thumbnails/50.jpg)
50
Disconnected Scenario – Working With DB
שלב א – המשך. . .
try
{
cn.Open)(;
adapter.Fill)ds, "Authors"(;
}
catch )SqlException exc ( { … }
finally
{
cn.Close)(;
}
![Page 51: ADO.NET](https://reader035.vdocuments.net/reader035/viewer/2022062408/56813b0a550346895da3b004/html5/thumbnails/51.jpg)
51
Disconnected Scenario – Working With DB
)אפשרות נוספת(DataSetשלב א – בניית ה-
DataSet ds = new DataSet)(;
String cn_str = "Data Source=localhost;Initial Catalog = pubs; Integrated Security =True;";
string query = "SELECT au_lname,au_fname,phone FROM authors";
SqlDataAdapter adapter = new SqlDataAdapter)query, cn_str(;
try
{
adapter.Fill)ds, "Authors"(;
}
catch )SqlException exc( { … }
![Page 52: ADO.NET](https://reader035.vdocuments.net/reader035/viewer/2022062408/56813b0a550346895da3b004/html5/thumbnails/52.jpg)
52
Disconnected Scenario – Working With DB
)הוספת קשרים(DataSetשלב א – בניית ה- לאחר שקראנו את הטבלאות ניתן ורצוי להוסיף את הקשרים •
ביניהם. .DataRelationאת הקשרים יוצרים באמצעות המחלקה •
לדוגמה :
DataRelation dr = new DataRelation)“”CitiesPersons,ds.Tables[“Cities”].Columns[“CityID”],ds.Tables[“Persons”].Columns[“CityID”](;
ds.Relations.Add)dr(;
![Page 53: ADO.NET](https://reader035.vdocuments.net/reader035/viewer/2022062408/56813b0a550346895da3b004/html5/thumbnails/53.jpg)
53
Disconnected Scenario – Working With DB
שלב ב – העיבוד אשרDataSetעיבוד המידע מתבצע על אובייקט מהמחלקה
, בזמן בעיבוד התוכנית מנותקת DataAdapterנוצר על ידי ה-
.DataBaseמה-
בשלבי העיבוד השונים נבצע את הפעולות הבאות:
הצגת נתונים – הצגת המידע הקיים ברשומות הקיימות.
שינוי נתונים – שינוי נתונים הקיימים ברשומות הקיימות.
הוספת נתונים – הוספת רשומות חדשות.
מחיקת נתונים – מחיקת רשומה קיימת.
Databaseפעולות אלו מתבצעות בזיכרון ולכן ה- •
אינו מתעדכן בהם.
![Page 54: ADO.NET](https://reader035.vdocuments.net/reader035/viewer/2022062408/56813b0a550346895da3b004/html5/thumbnails/54.jpg)
54
Disconnected Scenario – Working With DB
)הצגת הנתונים(שלב ב – העיבוד .Tablesהנתונים כולם נמצאים בתוך האוסף
ניתן לגשת לטבלה הרצויה באמצעות שמה או על פי מקומה באוסף:
לדוגמה:string str = ds.Tables[“Persons”].Rows[0][“LastName”].ToString)(;
או :
string str = ds.Tables[0].Rows[0][1].ToString)(;
כנ"ל לשדות השונים.
![Page 55: ADO.NET](https://reader035.vdocuments.net/reader035/viewer/2022062408/56813b0a550346895da3b004/html5/thumbnails/55.jpg)
55
Disconnected Scenario – Working With DB
)הצגת הנתונים(שלב ב – העיבוד לעיתים נרצה לבחור את הנתונים אותם נרצה להציג.
ניתן לבחור את הנתונים על ידי המתודה :DataTable.Select)…(
לדוגמה:DataRow[] arr = ds.Tables[“Persons”].Select)“CityId = 12”(;
foreach)DataRow dr in arr(Console.WriteLine)dr[“LasntName”].ToString)((;
יכולה מחזירה את כל הרשומות אשר עונים על התנאי.Selectהמתודה
![Page 56: ADO.NET](https://reader035.vdocuments.net/reader035/viewer/2022062408/56813b0a550346895da3b004/html5/thumbnails/56.jpg)
56
Disconnected Scenario – Working With DB
)שינוי הנתונים(שלב ב – העיבוד
לדוגמה:ds.Tables[“Persons”].Rows[0][“LastName”] = “Shoshana”;
או :
ds.Tables[0].Rows[0][1] = “Shoshana”;
![Page 57: ADO.NET](https://reader035.vdocuments.net/reader035/viewer/2022062408/56813b0a550346895da3b004/html5/thumbnails/57.jpg)
57
Disconnected Scenario – Working With DB
)הוספת נתונים חדשים( שלב ב – העיבודהקצאת רשומה חדשה :
DataRow dr = ds.Tables["Persons"].NewRow)(;:הוספת הנתונים לרשומה החדשה
dr["LastName"] = "Sonya";dr["FirstName"] = "IsTheBest";. . .
:Rowsהוספת הרשומה החדשה לאוסף ds.Tables["Persons"].Rows.Add)dr(;
![Page 58: ADO.NET](https://reader035.vdocuments.net/reader035/viewer/2022062408/56813b0a550346895da3b004/html5/thumbnails/58.jpg)
58
Disconnected Scenario – Working With DB
)מחיקת רשומות( שלב ב – העיבודאיתור הרשומה המיועדת למחיקה:
DataRow[] arr = ds.Tables["Persons"].Select)"LastName = 'Sonya’(;
סימון הרשומה כמיועדת למחיקה )לא מחיקה פיזית(arr[0].Delete)(;
![Page 59: ADO.NET](https://reader035.vdocuments.net/reader035/viewer/2022062408/56813b0a550346895da3b004/html5/thumbnails/59.jpg)
59
Disconnected Scenario – Working With DB
Databaseשלב ג – עידכון ה- .DataSet עד כה כל השינויים שנעשו נשמרו ב- • בסיום העבוד נרצה לשמור את המידע המעובד ב- •
Database. .)…(DataAdapter.Update לשם כך ניעזר במתודה • מכילה ארבעה ייחוסים DataAdapter כזכור, המחלקה •
:Command לאובייקט SelectCommand
UpdateCommand InsertCommand
DeleteCommand
![Page 60: ADO.NET](https://reader035.vdocuments.net/reader035/viewer/2022062408/56813b0a550346895da3b004/html5/thumbnails/60.jpg)
60
Disconnected Scenario – Working With DB
Databaseשלב ג – עידכון ה- דאגנו להגדיר אתDataAdapter כאשר קראנו מידע באמצעות ה- •
.SelectCommand ה- עושה בו שימוש.)…(DataAdapter.Fillהמתודה
ניעזר במתודה Database כאשר נרצה לעדכן את ה- • DataAdapter.Update )…(. מתודה זו עושה שימוש ב:•
UpdateCommand -לעידכון רשומות קיימות ב – Database . InsertCommand-להוספת רשומות חדשות ל - Database. DeleteCommand -למחיקת רשומות קיימות מה - Database.
מבצעת את כל שלושתדוגי )…( DataAdapter.Update המתודה • העידכונים.
![Page 61: ADO.NET](https://reader035.vdocuments.net/reader035/viewer/2022062408/56813b0a550346895da3b004/html5/thumbnails/61.jpg)
61
Disconnected Scenario – Working With DB
Databaseשלב ג – עידכון ה- הללו ידנית.Command ניתן להגדיר את מחלקות ה- • אשר תייצר לנו CommandBuilder ניתן להיעזר במחלקה •
אותם. מחלקה זו מסוגלת לייצר את שלושת השאילתות בצורה •
אוטומטית Select ב- JOIN בתנאי שלא השתמשנו בשאילתת
Command.
![Page 62: ADO.NET](https://reader035.vdocuments.net/reader035/viewer/2022062408/56813b0a550346895da3b004/html5/thumbnails/62.jpg)
62
Disconnected Scenario – Working With DB
Databaseשלב ג – עידכון ה-
string cn_str = "Data Source=\"PhoneBook.mdb\";Provider=\"Microsoft.Jet.OLEDB.4.0\";";
string query = "SELECT * FROM Persons";OleDbDataAdapter adapter = new OleDbDataAdapter)query, cn_str(;
OleDbCommandBuilder builder = new OleDbCommandBuilder)adapter(;adapter.InsertCommand = builder.GetInsertCommand)(;adapter.UpdateCommand = builder.GetUpdateCommand)(;adapter.DeleteCommand = builder.GetDeleteCommand)(;
adapter.Update)ds,"Persons"(;
![Page 63: ADO.NET](https://reader035.vdocuments.net/reader035/viewer/2022062408/56813b0a550346895da3b004/html5/thumbnails/63.jpg)
63
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.
![Page 64: ADO.NET](https://reader035.vdocuments.net/reader035/viewer/2022062408/56813b0a550346895da3b004/html5/thumbnails/64.jpg)
64
Data Relations :Data Cacheציינו שתי דרישות מה-
הדרישה הראשונה :
.Databaseמבנה מידע דומה ככל הניתן לייצוג המידע ב-
עונה DataSetמבנה המחלקה
על הדרישה זו.
![Page 65: ADO.NET](https://reader035.vdocuments.net/reader035/viewer/2022062408/56813b0a550346895da3b004/html5/thumbnails/65.jpg)
65
Data Relations הדרישה השניה :
.Databaseהתנהגות דומה להתנהגות של ה-
במה דרישה זו באה לידי ביטוי : (.DataColumn – הקפדה על האילוצים )מובנה במחלקה 1
בעלת מפתח זהה לרשומה אשר כבר קיימת יעורר Database* ניסיון להוסיף רשומה חדשה ל- חריגה.
* רשומה חדשה אינה מכילה שדה חובה. * חריגה מטווח ערכים של שדה מסויים ברשומה חדשה.
Foreign – ניסיון להוסיף רשומה חדשה אשר מכילה מפתח זר )3Key.בניגוד לקשרים עם טבלת האם יעורר חריגה )
![Page 66: ADO.NET](https://reader035.vdocuments.net/reader035/viewer/2022062408/56813b0a550346895da3b004/html5/thumbnails/66.jpg)
66
Data Relations הדרישה השניה :
.Databaseהתנהגות דומה להתנהגות של ה-
Relational Database.הנו מסד נתונים המכיל טבלאות וקשרים בין טבלאות
לדוגמה :
Personsכל ניסיון להוסיף רשומה חדשה לטבלה Cities אשר אינו קיים בטבלה CityIDאשר מכילה יעורר חריגה.
![Page 67: ADO.NET](https://reader035.vdocuments.net/reader035/viewer/2022062408/56813b0a550346895da3b004/html5/thumbnails/67.jpg)
67
Data Relations הדרישה השניה :
.Databaseהתנהגות דומה להתנהגות של ה-
המטרה:שמירה על שלמות הנתונים.
או על נכונות הנתונים.
![Page 68: ADO.NET](https://reader035.vdocuments.net/reader035/viewer/2022062408/56813b0a550346895da3b004/html5/thumbnails/68.jpg)
68
Data Relationsכאשר מבצעים קריאה לשתי טבלאות או יותר )פעולה שגרתית
לחלוטין(, נטענים לזיכרון מבנה הטבלה והנתונים, אולם לא נטענים.Databaseהקשרים המוגדרים ב-
הסכנה: Personsניסיון להוסיף רשומה חדשה לטבלה
Cities אשר אינו קיים בטבלה CityIDאשר מכילה
יתקבל ואינו יעורר חריגה.
![Page 69: ADO.NET](https://reader035.vdocuments.net/reader035/viewer/2022062408/56813b0a550346895da3b004/html5/thumbnails/69.jpg)
69
Data Relations DataRelationהמחלקה
נגדיר קשרים בין טבלאות DataRelationבאמצעות המחלקה • .DataSetב-
אינם חייבים להיות חופפים DataSetהקשרים המוגדרים ב- • .Databaseלקשרים המוגדרים ב-
קשרים בין טבלאות אשר נקראו מ- DataSetניתן להגדיר ב- •Database שונים, או מקבצי XML .או שילוב בין השניים
![Page 70: ADO.NET](https://reader035.vdocuments.net/reader035/viewer/2022062408/56813b0a550346895da3b004/html5/thumbnails/70.jpg)
70
Data Relationsדוגמה:
m_PersonsAdapter.Fill)m_DataSet,"Persons"(;
m_CitiesAdapter.Fill)m_DataSet,"Cities"(;
m_DataSet.Relations.Add)"CitiesPersons“,m_DataSet.Tables["Cities"].Columns["CityID"],
m_DataSet.Tables["Persons"].Columns["CityID"](;
![Page 71: ADO.NET](https://reader035.vdocuments.net/reader035/viewer/2022062408/56813b0a550346895da3b004/html5/thumbnails/71.jpg)
71
Data Relations על מנת לשמור על שלמות המידע:DataRelationsניתן לנצל את ה- •
כאשר השדה DataTable Persons חדש ל- DataRow כל ניסיון להוסיף CityID -מציין עיר שלא קיימת ב Cities DataTable.יעורר חריגה
על מנת נווט בין הטבלאות:DataRelationsניתן לנצל את ה- •
ds.Tables[“Cities”].Rows(0).GetChildRows(“CitiesPersons");ds.Tables[“Persons”].Rows(0).GetParentRow (“CitiesPersons");
![Page 72: ADO.NET](https://reader035.vdocuments.net/reader035/viewer/2022062408/56813b0a550346895da3b004/html5/thumbnails/72.jpg)
72
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.
![Page 73: ADO.NET](https://reader035.vdocuments.net/reader035/viewer/2022062408/56813b0a550346895da3b004/html5/thumbnails/73.jpg)
73
Data View•DataView .מאפשר להציג את המידע שבטבלה בצורות שונות( .RowStateמאפשר לבצע מיון וסינון )על פי שדות או • נוצר מטבלה DataView , כל DataViewsמכל טבלה ניתן לייצר מספר •
אחת בודדה.
DataView view = new DataView)m_DataSet.Tables["Persons"](;
view.RowFilter = "CityID = 1";
dataGrid1.DataSource = view;
DataView view = new DataView)m_DataSet.Tables["Persons"](;
view.RowFilter = "CityID = 1";
view.Sort = "LastName DESC";
dataGrid1.DataSource = view;
![Page 74: ADO.NET](https://reader035.vdocuments.net/reader035/viewer/2022062408/56813b0a550346895da3b004/html5/thumbnails/74.jpg)
74
Data View
![Page 75: ADO.NET](https://reader035.vdocuments.net/reader035/viewer/2022062408/56813b0a550346895da3b004/html5/thumbnails/75.jpg)
75
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.
![Page 76: ADO.NET](https://reader035.vdocuments.net/reader035/viewer/2022062408/56813b0a550346895da3b004/html5/thumbnails/76.jpg)
76
Connected Scenarioבמערכות מחוברות התוכנית אינה •
לכל אורך Databaseמתנתקת מה-תהליך העבודה.
Data Source
XxxConnectionXxxDataReader XxxCommand
![Page 77: ADO.NET](https://reader035.vdocuments.net/reader035/viewer/2022062408/56813b0a550346895da3b004/html5/thumbnails/77.jpg)
77
יתרונותתמיד עובדים עם המידע העדכני ביותר.•כמעט ואין צורך לטפל בקונפליקטים המתרחשים בין •
לקוחות שונים המטפלים באותו המידע.הפעולות מול מקור המידע מתבצעות במהירות.•
חסרונותלא ניתן להעביר בקלות יחידות מידע ממחשב לקוח אחד •
לשני.קיימת תלות בנגישותו של מקור המידע.•
Connected Scenario
![Page 78: ADO.NET](https://reader035.vdocuments.net/reader035/viewer/2022062408/56813b0a550346895da3b004/html5/thumbnails/78.jpg)
78
:במחלקות ניעזרFull Connectedגם בעבודה כ-
XxxCommand, XxxConnection.
.XxxDataReaderבנוסף אליהן ניעזר במחלקה
תפקידה לקרוא את תוצאת השאילתא אשר אובייקט ה- Command -העביר ל Database.
מבצע את XxxDataReaderכל עוד האובייקט מהמחלקה חייב להיות פתוח.Databaseעבודתו הקשר ל-
חובה לסגור את הקישוריות ל- Databaseבסיום העבודה מול ה- Database.
(.Wizards הינה ידנית )אין Full Connectedכל העבודה כ-
Connected Scenario
![Page 79: ADO.NET](https://reader035.vdocuments.net/reader035/viewer/2022062408/56813b0a550346895da3b004/html5/thumbnails/79.jpg)
79
XxxDataReaderהמחלקה .Full Connected Modeניעזר בה על מנת לקרוא מידע ב- •.Read Only ו- Forward Only היא DataReaderהמחלקה • .)(Command.ExecuteReaderנוצרת על ידי המתודה •
Connected Scenario
![Page 80: ADO.NET](https://reader035.vdocuments.net/reader035/viewer/2022062408/56813b0a550346895da3b004/html5/thumbnails/80.jpg)
80
XxxDataReaderהמחלקה
דוגמה :
Connected Scenario
SqlDataReader myReader; myReader = myCommand.ExecuteReader)(; while )myReader.Read)(( { Console.WriteLine)myReader[“FieldName1”] + ", " + myReader[“FieldName2”](; } myReader.Close)(; myConnection.Close)(;