ADO.NET

80
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 Presentation

Transcript of ADO.NET

Page 1: ADO.NET

ADO.NET

Page 2: 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.

Page 3: ADO.NET

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

4

ADO.NET, Why?

אפליקציות מודרניות עושות שימוש בהרבה •מאוד מידע.

)אחד או Databaseהמידע יכול להגיע מ- •( וכו'.XMLיותר(, מהאינטרנט )קבצי

, אולם זו Databaseניתן לעבוד ישירות מול ה- •עבודה מורכבת וקשה.

ולכן ,לאורך השנים, פותחו טכנולוגיות שונות • .Databasesהמקלות על העבודה מול

Page 5: ADO.NET

5

ADO.NET, Why?

- DBטכנולוגיות לעבודה מול אבולוציה

Page 6: ADO.NET

6

ADO.NET, Why?

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

Page 7: ADO.NET

7

ADO.NET, Why?

•ADO.NET.הינה הטכנולוגיה האחרונה באבולוציה זו מותאמת לדרישות מודרניות ולארכיטקטורה מודרנית •

Webשל טיפול במספר רב של מערכות מידע דרך ה- .

Page 8: ADO.NET

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

9

What Is ADO.NET?

.XML ובקבצי Databaseטכנולוגיה לטיפול ב- •אוסף של מחלקות, מבנים, ממשקים המספקים גישה •

מתקדמת וגמישה לטיפול במידע.טכנולוגיה העונה על צרכים מודרניים.•מתוכננת לעבוד במודל המכונה•

Disconnected environmentsמסוגלת לעבוד גם במודל הנקרא•

Connected environments .XMLתמיכה מלאה ב- •

Page 10: ADO.NET

10

What Is ADO.NET?

מרחבי השמותSystem.Data

.ADO.NET של עבודה עם Root Namespaceה-

System.Data.SqlClient מרחב שמות המספק אוסף של מחלקות, מבנים ממשקים

.SqlServer 2000לעבודה מול

System.Data.OleDb

מרחב שמות המספק אוסף של מחלקות, מבנים ממשקים .OleDbלעבודה מול כל מסד נתונים התומך ב-

Page 11: ADO.NET

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

12

Disconnected Scenario

הטיפול במערכות מידע יכול להיות מבוסס על • , או Databaseחיבור קבוע בין התוכנית לבין ה-

.Databaseחיבור מזדמן בין התוכנית לבין ה- .Databaseבפרק זה עוסק בחיבור מזדמן ל- • מכונהDatabaseצורת עבודה זו מול •

Disconnected environment )מערכות מנותקות(

.ADO.NET והיא ברירת המחדל בעבודה עם

Page 13: ADO.NET

13

Disconnected Scenario

במערכות מנותקות טוענים מה- Database לזיכרון המחשב את המידע

הדרוש לתוכנית לצורך עיבוד התוכנית ומתנתקים, כל העיבוד מתבצע על זיכרון

המחשב, בסיום העיבוד מתחברים שומרים את המידע Databaseחזרה ל-

ומתנתקים.Databaseהמעובד ב-

Page 14: ADO.NET

14

Disconnected Scenario

יתרונותניתן בקלות להעביר יחידות מידע ממחשב לקוח אחד •

לשני.אין תלות בנגישותו של מקור המידע.•משפר את הגמישות של התוכנית.•משפר את הביצועים של התוכנית.•

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

שונים המטפלים באותו המידע.

Page 15: ADO.NET

15

Disconnected Scenario

המחלקות: נעבוד עם מספר מחלקות.Databaseבתהליך העבודה עם

את כל המחלקות ניתן לשייך לאחת משתי המשפחות הבאות:

Providers Data , Data Cache.

:Data Providersמחלקות ה-

.Database תפקידם להגדיר ולנהל את הקשר בין התוכנית ל-

:Data Cacheמחלקות ה-

תפקידם להגדיר ולנהל את המידע כל עוד הוא שוכן בזיכרון.

Page 16: ADO.NET

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

17

Disconnected Scenario – Data Providers

.Databaseתפקידם להגדיר ולנהל את הקשר בין התוכנית ל-

במשפחה זו, בין השאר, נמצא את המחלקות המרכזיות הבאות:

XxxConnection

XxxCommand

XxxDataAdapter

Page 18: ADO.NET

18

Disconnected Scenario – Data Providers

:תפקידים, Data Providersמחלקות ה- XxxConnection - -ניהול ההתחברות לDatabase.

XxxCommand - ( הבקשה למידע, הרצת שאילתאQuery ,)( על ה- Stored Procedureאו פרוצדורה מאוחסנת )

Database.

XxxDataAdapter – -בניית הCache על פי השאילתא , השאילתא רצה על ה- Commandהמוגדרת באובייקט ה-

Database -שמוגדר באובייקט ה Connection.

Page 19: ADO.NET

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

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

21

Disconnected Scenario – Data Providers

:Sqlמשפחת ה- SqlConnection, SqlCommand, SqlDataAdapter

)החל מגירסה Sql Serverבאמצעות מחלקות אלו ניתן לגשת ל- 7.)

