ado.net

Post on 05-Jan-2016

45 Views

Category:

Documents

2 Downloads

Preview:

Click to see full reader

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

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?

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

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

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

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

10

What Is ADO.NET?

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

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

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בתהליך העבודה עם

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

Providers Data , 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ומספר מחלקות

.Database מול ה- Nativeהמטרה היא לעבוד • ו- Connection ,Command יש מחלקות Databaseלמספר סוגים של •

DataAdapter המיועדים לעבודה רק איתם, מחלקות אלו עברו מסוג מוגדר.Databaseאופטימיזציה לעבודה עם

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

אחד , אנו יודעים כיצד לעבוד Databaseשם המחלקה, למדנו לעבוד מול .Databasesמול שאר ה-

20

Disconnected Scenario – Data Providers

:OleDBמשפחת ה- OleDbConnection, OleDbCommand, OleDbDataAdapter

התומך ב- Databaseבאמצעות מחלקות אלו ניתן לגשת לכל Oledb,

Oracle,Access,SqlServer,MySql,וכו

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

מולו.

וכו.SqlServer 6.0 או Accessלדוגמה : בעבודה עם

מחלקות אלו מוגדרות במרחב השמות 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 Stored( או פרוצדורה מאוחסנת )Queryתפקיד מחלקה זו להריץ שאילתא )

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

SqlCommand.ConnectionSqlCommand.CommandTextSqlCommand.CommandType

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

SqlCommand.ExecuteReader)(SqlCommand. ExecuteNonQuery)(

SqlCommand.ExecuteScalar)(

27

Disconnected Scenario – Data Providers

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

SqlCommand.Connection

קובע Command , אובייקט ה- Connectionייחוס למחלקת ה- קובע היכן לבקש .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התהליך והמחלקות המשתתפות:

SqlConnectionSqlConnection

SqlDataAdapterSqlDataAdapter DataSetDataSet

SQL Server 2000

SqlCommandSqlCommand

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

DataColumnDataRow

DataRelation

37

Disconnected Scenario – Data Cache

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

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

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

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

38

Disconnected Scenario – Data Cache

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

ConstraintsConstraints DataConstraintsDataConstraints

ColumnsColumns DataColumnDataColumn

DataSetDataSet

TablesTables DDataataTableTable

Object

Collection

RelationsRelations DataRelationDataRelation

RowsRows DataRowDataRow

PPrimaryKeyrimaryKey DataRow[]DataRow[]

39

Disconnected Scenario – Data Cache

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

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

DataSetDataSet

TablesTables

RelationsRelations

40

Disconnected Scenario – Data Cache

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

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

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

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

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

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

41

Disconnected Scenario – Data Cache

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

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

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

42

Disconnected Scenario – Data Cache

:DataTableמבנה המחלקה הוא אוסף של אובייקטיםColumnsהאוסף •

.DataColumn מהמחלקה מתארת שדה בודד בטבלה.DataColumnהמחלקה •( הטבלה.Schema מתאר את מבנה )Columnsהאוסף • DataConstraint הוא אוסף של אובייקטים מהמחלקה Constraintsהאוסף •

. ,Length, AllowDbNull מייצגת אילוץ בודד )DataConstraintהמחלקה •

Required.) .DataRow הוא אוסף של אובייקטים מהמחלקה Rowsהאוסף • מייצגת רשומה בודדה.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 לזיכרון והתנתקות מה- בשלבים.DataAdapter מתבצעת על ידי ה- DataSetבניית ה- • DataSet מתווסף ל- )…(DataAdapter.Fill בכל קריאה למתודה •

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

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

48

CommandCommand

SelectCommand UpdateCommand InsertCommand DeleteCommand

DataAdapter

CommandCommand CommandCommand CommandCommand

ConnectionConnection

Database

DataReaderDataReader

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)(;

}

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( { … }

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(;

53

Disconnected Scenario – Working With DB

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

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

.DataBaseמה-

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

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

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

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

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

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

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

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)(;

כנ"ל לשדות השונים.

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המתודה

56

Disconnected Scenario – Working With DB

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

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

או :

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

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(;

58

Disconnected Scenario – Working With DB

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

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

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

59

Disconnected Scenario – Working With DB

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

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

:Command לאובייקט SelectCommand

UpdateCommand InsertCommand

DeleteCommand

60

Disconnected Scenario – Working With DB

Databaseשלב ג – עידכון ה- דאגנו להגדיר אתDataAdapter כאשר קראנו מידע באמצעות ה- •

.SelectCommand ה- עושה בו שימוש.)…(DataAdapter.Fillהמתודה

ניעזר במתודה Database כאשר נרצה לעדכן את ה- • DataAdapter.Update )…(. מתודה זו עושה שימוש ב:•

UpdateCommand -לעידכון רשומות קיימות ב – Database . InsertCommand-להוספת רשומות חדשות ל - Database. DeleteCommand -למחיקת רשומות קיימות מה - Database.

מבצעת את כל שלושתדוגי )…( DataAdapter.Update המתודה • העידכונים.

61

Disconnected Scenario – Working With DB

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

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

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

Command.

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"(;

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.

64

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

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

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

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

על הדרישה זו.

65

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

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

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

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

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

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

66

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

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

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

לדוגמה :

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

67

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

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

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

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

68

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

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

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

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

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

69

Data Relations DataRelationהמחלקה

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

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

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

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"](;

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");

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.

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;

74

Data View

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.

76

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

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

Data Source

XxxConnectionXxxDataReader XxxCommand

77

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

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

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

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

Connected Scenario

78

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

XxxCommand, XxxConnection.

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

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

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

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

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

Connected Scenario

79

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

Connected Scenario

80

XxxDataReaderהמחלקה

דוגמה :

Connected Scenario

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

top related