SqlServerעבודה אם מחלקות אלו מותאמת לעבודה רק עם .OleDbולכן נקבל מהירות גישה גבוהה יותר מאשר עם

מחלקות אלו מוגדרות במרחב השמות System.Data.SqlClient.

Page 22: ADO.NET

22

Disconnected Scenario – Data Providers

SqlConnection Databaseלפני שמריצים שאילתא יש להתחבר ל-

.Databaseמחלקה זו אחראית על ההתחברות ל-

מחלקה זו מכילה מאפיין חשוב אחד :

SqlConnection.ConnectionString

מחלקה זו מכילה שתי מתודות עיקריות :

SqlConnection.Open)(

SqlConnection.Close)(

Page 23: ADO.NET

23

Disconnected Scenario – Data Providers

SqlConnection: המחלקה מכילה מאפיין אחד חשוב

SqlConnection.ConnectionString: מחרוזת זו מגדירה פרמטרים שונים וחיוניים להתחברות ל-

Database -כגון: סוג ה Database -שם ה , Database שם , של שרת המידע וכו'. IPמשתמש וסיסמה , כתובת

Page 24: ADO.NET

24

Disconnected Scenario – Data Providers

SqlConnection: מחלקה זו מכילה שתי מתודות עיקריות :

SqlConnection.Open)(

לצורך ביצוע שאילתא וקבלת תשובה Databaseמתחברת ל- (Result set או Scalar)

SqlConnection.Close)(

בסיום העבודה עמו.Databaseניתוק התוכנית מה –

Page 25: ADO.NET

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

26

Disconnected Scenario – Data Providers

SqlCommand Stored( או פרוצדורה מאוחסנת )Queryתפקיד מחלקה זו להריץ שאילתא )

Procedure -על ה )Database.מחלקה זו מכילה מספר מאפיינים חשובים:

SqlCommand.ConnectionSqlCommand.CommandTextSqlCommand.CommandType

מחלקה זו מכילה מספר מתודות עיקריות :

SqlCommand.ExecuteReader)(SqlCommand. ExecuteNonQuery)(

SqlCommand.ExecuteScalar)(

Page 27: ADO.NET

27

Disconnected Scenario – Data Providers

SqlCommand: מחלקה זו מכילה שני מאפיינים מרכזיים :

SqlCommand.Connection

קובע Command , אובייקט ה- Connectionייחוס למחלקת ה- קובע היכן לבקש .Connectionמה לבקש, אובייקט ה-

SqlCommand.CommandText

הבקשה - גוף השאילתא או הפרוצדורה.

SqlCommand.CommandType

קובע את סוג הבקשה , שאילתא רגילה או פרוצדורה מאוחסנת.

Page 28: ADO.NET

28

Disconnected Scenario – Data Providers

SqlCommand: מחלקה זו מכילה שלוש מתודות מרכזיות :

SqlCommand.ExecuteReader)(

Resultמתודה זו מריצה שאילתא אשר מצפה לאוסף רשומות )Set.)

SqlCommand. ExecuteNonQuery)(

ושאילתות עידכון,מחיקה Databaseשאילתות עידכון מבנה ה –והוספת רשומות.

SqlCommand.ExecuteScalar)(

,Count, Sumהרצת שאילתא בעלת תשובה בודדה כגון : Average, Date'וכו

Page 29: ADO.NET

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

30

Disconnected Scenario – Data Providers

SqlDataAdapter המוגדר באובייקט Databaseהמידע הנדרש נקרא מ-

, פריטי המידע הנדרשים מוגדרים באובייקט Connectionה- .Commandמהמחלקה

הוא DataAdapterתפקידו הראשוני של האובייקט מהמחלקה אשר יכיל את המידע Data Cacheלבנות את אובייקט ה-

הנדרש בזיכרון התוכנית.

בסיום העיבוד.Databaseתפקידו השני הוא לעדכן את ה-

Page 31: ADO.NET

31

Disconnected Scenario – Data Providers

SqlDataAdapterמגדיר שתי מתודות מרכזיות :

SqlDataAdapter.Fill) … (

ולייצר את Databaseתפקיד מתודה זו לקרוא מידע מה – של התוכנית, מתודה זו מופעלת Data Cacheאובייקט ה-

בתחילת העיבוד.

SqlDataAdapter.Update) … (

תפקיד מתודה זו לשמור בסיום העיבוד את התוצאות ואו השינויים מופעלת בסוף העיבוד.Databaseב-

Page 32: ADO.NET

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

33

Disconnected Scenario – Data Providers SqlDataAdapter – דוגמה:

המשך:catch )Exception exc( { . . }

finally

{

cn.Close)(;

}

Page 34: ADO.NET

34

Disconnected Scenario – Data Providers

SqlDataAdapterהתהליך והמחלקות המשתתפות:

SqlConnectionSqlConnection

SqlDataAdapterSqlDataAdapter DataSetDataSet

SQL Server 2000

SqlCommandSqlCommand

Page 35: ADO.NET

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

36

Disconnected Scenario – Data Cache

:Data Cacheמחלקות ה- .System.Dataמוגדרות כולם במרחב השמות •מכילות את המידע בזיכרון התוכנית, התוכנית משתמשת •

במידע האגור בהן לצורך העיבוד ולכן אין לה צורך לפנות ל- Database :

DataSet DataTable

DataColumnDataRow

DataRelation

Page 37: ADO.NET

37

Disconnected Scenario – Data Cache

:Data Cacheמחלקות ה- .DataSetהמחלקה המרכזית היא המחלקה •שתי ציפיות מרכזיות ממחלקה זו :•

.Databaseא – מבנה מידע דומה ככל הניתן לייצוג המידע ב-

.Databaseב – התנהגות דומה להתנהגות של ה- באם ציפיות אלו יתמלאו ניתן לעבוד עם המידע בזיכרון •

על פי אותו מודל, מה שמאוד יקל על Databaseוהמידע ב- מפתחים שלא ייאלצו ללמוד מודלים שונים לטיפול במידע.

Page 38: ADO.NET

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

39

Disconnected Scenario – Data Cache

:DataSetמבנה המחלקה DataSet הרילאציוני כך גם המחלקה Databaseכמו המידע ב-

מורכבת מאוסף של טבלאות וקשרים ביניהם.

DataSetDataSet

TablesTables

RelationsRelations

Page 40: ADO.NET

40

Disconnected Scenario – Data Cache

:DataSetמבנה המחלקה

הוא אוסף של אובייקטים Tablesהאוסף •

.DataTable מהמחלקה מייצג טבלהDataTableכל אובייקט מהמחלקה •

בזיכרון. קיימים קשרים ביןDatabaseכמו שמקובל ב- •

המורכב Relations הטבלאות בזיכרון, הקשרים נשמרים באוסף

.DataRelation מאובייקטים מהמחלקה

Page 41: ADO.NET

41

Disconnected Scenario – Data Cache

:DataTableמבנה המחלקה DataTable האובייקט מהמחלקה DataBase טבלה ב- כמו

בנוי מאוסף של שדות המגדיר את DataSetהמייצג טבלה ב- מבנה הטבלה , אוסף של אילוצים על השדות, אוסף של

רשומות המכילות את המידע ומפתח ראשי אשר יכול להכיל יותר מאשר שדה אחד.

Page 42: ADO.NET

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

43

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

Page 44: ADO.NET

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

45

Disconnected Scenario – Working With DB

זוכרים את השלבים ? , קריאת המידע הנדרשDatabaseהתחברות ל- •

.Databaseוהעתקתו לזיכרון והתנתקות מה- פעולות אלו הן באחריותה של המחלקה•

DataAdapter. עיבוד המידע מתבצע על אובייקט מהמחלקה• DataSet -אשר נוצר על ידי ה DataAdapter ,

.DataBaseבזמן בעיבוד התוכנית מנותקת מה- Databaseבסיום העיבוד התחברות נוספת ל- •

.DataAdapterועידכונו על ידי האובייקט

Page 46: ADO.NET

46

Disconnected Scenario – Working With DB

ובחלוקה לשלביםDataSetשלב א – בניית ה-

, קריאת המידע הנדרש והעתקתו לזיכרון Databaseהתחברות ל- .Databaseוהתנתקות מה-

.DataAdapterפעולות אלו הן באחריותה של המחלקה

שלב ב - העיבוד אשר נוצר DataSetעיבוד המידע מתבצע על אובייקט מהמחלקה

, בזמן בעיבוד התוכנית מנותקת מה- DataAdapterעל ידי ה- DataBase.

DataBaseשלב ג – עידכון ה- ועידכונו על ידי Databaseבסיום העיבוד התחברות נוספת ל-

.DataAdapterהאובייקט

Page 47: ADO.NET

47

Disconnected Scenario – Working With DB

DataSetשלב א – בניית ה- , קריאת המידע הנדרש והעתקתוDatabase התחברות ל- •

.Database לזיכרון והתנתקות מה- בשלבים.DataAdapter מתבצעת על ידי ה- DataSetבניית ה- • DataSet מתווסף ל- )…(DataAdapter.Fill בכל קריאה למתודה •

.DataTable אובייקט חדש מהמחלקה ( ידנית.Relation לסיום נגדיר את הקשרים )• ישנם מספר צורות אפשריות ליישום שלב א' )כולן מאוד דומות(.•

על מנת לבצע שלב זה יש להכיר יותר לעומק את המחלקה• DataAdapter.

Page 48: ADO.NET

48

CommandCommand

SelectCommand UpdateCommand InsertCommand DeleteCommand

DataAdapter

CommandCommand CommandCommand CommandCommand

ConnectionConnection

Database

DataReaderDataReader

Disconnected Scenario – Working With DB

DataAdapterמבנה ה-

Page 49: ADO.NET

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

50

Disconnected Scenario – Working With DB

שלב א – המשך. . .

try

{

cn.Open)(;

adapter.Fill)ds, "Authors"(;

}

catch )SqlException exc ( { … }

finally

{

cn.Close)(;

}

Page 51: ADO.NET

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

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

53

Disconnected Scenario – Working With DB

שלב ב – העיבוד אשרDataSetעיבוד המידע מתבצע על אובייקט מהמחלקה

, בזמן בעיבוד התוכנית מנותקת DataAdapterנוצר על ידי ה-

.DataBaseמה-

בשלבי העיבוד השונים נבצע את הפעולות הבאות:

הצגת נתונים – הצגת המידע הקיים ברשומות הקיימות.

שינוי נתונים – שינוי נתונים הקיימים ברשומות הקיימות.

הוספת נתונים – הוספת רשומות חדשות.

מחיקת נתונים – מחיקת רשומה קיימת.

Databaseפעולות אלו מתבצעות בזיכרון ולכן ה- •

אינו מתעדכן בהם.

Page 54: ADO.NET

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

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

56

Disconnected Scenario – Working With DB

)שינוי הנתונים(שלב ב – העיבוד

לדוגמה:ds.Tables[“Persons”].Rows[0][“LastName”] = “Shoshana”;

או :

ds.Tables[0].Rows[0][1] = “Shoshana”;

Page 57: ADO.NET

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

58

Disconnected Scenario – Working With DB

)מחיקת רשומות( שלב ב – העיבודאיתור הרשומה המיועדת למחיקה:

DataRow[] arr = ds.Tables["Persons"].Select)"LastName = 'Sonya’(;

סימון הרשומה כמיועדת למחיקה )לא מחיקה פיזית(arr[0].Delete)(;

Page 59: ADO.NET

59

Disconnected Scenario – Working With DB

Databaseשלב ג – עידכון ה- .DataSet עד כה כל השינויים שנעשו נשמרו ב- • בסיום העבוד נרצה לשמור את המידע המעובד ב- •

Database. .)…(DataAdapter.Update לשם כך ניעזר במתודה • מכילה ארבעה ייחוסים DataAdapter כזכור, המחלקה •

:Command לאובייקט SelectCommand

UpdateCommand InsertCommand

DeleteCommand

Page 60: ADO.NET

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

61

Disconnected Scenario – Working With DB

Databaseשלב ג – עידכון ה- הללו ידנית.Command ניתן להגדיר את מחלקות ה- • אשר תייצר לנו CommandBuilder ניתן להיעזר במחלקה •

אותם. מחלקה זו מסוגלת לייצר את שלושת השאילתות בצורה •

אוטומטית Select ב- JOIN בתנאי שלא השתמשנו בשאילתת

Command.

Page 62: ADO.NET

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

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

64

Data Relations :Data Cacheציינו שתי דרישות מה-

הדרישה הראשונה :

.Databaseמבנה מידע דומה ככל הניתן לייצוג המידע ב-

עונה DataSetמבנה המחלקה

על הדרישה זו.

Page 65: ADO.NET

65

Data Relations הדרישה השניה :

.Databaseהתנהגות דומה להתנהגות של ה-

במה דרישה זו באה לידי ביטוי : (.DataColumn – הקפדה על האילוצים )מובנה במחלקה 1

בעלת מפתח זהה לרשומה אשר כבר קיימת יעורר Database* ניסיון להוסיף רשומה חדשה ל- חריגה.

* רשומה חדשה אינה מכילה שדה חובה. * חריגה מטווח ערכים של שדה מסויים ברשומה חדשה.

Foreign – ניסיון להוסיף רשומה חדשה אשר מכילה מפתח זר )3Key.בניגוד לקשרים עם טבלת האם יעורר חריגה )

Page 66: ADO.NET

66

Data Relations הדרישה השניה :

.Databaseהתנהגות דומה להתנהגות של ה-

Relational Database.הנו מסד נתונים המכיל טבלאות וקשרים בין טבלאות

לדוגמה :

Personsכל ניסיון להוסיף רשומה חדשה לטבלה Cities אשר אינו קיים בטבלה CityIDאשר מכילה יעורר חריגה.

Page 67: ADO.NET

67

Data Relations הדרישה השניה :

.Databaseהתנהגות דומה להתנהגות של ה-

המטרה:שמירה על שלמות הנתונים.

או על נכונות הנתונים.

Page 68: ADO.NET

68

Data Relationsכאשר מבצעים קריאה לשתי טבלאות או יותר )פעולה שגרתית

לחלוטין(, נטענים לזיכרון מבנה הטבלה והנתונים, אולם לא נטענים.Databaseהקשרים המוגדרים ב-

הסכנה: Personsניסיון להוסיף רשומה חדשה לטבלה

Cities אשר אינו קיים בטבלה CityIDאשר מכילה

יתקבל ואינו יעורר חריגה.

Page 69: ADO.NET

69

Data Relations DataRelationהמחלקה

נגדיר קשרים בין טבלאות DataRelationבאמצעות המחלקה • .DataSetב-

אינם חייבים להיות חופפים DataSetהקשרים המוגדרים ב- • .Databaseלקשרים המוגדרים ב-

קשרים בין טבלאות אשר נקראו מ- DataSetניתן להגדיר ב- •Database שונים, או מקבצי XML .או שילוב בין השניים

Page 70: ADO.NET

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

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

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

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

74

Data View

Page 75: ADO.NET

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

76

Connected Scenarioבמערכות מחוברות התוכנית אינה •

לכל אורך Databaseמתנתקת מה-תהליך העבודה.

Data Source

XxxConnectionXxxDataReader XxxCommand

Page 77: ADO.NET

77

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

לקוחות שונים המטפלים באותו המידע.הפעולות מול מקור המידע מתבצעות במהירות.•

חסרונותלא ניתן להעביר בקלות יחידות מידע ממחשב לקוח אחד •

לשני.קיימת תלות בנגישותו של מקור המידע.•

Connected Scenario

Page 78: ADO.NET

78

:במחלקות ניעזרFull Connectedגם בעבודה כ-

XxxCommand, XxxConnection.

.XxxDataReaderבנוסף אליהן ניעזר במחלקה

תפקידה לקרוא את תוצאת השאילתא אשר אובייקט ה- Command -העביר ל Database.

מבצע את XxxDataReaderכל עוד האובייקט מהמחלקה חייב להיות פתוח.Databaseעבודתו הקשר ל-

חובה לסגור את הקישוריות ל- Databaseבסיום העבודה מול ה- Database.

(.Wizards הינה ידנית )אין Full Connectedכל העבודה כ-

Connected Scenario

Page 79: ADO.NET

79

XxxDataReaderהמחלקה .Full Connected Modeניעזר בה על מנת לקרוא מידע ב- •.Read Only ו- Forward Only היא DataReaderהמחלקה • .)(Command.ExecuteReaderנוצרת על ידי המתודה •

Connected Scenario

Page 80: ADO.NET

80

XxxDataReaderהמחלקה

דוגמה :

Connected Scenario

SqlDataReader myReader; myReader = myCommand.ExecuteReader)(; while )myReader.Read)(( { Console.WriteLine)myReader[“FieldName1”] + ", " + myReader[“FieldName2”](; } myReader.Close)(; myConnection.Close)(;