SlideShare a Scribd company logo
1 of 30
Download to read offline
.Net ‫ב‬ ‫נתונים‬ ‫למסדי‬ ‫גישה‬
natankrasney@gmail.com
1
‫הקורס‬ ‫מבנה‬
●‫בפרט‬ relational database‫ו‬ ‫בכלל‬ database‫ל‬ ‫מבוא‬
●SQL ‫שפת‬
●MS SQL Server
●: ‫הבאות‬ ‫בטכנולוגיות‬ ‫נתונים‬ ‫ממסדי‬ ‫מידע‬ ‫ולהוציא‬ ‫להכניס‬ ‫מאפשר‬ ADO.Net
○ADO.Net data providers
■: ‫שכולל‬ System.Data.SqlClient ‫ל‬ ‫ששיך‬ MS SQL Server ‫מ‬ ‫וקריאה‬ ‫לכתיבה‬ ‫ממשק‬ - SqlClient
●SqlConnection
●SqlCommand
●SqlDataReader
■OracleClient
■...
○LINQ to SQL
○ADO.Net Entity Framework
natankrasney@gmail.com
2
? ‫זה‬ ‫את‬ ‫צריך‬ ‫ולמה‬ Database ‫זה‬ ‫מה‬
‫אותו‬ ‫לשמור‬ ‫רוצים‬ ‫ואנו‬ ‫סרטים‬ ‫להשכרת‬ ‫בחנות‬ ‫לקוחות‬ ‫רשימת‬ ‫לדוגמא‬ ‫מידע‬ ‫לנו‬ ‫יש‬
… ‫תמונה‬ , ‫מספר‬ , ‫טקסט‬ : ‫שונות‬ ‫בצורות‬ ‫להיות‬ ‫יכול‬ ‫המידע‬
? Database ‫צריך‬ ‫למה‬ ‫אז‬ - ‫בקבצים‬ ‫זה‬ ‫את‬ ‫לשמור‬ ‫אפשר‬
: Database‫ב‬ ‫שימוש‬ ‫יתרונות‬
●database ‫עם‬ scale up ‫לעשות‬ ‫ניתן‬ - ‫מידע‬ ‫גודל‬
●database‫ב‬ ‫אפשרי‬ ‫אבל‬ ‫זמנית‬ ‫בו‬ ‫אנשים‬ ‫מספר‬ ‫ידי‬ ‫על‬ ‫קובץ‬ ‫לעדכן‬ ‫בעייתי‬ ‫לדוגמא‬ - ‫המידע‬ ‫עדכון‬ ‫קלות‬
●‫הגדלים‬ ‫את‬ ‫להגביל‬ ‫אפשר‬ databse‫ב‬ ‫ואילו‬ ‫כרצוננו‬ ‫ארוך‬ ‫שם‬ ‫לקובץ‬ ‫להכניס‬ ‫אפשר‬ - ‫המידע‬ ‫תקפות‬
●‫על‬ ‫לדוגמא‬ ‫מוגן‬ database ‫ואילו‬ ‫המחשב‬ ‫על‬ ‫שעובד‬ ‫למי‬ ‫כלל‬ ‫בדרך‬ ‫נגיש‬ ‫מחשב‬ ‫על‬ ‫קובץ‬ - (security) ‫מידע‬ ‫אבטחת‬
‫ססמה‬ ‫ידי‬
●‫קבצים‬ ‫עם‬ ‫בעייתי‬ ‫יותר‬ ‫וזה‬ forign key ‫בעזרת‬ ‫לדוגמא‬ database‫ב‬ ‫מידע‬ ‫לשתף‬ ‫קל‬ (redundancy) ‫יתרות‬
●backup  restore ‫ב‬ ‫תמיכה‬
natankrasney@gmail.com
3
relational database ‫טרמינילוגיה‬
natankrasney@gmail.com
4
‫גם‬ ‫נקרא‬
Record
‫טבלה‬ ‫גם‬ ‫נקרא‬
Relational Databases‫ל‬ ‫דוגמאות‬
MS SQL server
MS Access
SQLite
MySQL
Oracle
Sybase
natankrasney@gmail.com
5
relational database ‫חשובים‬ ‫מושגים‬
natankrasney@gmail.com
6
‫הסבר‬ ‫מושג‬
‫בטבלה‬ ‫לשורה‬ unique identifier - ‫משמעי‬ ‫חד‬ ‫מציין‬ .‫בטבלה‬ ‫שדה‬ Primary Key
‫אחרת‬ ‫בטבלה‬ primary key‫ל‬ ‫זהה‬ .‫בטבלה‬ ‫שדה‬ Foreign Key
‫בטבלה‬ ‫ומאוחסן‬ ‫שמתבצע‬ ‫קוד‬ Stored Procedure
‫ענינים‬ ‫תוכן‬ ‫דרך‬ ‫בספר‬ ‫מהירה‬ ‫לגישה‬ ‫בדומה‬ ‫למידע‬ ‫מהירה‬ ‫גישה‬ ‫מאפשר‬ Index
‫מצליחות‬ ‫וכולן‬ ‫במידה‬ ‫רק‬ ‫שמתבצעות‬ ‫פעולות‬ ‫של‬ ‫אוסף‬ Transaction
Relational Database
‫ועמודות‬ ‫שורות‬ ‫בהן‬ ‫שיש‬ ‫טבלאות‬ ‫על‬ ‫מבוסס‬ Relational Database
Relational Algebra ‫מ‬ ‫מגיע‬ Relation ‫המושג‬
natankrasney@gmail.com
7
Students ‫טבלת‬
Classes ‫טבלת‬
primary key
‫טבלאות‬ ‫בין‬ ‫קשר‬ ‫תיאור‬
natankrasney@gmail.com
8
Enrollments ‫טבלת‬
natankrasney@gmail.com
9
‫בטבלת‬ ‫עמודות‬ ‫שתי‬ ‫הצגת‬
‫את‬ ‫המתארת‬ Enrollments
‫סטודנטים‬ ‫של‬ ‫ההשתתפות‬
‫בקורסים‬
foreign keys
SQL
SQL - Structured Query Language
‫סטנדרט‬ ‫הוא‬ SQL
CRUD ‫פעולות‬ ‫קרי‬ database‫מ‬ ‫מידע‬ ‫ולקרוא‬ ‫לשנות‬ , ‫לשמור‬ ‫שפה‬
database ‫ליצור‬ ‫מאפשר‬
stored procedure ‫ליצור‬ ‫מאפשר‬
natankrasney@gmail.com
10
‫חשובות‬ ‫פעולות‬
natankrasney@gmail.com
11
‫הסבר‬ ‫פעולה‬
database ‫מה‬ ‫מידע‬ ‫קורא‬ Select
database ‫ב‬ ‫מידע‬ ‫משנה‬ Update
database ‫מה‬ ‫מידע‬ ‫מוחק‬ Delete
database ‫ל‬ ‫מידע‬ ‫מכניס‬ Insert Into
database ‫יוצר‬ Create Database
database ‫משנה‬ Alter Database
‫טבלה‬ ‫יוצר‬ Create Table
‫טבלה‬ ‫משנה‬ Alter Table
‫טבלה‬ ‫מוחק‬ Drop Table
Northwind ‫בשם‬ ‫ידוע‬ ‫הדגמות‬ Database ‫התקנת‬
‫פי‬ ‫על‬ ‫התקנה‬ ‫ביצוע‬
https://docs.microsoft.com/en-us/visualstudio/data-tools/install-sql-server-sample-
databases
"To restore a database from a .bak file in Visual Studio" ‫של‬ ‫לקטע‬ ‫להכנס‬
‫התקין‬ ‫זה‬ ‫אבל‬ 4 ‫סעיף‬ ‫אחרי‬ ‫שגיאה‬ ‫נתן‬ ‫הוא‬
View->SQL server object explorer ‫דרך‬ ‫מותקן‬ database‫ה‬ ‫את‬ ‫לראות‬ ‫ניתן‬
‫לדוגמא‬ SQL ‫בשפת‬ New Query ‫לעשות‬ ‫ימני‬ ‫עכבר‬ ‫ועם‬ ‫אותו‬ ‫לסמן‬ ‫אפשר‬
select count(*) from Categories
8 ‫מחזיר‬ ‫אשר‬
natankrasney@gmail.com
12
Select
natankrasney@gmail.com
13
Northwind ‫בשימוש‬ ‫דוגמה‬ ‫הסבר‬ ‫פעולה‬
select City , Country from Customers; ‫מידע‬ ‫בוחר‬ Select
select Distinct ShipCountry from Orders; ‫עצמו‬ ‫על‬ ‫חוזר‬ ‫שאינו‬ ‫מידע‬ ‫בוחר‬ Select
Distinct
SELECT * FROM Customers Where Country
= 'Brazil';
‫יחיד‬ ‫תנאי‬ ‫שמקיים‬ ‫מידע‬ ‫בוחר‬ Select
Where
SELECT * FROM Orders Where
ShipCountry='Brazil' And Freight > 30
‫תנאים‬ ‫מספר‬ ‫שמקיים‬ ‫מידע‬ ‫בוחר‬ Select And
, Or , Not
SELECT * FROM Orders Where
ShipCountry='Brazil' And Freight > 30 Order
By Freight ASC;
‫עמודה‬ ‫פי‬ ‫על‬ ‫שממוין‬ ‫מידע‬ ‫בוחר‬ Order By
‫מחרוזת‬ ‫סימון‬
‫בעזרת‬ ‫תמיד‬
‫מרכאות‬
‫בודדות‬
Insert, Update , Delete
natankrasney@gmail.com
14
‫דוגמא‬ ‫הסבר‬ ‫פעולה‬
INSERT INTO Customers
(CustomerId,CompanyName, ContactName,
Address, City, PostalCode, Country)
VALUES ('NYNK','Cardinal', 'Tom B. Erichsen',
'Skagen 21', 'Stavanger', '4006', 'Germany');
‫בטבלה‬ ‫שורה‬ ‫יוצר‬
‫פי‬ ‫על‬ Customers
‫העמודות‬
Insert
UPDATE Customers
SET ContactName = 'Alfred Schmidt', City=
'Frankfurt'
WHERE CustomerID = 'NYNK';
‫אפשר‬ .‫בטבלה‬ ‫שורה‬ ‫שינוי‬
‫שורות‬ ‫מספר‬ ‫לשנות‬ ‫גם‬
‫אחת‬ ‫בפעולה‬
Update
DELETE FROM Customers
WHERE CustomerID='NYNK';
.‫מטבלה‬ ‫שורה‬ ‫מחיקת‬
‫מספר‬ ‫גם‬ ‫למחוק‬ ‫אפשר‬
‫אחת‬ ‫בפעולה‬ ‫שורות‬
Delete
Join
‫ביניהן‬ ‫משותפת‬ ‫עמודה‬ ‫על‬ ‫בהתבסס‬ ‫יותר‬ ‫או‬ ‫טבלאות‬ ‫משתי‬ ‫שורות‬ ‫לבחור‬ ‫מאפשר‬ Join
inner join ‫ל‬ ‫דוגמה‬
SELECT Orders.OrderID, Customers.CompanyName, Orders.OrderDate
FROM Customers
INNER JOIN Orders ON Orders.CustomerID=Customers.CustomerID;
natankrasney@gmail.com
15
‫בטבלאות‬ ‫מהעמודות‬ ‫חלק‬ ‫יוצגו‬
‫שיש‬ ‫ושורות‬ Orders ‫ו‬ Customers
CustomerId ‫אותו‬ ‫להן‬
? ADO.Net ‫זה‬ ‫מה‬
database ‫עם‬ ‫תקשורת‬ ‫מאפשרת‬ ‫אשר‬ ‫מיקרוסופט‬ ‫שפתחה‬ ‫טכנולוגיה‬ ‫היא‬ ADO.Net
.Net ‫מ‬ ‫כחלק‬ ‫שפותחה‬ ‫טכנולוגיה‬ ‫זו‬
‫שונים‬ relational database ‫מול‬ ‫בעבודה‬ ‫פופולרית‬ ‫היא‬
‫מכיל‬ ADO.Net ‫טכנולוגיות‬ ‫אילו‬ ‫ראינו‬ ‫הפתיחה‬ ‫בשקף‬
: ‫הבאות‬ ‫במחלקות‬ ‫ונשתמש‬ Microsoft SQL Server ‫מול‬ ‫העבודה‬ ‫את‬ ‫נציג‬ ‫נראה‬ ‫הזה‬ ‫בקורס‬
●‫קשר‬ ‫שמאפשר‬ File‫ל‬ ‫לוגית‬ ‫)דומה‬ Database ‫עם‬ ‫קשר‬ ‫יצירת‬ ‫מאפשר‬ - SqlConnection
(‫קובץ‬ ‫עם‬
●SQL ‫פקודת‬ ‫מייצג‬ - SqlCommand
●‫ל‬ ‫לוגית‬ ‫)דומה‬ Database‫מ‬ ‫בלולאה‬ ‫שורות‬ ‫לקרוא‬ ‫מאפשר‬ - SqlDataReader
(StreamReadernatankrasney@gmail.com
16
Sql Client
ADO.Net ‫ל‬ ‫שלו‬ ‫השייכות‬ ‫ואת‬ SqlClient ‫מהו‬ ‫הפתיחה‬ ‫בשקף‬ ‫ראינו‬
‫של‬ ‫הבאות‬ ‫במחלקות‬ ‫ונשתמש‬ Microsoft SQL Server ‫מול‬ ‫העבודה‬ ‫את‬ ‫נציג‬ ‫נראה‬ ‫הזה‬ ‫בקורס‬
:System.Data.SqlClient ‫בשם‬ namespace‫ל‬ ‫שייכות‬ ‫אשר‬ SqlClient
●‫קשר‬ ‫שמאפשר‬ File‫ל‬ ‫לוגית‬ ‫)דומה‬ Database ‫עם‬ ‫קשר‬ ‫יצירת‬ ‫מאפשר‬ - SqlConnection
(‫קובץ‬ ‫עם‬
●SQL ‫פקודת‬ ‫מייצג‬ - SqlCommand
●‫ל‬ ‫לוגית‬ ‫)דומה‬ Database‫מ‬ ‫בלולאה‬ ‫שורות‬ ‫לקרוא‬ ‫מאפשר‬ - SqlDataReader
(StreamReader
natankrasney@gmail.com
17
‫העבודה‬ ‫סביבת‬
ASP.Net MVC ‫של‬ ‫פרויקט‬ ‫תחת‬ ADO.Net‫ב‬ ‫הוא‬ ‫הפיתוח‬
‫ימני‬ ‫ומקש‬ App_Data ‫לספריה‬ Visual Studio‫ב‬ ‫בפרויקט‬ ‫לנווט‬ ‫יש‬ ‫בפרויקט‬ ‫יצירת‬ ‫לאחר‬
Add -> New Item->Visual C#->Data->SQL Server Database
database ‫ה‬ ‫את‬ ‫מייצג‬ ‫אשר‬ mdf ‫סיומת‬ ‫עם‬ ‫הקובץ‬ ‫שם‬ ‫את‬ ‫לבחור‬ ‫אפשר‬ ‫למטה‬
natankrasney@gmail.com
18
SQL Server ‫ל‬ ‫בגישה‬ ADO.Net ‫ב‬ ‫בסיסי‬ ‫לקוד‬ ‫דוגמא‬
‫פרויקט‬ ‫ראה‬
https://github.com/NathanKr/VS2015GitRep/tree/master/Telrad/Web/ASP.net/ADO
ReadMe.txt ‫קובץ‬ ‫ובפנים‬ .Net/ADO_mvc
‫פי‬ ‫על‬ ‫הפרויקט‬ ‫את‬ ‫שמכיל‬ ‫מחשב‬ ‫בכל‬ ‫אותו‬ ‫ליצור‬ ‫יש‬ ‫כי‬ Github‫ב‬ ‫מופיע‬ ‫לא‬ mdf‫ה‬ ‫קובץ‬
ReadMe.txt ‫ב‬ ‫שיש‬ ‫ההוראות‬
natankrasney@gmail.com
19
connection string‫ל‬ ‫דוגמא‬
@"Data Source = (LocalDB)MSSQLLocalDB;" +
@"AttachDbFilename = |DataDirectory|Database1.mdf;" +
"Initial Catalog = DataBase1;" +
" Integrated Security = True ;"
database‫ה‬ ‫של‬ ‫המאפינים‬ ‫מתוך‬ ‫ישירות‬ connection string‫ה‬ ‫את‬ ‫לקחת‬ ‫אפשר‬ : ‫הערה‬
natankrasney@gmail.com
20
SQL Server ‫של‬ ‫שם‬
.database ‫ה‬ ‫את‬ ‫שמייצג‬ ‫לקובץ‬ Path
‫מייצג‬ DataDirectory ‫הזה‬ ‫במקרה‬
‫בו‬ App_Data ‫הספריה‬ ‫את‬
Database ‫ה‬ ‫את‬ ‫יוצרים‬
database ‫ה‬ ‫של‬ ‫שם‬Windows‫ב‬ ‫משתמש‬
Authentication
‫מטבלה‬ ‫לקריאה‬ ‫דוגמה‬
using (SqlConnection connection = new SqlConnection(strConnectionString)){
connection.Open();StringBuilder sb = new StringBuilder();
sb.Append("SELECT * from Table1");String sql = sb.ToString();
using (SqlCommand command = new SqlCommand(sql, connection)){
using (SqlDataReader reader = command.ExecuteReader()){
while (reader.Read()){
list.Add(new User{
Id = reader.GetInt32(0),FirstName = reader.GetString(1),LastName = reader.GetString(2)
});}}}
natankrasney@gmail.com
21
‫בשורה‬ ‫לעמודה‬ ‫גישה‬
‫בדומה‬ ‫אינדקס‬ ‫בעזרת‬
‫למערך‬ ‫לגישה‬
String ‫על‬ ‫עדיף‬ StringBuilder
string ‫עושים‬ ‫כאשר‬ ‫בצועים‬ ‫מבחינת‬
concatenation
‫באמצעותה‬ ‫לולאה‬
‫אחרי‬ ‫שורה‬ ‫קוראים‬
‫בטבלה‬ ‫שורה‬
‫לטבלה‬ ‫לכתיבה‬ ‫דוגמה‬
using (SqlConnection connection = new SqlConnection(strConnectionString)){
connection.Open();
StringBuilder sb = new StringBuilder();
sb.Append("INSERT INTO Table1 (FirstName,LastName) ");
sb.Append("VALUES (@firstName, @lastName);");
String sql = sb.ToString();
using (SqlCommand command = new SqlCommand(sql, connection)){
command.Parameters.AddWithValue("@firstName", firstNameUser);
command.Parameters.AddWithValue("@lastName", lastNameUser);
rowsAffected = command.ExecuteNonQuery();
}}
natankrasney@gmail.com
22
firstNameUser , lastNameUser
‫לתוך‬ ‫יכנס‬ ‫שערכם‬ ‫משתנים‬ ‫הם‬
Table1 ‫הטבלה‬
‫הכנסת‬ ‫פעולת‬ ‫ביצוע‬
‫לטבלה‬ ‫הנתונים‬
? LINQ to SQL ‫זה‬ ‫מה‬
LINQ to SQL ‫על‬ ‫נרחיב‬ ‫כאן‬ LINQ ‫של‬ ‫התחביר‬ ‫את‬ ‫למדנו‬ LINQ ‫על‬ ‫בקורס‬
‫להלן‬ ‫מוצגת‬ LINQ to SQL ‫של‬ ‫הארכיטקטורה‬
natankrasney@gmail.com
23
Query syntax :
from cust in nw.Customers
where cust.City == "Paris"
select cust.CompanyName
SQL
select CompanyName from
Customers where City = 'Paris';
C# ‫ב‬ ‫עובדת‬ ‫האפליקציה‬
‫בעזרת‬ SQL Server ‫מול‬
System.Data.Linq.Data
(nw - ‫)בדוגמא‬ Context
Lambda syntax :
nw.Customers.Where(cust =>
cust.City == "Paris")
LINQ to SQL‫ב‬ ‫שמשתמש‬ ‫פרויקט‬ ‫יצירת‬
.1console , ASP.Net ‫לדוגמא‬ ‫)אפשר‬ ‫יותר‬ ‫מתקדם‬ ‫או‬ Visual Studio 2015‫ב‬ ‫פרויקט‬ ‫צור‬
(… MVC
.2Add->New Item->Data->LINQ to SQL classes->Add
.3‫את‬ ‫וגרור‬ (Northwind ‫)לדוגמא‬ ‫לעבוד‬ ‫רוצה‬ ‫אתה‬ ‫מולו‬ Database‫ה‬ ‫של‬ ‫הטבלאות‬ ‫את‬ ‫סמן‬
‫הקודם‬ ‫בסעיף‬ ‫שנוצר‬ ‫הפתוח‬ ‫לחלון‬ ‫הטבלאות‬
.4‫קומפילציה‬ ‫בצע‬ .‫ביניהן‬ ‫הקשרים‬ ‫עם‬ ‫בחלון‬ ‫מופיעות‬ ‫הטבלאות‬
‫מופיעה‬ Northwind ‫מול‬ ‫שעובד‬ ‫פשוט‬ console ‫לפרויקט‬ ‫דוגמה‬
https://github.com/NathanKr/VS2015GitRep/tree/master/Telrad/LINQ/ConsoleLI‫כאן‬
‫שיתאים‬ ‫כך‬ ‫בפרויקט‬ connection string‫ה‬ ‫את‬ ‫להתאים‬ ‫חשוב‬) NQtoSQL_NorthWindDb
(‫שלכם‬ ‫המחשב‬ ‫שעל‬ northwind‫ל‬
natankrasney@gmail.com
24
C#‫ב‬ ‫מחלקות‬ ‫בעזרת‬ northwind ‫נתונים‬ ‫מסד‬ ‫ייצוג‬
: ‫מחלקות‬ ‫בעזרת‬ database ‫ה‬ ‫של‬ ‫ייצוג‬ " LINQ to SQL Classes" ‫בעזרת‬ ‫קבלנו‬
natankrasney@gmail.com
25
‫את‬ ‫מייצגת‬ DataClasses1DataContext ‫המחלקה‬
Northwind ‫הנתונים‬ ‫מסד‬
DataClasses1DataContext‫ב‬ ‫מיוצגת‬ ‫טבלה‬ ‫כל‬
IQueryable ‫את‬ ‫שיורש‬ Table ‫מסוג‬ ‫מאפיין‬ ‫באמצעות‬
‫את‬ ‫מציגה‬ ‫כפולה‬ ‫לחיצה‬
‫והקשרים‬ ‫הטבלאות‬
‫ביניהן‬
LINQ to SQL Query Syntax ‫ב‬ select ‫ל‬ ‫דוגמא‬
DataClasses1DataContext nw = new DataClasses1DataContext(strConnectionString);
var resultQuery = from cust in nw.Customers
where cust.City == "Paris"
select cust.CompanyName;
foreach (var item in resultQuery){
Console.WriteLine(item);}
Console.ReadLine();
natankrasney@gmail.com
26
‫כפי‬ Connection string
‫של‬ ‫במאפינים‬ ‫שמופיע‬
‫שלכם‬ ‫המחשב‬ ‫על‬ Northwind
database‫ה‬ ‫ייצוג‬
C#‫ב‬ ‫מחלקות‬ ‫בעזרת‬
LINQ to SQL Lambda Syntax ‫ב‬ select ‫ל‬ ‫דוגמא‬
DataClasses1DataContext nw = new DataClasses1DataContext(strConnectionString);
var resultLambda = nw.Customers.Where(
x => x.City == "Paris").Select(x => x.CompanyName);
foreach (var item in resultLambda){
Console.WriteLine(item);
}
Console.ReadLine();
natankrasney@gmail.com
27
‫כפי‬ Connection string
‫של‬ ‫במאפינים‬ ‫שמופיע‬
‫שלכם‬ ‫המחשב‬ ‫על‬ Northwind
database‫ה‬ ‫ייצוג‬
C#‫ב‬ ‫מחלקות‬ ‫בעזרת‬
LINQ to SQL ‫ב‬ Insert ‫ל‬ ‫דוגמא‬
DataClasses1DataContext nw = new DataClasses1DataContext(strConnectionString))
Employee newEmployee = new Employee();
newEmployee.City = "Washington";
newEmployee.Address = "White house";
newEmployee.BirthDate = new DateTime(1961, 8, 4);
newEmployee.FirstName = "Barak";
newEmployee.LastName = "Obama";
nw.Employees.InsertOnSubmit(newEmployee);
nw.SubmitChanges();
natankrasney@gmail.com
28
‫כפי‬ Connection string
‫של‬ ‫במאפינים‬ ‫שמופיע‬
‫שלכם‬ ‫המחשב‬ ‫על‬ Northwind
LINQ to SQL ‫ב‬ Update ‫ל‬ ‫דוגמא‬
DataClasses1DataContext nw = new DataClasses1DataContext(strConnectionString))
Employee employee = nw.Employees.FirstOrDefault(emp => emp.FirstName == strEmployeeFirstName);
if (employee != null)
{
employee.Address = strEmployeeAddress;
nw.SubmitChanges();
}
natankrasney@gmail.com
29
.(‫כמה‬ ‫גם‬ ‫)אפשר‬ ‫אחד‬ ‫שדה‬ ‫עדכון‬
‫שקבלנו‬ ‫אוביקט‬ ‫על‬ ‫שיתבצע‬ ‫קריטי‬
- ‫הזה‬ ‫במקרה‬ collection‫ה‬ ‫מתוך‬
nw.Employees
LINQ to SQL ‫ב‬ Delete ‫ל‬ ‫דוגמא‬
var listToBeDeleted = nw.Employees.Where(emp => emp.FirstName == strFirstName);
foreach (var emp in listToBeDeleted)
{
nw.Employees.DeleteOnSubmit(emp);
}
nw.SubmitChanges();
natankrasney@gmail.com
30
‫בחשבון‬ ‫נלקחה‬ ‫הזה‬ ‫במקרה‬
‫מעובד‬ ‫יותר‬ ‫שיש‬ ‫האופציה‬
‫שם‬ ‫באותו‬ ‫אחד‬

More Related Content

Similar to ADO.Net

6 sql explorer - powershell dba
6   sql explorer - powershell dba6   sql explorer - powershell dba
6 sql explorer - powershell dbasqlserver.co.il
 
335440088 skill-change-2016
335440088 skill-change-2016335440088 skill-change-2016
335440088 skill-change-2016Inbalraanan
 
יוני ברק הכשרה ביטוח
יוני ברק הכשרה ביטוחיוני ברק הכשרה ביטוח
יוני ברק הכשרה ביטוחAnochi.com.
 
Joomla structur, MVC and layout overrides
Joomla structur, MVC and layout overridesJoomla structur, MVC and layout overrides
Joomla structur, MVC and layout overridesItamar Elharar
 
Angular 2 introduction
Angular 2 introductionAngular 2 introduction
Angular 2 introductionNathan Krasney
 
SAPUI5 on SAP Web IDE
SAPUI5 on SAP Web IDESAPUI5 on SAP Web IDE
SAPUI5 on SAP Web IDEDaniel Cnaan
 
קורס אנדרואיד
קורס אנדרואידקורס אנדרואיד
קורס אנדרואידNathan Krasney
 
SAP NetWeaver Gateway OData
SAP NetWeaver Gateway ODataSAP NetWeaver Gateway OData
SAP NetWeaver Gateway ODataDaniel Cnaan
 
Cubus T Larix 4 M He
Cubus T Larix 4 M HeCubus T Larix 4 M He
Cubus T Larix 4 M Hecubuscoil
 
Dover is now a Noetix Disributer
Dover is now a Noetix Disributer Dover is now a Noetix Disributer
Dover is now a Noetix Disributer Boaz Dombrover
 
כתבה בעיתון הארץ - עתיד הענן - 05.2015
כתבה בעיתון הארץ - עתיד הענן - 05.2015כתבה בעיתון הארץ - עתיד הענן - 05.2015
כתבה בעיתון הארץ - עתיד הענן - 05.2015Neil Cohen-Ringel
 
Object oriented analysis and design by alberta university - Typed
Object oriented analysis and design by alberta university - TypedObject oriented analysis and design by alberta university - Typed
Object oriented analysis and design by alberta university - TypedOhad Esperansa
 

Similar to ADO.Net (20)

6 sql explorer - powershell dba
6   sql explorer - powershell dba6   sql explorer - powershell dba
6 sql explorer - powershell dba
 
335440088 skill-change-2016
335440088 skill-change-2016335440088 skill-change-2016
335440088 skill-change-2016
 
יוני ברק הכשרה ביטוח
יוני ברק הכשרה ביטוחיוני ברק הכשרה ביטוח
יוני ברק הכשרה ביטוח
 
Joomla structur, MVC and layout overrides
Joomla structur, MVC and layout overridesJoomla structur, MVC and layout overrides
Joomla structur, MVC and layout overrides
 
Dac Isug 96 Saved
Dac Isug 96   SavedDac Isug 96   Saved
Dac Isug 96 Saved
 
Angular 2 introduction
Angular 2 introductionAngular 2 introduction
Angular 2 introduction
 
ASP.net Web Pages
ASP.net Web PagesASP.net Web Pages
ASP.net Web Pages
 
Angular 2 jump start
Angular 2 jump startAngular 2 jump start
Angular 2 jump start
 
React introduction
React introductionReact introduction
React introduction
 
javascript
javascriptjavascript
javascript
 
1 crystal bowl
1   crystal bowl1   crystal bowl
1 crystal bowl
 
SAPUI5 on SAP Web IDE
SAPUI5 on SAP Web IDESAPUI5 on SAP Web IDE
SAPUI5 on SAP Web IDE
 
SAP NetWeaver Gateway OData
SAP NetWeaver Gateway ODataSAP NetWeaver Gateway OData
SAP NetWeaver Gateway OData
 
קורס אנדרואיד
קורס אנדרואידקורס אנדרואיד
קורס אנדרואיד
 
SAP NetWeaver Gateway OData
SAP NetWeaver Gateway ODataSAP NetWeaver Gateway OData
SAP NetWeaver Gateway OData
 
SAPUI5 on SAP Web IDE
SAPUI5 on SAP Web IDESAPUI5 on SAP Web IDE
SAPUI5 on SAP Web IDE
 
Cubus T Larix 4 M He
Cubus T Larix 4 M HeCubus T Larix 4 M He
Cubus T Larix 4 M He
 
Dover is now a Noetix Disributer
Dover is now a Noetix Disributer Dover is now a Noetix Disributer
Dover is now a Noetix Disributer
 
כתבה בעיתון הארץ - עתיד הענן - 05.2015
כתבה בעיתון הארץ - עתיד הענן - 05.2015כתבה בעיתון הארץ - עתיד הענן - 05.2015
כתבה בעיתון הארץ - עתיד הענן - 05.2015
 
Object oriented analysis and design by alberta university - Typed
Object oriented analysis and design by alberta university - TypedObject oriented analysis and design by alberta university - Typed
Object oriented analysis and design by alberta university - Typed
 

More from Nathan Krasney

More from Nathan Krasney (11)

Introduction to Semantic ui-react
Introduction to Semantic ui-reactIntroduction to Semantic ui-react
Introduction to Semantic ui-react
 
Angular 2 - Typescript
Angular 2  - TypescriptAngular 2  - Typescript
Angular 2 - Typescript
 
Angular 2 binding
Angular 2  bindingAngular 2  binding
Angular 2 binding
 
JQuery
JQueryJQuery
JQuery
 
ASP.net Security
ASP.net SecurityASP.net Security
ASP.net Security
 
CSS
CSSCSS
CSS
 
Javascript with json
Javascript with jsonJavascript with json
Javascript with json
 
HTML5
HTML5 HTML5
HTML5
 
HTML
HTML HTML
HTML
 
Lessons learned from 6 month project with india based software house
Lessons learned from 6 month project with india based software houseLessons learned from 6 month project with india based software house
Lessons learned from 6 month project with india based software house
 
Introduction to big data
Introduction to big data Introduction to big data
Introduction to big data
 

ADO.Net

  • 1. .Net ‫ב‬ ‫נתונים‬ ‫למסדי‬ ‫גישה‬ natankrasney@gmail.com 1
  • 2. ‫הקורס‬ ‫מבנה‬ ●‫בפרט‬ relational database‫ו‬ ‫בכלל‬ database‫ל‬ ‫מבוא‬ ●SQL ‫שפת‬ ●MS SQL Server ●: ‫הבאות‬ ‫בטכנולוגיות‬ ‫נתונים‬ ‫ממסדי‬ ‫מידע‬ ‫ולהוציא‬ ‫להכניס‬ ‫מאפשר‬ ADO.Net ○ADO.Net data providers ■: ‫שכולל‬ System.Data.SqlClient ‫ל‬ ‫ששיך‬ MS SQL Server ‫מ‬ ‫וקריאה‬ ‫לכתיבה‬ ‫ממשק‬ - SqlClient ●SqlConnection ●SqlCommand ●SqlDataReader ■OracleClient ■... ○LINQ to SQL ○ADO.Net Entity Framework natankrasney@gmail.com 2
  • 3. ? ‫זה‬ ‫את‬ ‫צריך‬ ‫ולמה‬ Database ‫זה‬ ‫מה‬ ‫אותו‬ ‫לשמור‬ ‫רוצים‬ ‫ואנו‬ ‫סרטים‬ ‫להשכרת‬ ‫בחנות‬ ‫לקוחות‬ ‫רשימת‬ ‫לדוגמא‬ ‫מידע‬ ‫לנו‬ ‫יש‬ … ‫תמונה‬ , ‫מספר‬ , ‫טקסט‬ : ‫שונות‬ ‫בצורות‬ ‫להיות‬ ‫יכול‬ ‫המידע‬ ? Database ‫צריך‬ ‫למה‬ ‫אז‬ - ‫בקבצים‬ ‫זה‬ ‫את‬ ‫לשמור‬ ‫אפשר‬ : Database‫ב‬ ‫שימוש‬ ‫יתרונות‬ ●database ‫עם‬ scale up ‫לעשות‬ ‫ניתן‬ - ‫מידע‬ ‫גודל‬ ●database‫ב‬ ‫אפשרי‬ ‫אבל‬ ‫זמנית‬ ‫בו‬ ‫אנשים‬ ‫מספר‬ ‫ידי‬ ‫על‬ ‫קובץ‬ ‫לעדכן‬ ‫בעייתי‬ ‫לדוגמא‬ - ‫המידע‬ ‫עדכון‬ ‫קלות‬ ●‫הגדלים‬ ‫את‬ ‫להגביל‬ ‫אפשר‬ databse‫ב‬ ‫ואילו‬ ‫כרצוננו‬ ‫ארוך‬ ‫שם‬ ‫לקובץ‬ ‫להכניס‬ ‫אפשר‬ - ‫המידע‬ ‫תקפות‬ ●‫על‬ ‫לדוגמא‬ ‫מוגן‬ database ‫ואילו‬ ‫המחשב‬ ‫על‬ ‫שעובד‬ ‫למי‬ ‫כלל‬ ‫בדרך‬ ‫נגיש‬ ‫מחשב‬ ‫על‬ ‫קובץ‬ - (security) ‫מידע‬ ‫אבטחת‬ ‫ססמה‬ ‫ידי‬ ●‫קבצים‬ ‫עם‬ ‫בעייתי‬ ‫יותר‬ ‫וזה‬ forign key ‫בעזרת‬ ‫לדוגמא‬ database‫ב‬ ‫מידע‬ ‫לשתף‬ ‫קל‬ (redundancy) ‫יתרות‬ ●backup restore ‫ב‬ ‫תמיכה‬ natankrasney@gmail.com 3
  • 4. relational database ‫טרמינילוגיה‬ natankrasney@gmail.com 4 ‫גם‬ ‫נקרא‬ Record ‫טבלה‬ ‫גם‬ ‫נקרא‬
  • 5. Relational Databases‫ל‬ ‫דוגמאות‬ MS SQL server MS Access SQLite MySQL Oracle Sybase natankrasney@gmail.com 5
  • 6. relational database ‫חשובים‬ ‫מושגים‬ natankrasney@gmail.com 6 ‫הסבר‬ ‫מושג‬ ‫בטבלה‬ ‫לשורה‬ unique identifier - ‫משמעי‬ ‫חד‬ ‫מציין‬ .‫בטבלה‬ ‫שדה‬ Primary Key ‫אחרת‬ ‫בטבלה‬ primary key‫ל‬ ‫זהה‬ .‫בטבלה‬ ‫שדה‬ Foreign Key ‫בטבלה‬ ‫ומאוחסן‬ ‫שמתבצע‬ ‫קוד‬ Stored Procedure ‫ענינים‬ ‫תוכן‬ ‫דרך‬ ‫בספר‬ ‫מהירה‬ ‫לגישה‬ ‫בדומה‬ ‫למידע‬ ‫מהירה‬ ‫גישה‬ ‫מאפשר‬ Index ‫מצליחות‬ ‫וכולן‬ ‫במידה‬ ‫רק‬ ‫שמתבצעות‬ ‫פעולות‬ ‫של‬ ‫אוסף‬ Transaction
  • 7. Relational Database ‫ועמודות‬ ‫שורות‬ ‫בהן‬ ‫שיש‬ ‫טבלאות‬ ‫על‬ ‫מבוסס‬ Relational Database Relational Algebra ‫מ‬ ‫מגיע‬ Relation ‫המושג‬ natankrasney@gmail.com 7 Students ‫טבלת‬ Classes ‫טבלת‬ primary key
  • 8. ‫טבלאות‬ ‫בין‬ ‫קשר‬ ‫תיאור‬ natankrasney@gmail.com 8
  • 9. Enrollments ‫טבלת‬ natankrasney@gmail.com 9 ‫בטבלת‬ ‫עמודות‬ ‫שתי‬ ‫הצגת‬ ‫את‬ ‫המתארת‬ Enrollments ‫סטודנטים‬ ‫של‬ ‫ההשתתפות‬ ‫בקורסים‬ foreign keys
  • 10. SQL SQL - Structured Query Language ‫סטנדרט‬ ‫הוא‬ SQL CRUD ‫פעולות‬ ‫קרי‬ database‫מ‬ ‫מידע‬ ‫ולקרוא‬ ‫לשנות‬ , ‫לשמור‬ ‫שפה‬ database ‫ליצור‬ ‫מאפשר‬ stored procedure ‫ליצור‬ ‫מאפשר‬ natankrasney@gmail.com 10
  • 11. ‫חשובות‬ ‫פעולות‬ natankrasney@gmail.com 11 ‫הסבר‬ ‫פעולה‬ database ‫מה‬ ‫מידע‬ ‫קורא‬ Select database ‫ב‬ ‫מידע‬ ‫משנה‬ Update database ‫מה‬ ‫מידע‬ ‫מוחק‬ Delete database ‫ל‬ ‫מידע‬ ‫מכניס‬ Insert Into database ‫יוצר‬ Create Database database ‫משנה‬ Alter Database ‫טבלה‬ ‫יוצר‬ Create Table ‫טבלה‬ ‫משנה‬ Alter Table ‫טבלה‬ ‫מוחק‬ Drop Table
  • 12. Northwind ‫בשם‬ ‫ידוע‬ ‫הדגמות‬ Database ‫התקנת‬ ‫פי‬ ‫על‬ ‫התקנה‬ ‫ביצוע‬ https://docs.microsoft.com/en-us/visualstudio/data-tools/install-sql-server-sample- databases "To restore a database from a .bak file in Visual Studio" ‫של‬ ‫לקטע‬ ‫להכנס‬ ‫התקין‬ ‫זה‬ ‫אבל‬ 4 ‫סעיף‬ ‫אחרי‬ ‫שגיאה‬ ‫נתן‬ ‫הוא‬ View->SQL server object explorer ‫דרך‬ ‫מותקן‬ database‫ה‬ ‫את‬ ‫לראות‬ ‫ניתן‬ ‫לדוגמא‬ SQL ‫בשפת‬ New Query ‫לעשות‬ ‫ימני‬ ‫עכבר‬ ‫ועם‬ ‫אותו‬ ‫לסמן‬ ‫אפשר‬ select count(*) from Categories 8 ‫מחזיר‬ ‫אשר‬ natankrasney@gmail.com 12
  • 13. Select natankrasney@gmail.com 13 Northwind ‫בשימוש‬ ‫דוגמה‬ ‫הסבר‬ ‫פעולה‬ select City , Country from Customers; ‫מידע‬ ‫בוחר‬ Select select Distinct ShipCountry from Orders; ‫עצמו‬ ‫על‬ ‫חוזר‬ ‫שאינו‬ ‫מידע‬ ‫בוחר‬ Select Distinct SELECT * FROM Customers Where Country = 'Brazil'; ‫יחיד‬ ‫תנאי‬ ‫שמקיים‬ ‫מידע‬ ‫בוחר‬ Select Where SELECT * FROM Orders Where ShipCountry='Brazil' And Freight > 30 ‫תנאים‬ ‫מספר‬ ‫שמקיים‬ ‫מידע‬ ‫בוחר‬ Select And , Or , Not SELECT * FROM Orders Where ShipCountry='Brazil' And Freight > 30 Order By Freight ASC; ‫עמודה‬ ‫פי‬ ‫על‬ ‫שממוין‬ ‫מידע‬ ‫בוחר‬ Order By ‫מחרוזת‬ ‫סימון‬ ‫בעזרת‬ ‫תמיד‬ ‫מרכאות‬ ‫בודדות‬
  • 14. Insert, Update , Delete natankrasney@gmail.com 14 ‫דוגמא‬ ‫הסבר‬ ‫פעולה‬ INSERT INTO Customers (CustomerId,CompanyName, ContactName, Address, City, PostalCode, Country) VALUES ('NYNK','Cardinal', 'Tom B. Erichsen', 'Skagen 21', 'Stavanger', '4006', 'Germany'); ‫בטבלה‬ ‫שורה‬ ‫יוצר‬ ‫פי‬ ‫על‬ Customers ‫העמודות‬ Insert UPDATE Customers SET ContactName = 'Alfred Schmidt', City= 'Frankfurt' WHERE CustomerID = 'NYNK'; ‫אפשר‬ .‫בטבלה‬ ‫שורה‬ ‫שינוי‬ ‫שורות‬ ‫מספר‬ ‫לשנות‬ ‫גם‬ ‫אחת‬ ‫בפעולה‬ Update DELETE FROM Customers WHERE CustomerID='NYNK'; .‫מטבלה‬ ‫שורה‬ ‫מחיקת‬ ‫מספר‬ ‫גם‬ ‫למחוק‬ ‫אפשר‬ ‫אחת‬ ‫בפעולה‬ ‫שורות‬ Delete
  • 15. Join ‫ביניהן‬ ‫משותפת‬ ‫עמודה‬ ‫על‬ ‫בהתבסס‬ ‫יותר‬ ‫או‬ ‫טבלאות‬ ‫משתי‬ ‫שורות‬ ‫לבחור‬ ‫מאפשר‬ Join inner join ‫ל‬ ‫דוגמה‬ SELECT Orders.OrderID, Customers.CompanyName, Orders.OrderDate FROM Customers INNER JOIN Orders ON Orders.CustomerID=Customers.CustomerID; natankrasney@gmail.com 15 ‫בטבלאות‬ ‫מהעמודות‬ ‫חלק‬ ‫יוצגו‬ ‫שיש‬ ‫ושורות‬ Orders ‫ו‬ Customers CustomerId ‫אותו‬ ‫להן‬
  • 16. ? ADO.Net ‫זה‬ ‫מה‬ database ‫עם‬ ‫תקשורת‬ ‫מאפשרת‬ ‫אשר‬ ‫מיקרוסופט‬ ‫שפתחה‬ ‫טכנולוגיה‬ ‫היא‬ ADO.Net .Net ‫מ‬ ‫כחלק‬ ‫שפותחה‬ ‫טכנולוגיה‬ ‫זו‬ ‫שונים‬ relational database ‫מול‬ ‫בעבודה‬ ‫פופולרית‬ ‫היא‬ ‫מכיל‬ ADO.Net ‫טכנולוגיות‬ ‫אילו‬ ‫ראינו‬ ‫הפתיחה‬ ‫בשקף‬ : ‫הבאות‬ ‫במחלקות‬ ‫ונשתמש‬ Microsoft SQL Server ‫מול‬ ‫העבודה‬ ‫את‬ ‫נציג‬ ‫נראה‬ ‫הזה‬ ‫בקורס‬ ●‫קשר‬ ‫שמאפשר‬ File‫ל‬ ‫לוגית‬ ‫)דומה‬ Database ‫עם‬ ‫קשר‬ ‫יצירת‬ ‫מאפשר‬ - SqlConnection (‫קובץ‬ ‫עם‬ ●SQL ‫פקודת‬ ‫מייצג‬ - SqlCommand ●‫ל‬ ‫לוגית‬ ‫)דומה‬ Database‫מ‬ ‫בלולאה‬ ‫שורות‬ ‫לקרוא‬ ‫מאפשר‬ - SqlDataReader (StreamReadernatankrasney@gmail.com 16
  • 17. Sql Client ADO.Net ‫ל‬ ‫שלו‬ ‫השייכות‬ ‫ואת‬ SqlClient ‫מהו‬ ‫הפתיחה‬ ‫בשקף‬ ‫ראינו‬ ‫של‬ ‫הבאות‬ ‫במחלקות‬ ‫ונשתמש‬ Microsoft SQL Server ‫מול‬ ‫העבודה‬ ‫את‬ ‫נציג‬ ‫נראה‬ ‫הזה‬ ‫בקורס‬ :System.Data.SqlClient ‫בשם‬ namespace‫ל‬ ‫שייכות‬ ‫אשר‬ SqlClient ●‫קשר‬ ‫שמאפשר‬ File‫ל‬ ‫לוגית‬ ‫)דומה‬ Database ‫עם‬ ‫קשר‬ ‫יצירת‬ ‫מאפשר‬ - SqlConnection (‫קובץ‬ ‫עם‬ ●SQL ‫פקודת‬ ‫מייצג‬ - SqlCommand ●‫ל‬ ‫לוגית‬ ‫)דומה‬ Database‫מ‬ ‫בלולאה‬ ‫שורות‬ ‫לקרוא‬ ‫מאפשר‬ - SqlDataReader (StreamReader natankrasney@gmail.com 17
  • 18. ‫העבודה‬ ‫סביבת‬ ASP.Net MVC ‫של‬ ‫פרויקט‬ ‫תחת‬ ADO.Net‫ב‬ ‫הוא‬ ‫הפיתוח‬ ‫ימני‬ ‫ומקש‬ App_Data ‫לספריה‬ Visual Studio‫ב‬ ‫בפרויקט‬ ‫לנווט‬ ‫יש‬ ‫בפרויקט‬ ‫יצירת‬ ‫לאחר‬ Add -> New Item->Visual C#->Data->SQL Server Database database ‫ה‬ ‫את‬ ‫מייצג‬ ‫אשר‬ mdf ‫סיומת‬ ‫עם‬ ‫הקובץ‬ ‫שם‬ ‫את‬ ‫לבחור‬ ‫אפשר‬ ‫למטה‬ natankrasney@gmail.com 18
  • 19. SQL Server ‫ל‬ ‫בגישה‬ ADO.Net ‫ב‬ ‫בסיסי‬ ‫לקוד‬ ‫דוגמא‬ ‫פרויקט‬ ‫ראה‬ https://github.com/NathanKr/VS2015GitRep/tree/master/Telrad/Web/ASP.net/ADO ReadMe.txt ‫קובץ‬ ‫ובפנים‬ .Net/ADO_mvc ‫פי‬ ‫על‬ ‫הפרויקט‬ ‫את‬ ‫שמכיל‬ ‫מחשב‬ ‫בכל‬ ‫אותו‬ ‫ליצור‬ ‫יש‬ ‫כי‬ Github‫ב‬ ‫מופיע‬ ‫לא‬ mdf‫ה‬ ‫קובץ‬ ReadMe.txt ‫ב‬ ‫שיש‬ ‫ההוראות‬ natankrasney@gmail.com 19
  • 20. connection string‫ל‬ ‫דוגמא‬ @"Data Source = (LocalDB)MSSQLLocalDB;" + @"AttachDbFilename = |DataDirectory|Database1.mdf;" + "Initial Catalog = DataBase1;" + " Integrated Security = True ;" database‫ה‬ ‫של‬ ‫המאפינים‬ ‫מתוך‬ ‫ישירות‬ connection string‫ה‬ ‫את‬ ‫לקחת‬ ‫אפשר‬ : ‫הערה‬ natankrasney@gmail.com 20 SQL Server ‫של‬ ‫שם‬ .database ‫ה‬ ‫את‬ ‫שמייצג‬ ‫לקובץ‬ Path ‫מייצג‬ DataDirectory ‫הזה‬ ‫במקרה‬ ‫בו‬ App_Data ‫הספריה‬ ‫את‬ Database ‫ה‬ ‫את‬ ‫יוצרים‬ database ‫ה‬ ‫של‬ ‫שם‬Windows‫ב‬ ‫משתמש‬ Authentication
  • 21. ‫מטבלה‬ ‫לקריאה‬ ‫דוגמה‬ using (SqlConnection connection = new SqlConnection(strConnectionString)){ connection.Open();StringBuilder sb = new StringBuilder(); sb.Append("SELECT * from Table1");String sql = sb.ToString(); using (SqlCommand command = new SqlCommand(sql, connection)){ using (SqlDataReader reader = command.ExecuteReader()){ while (reader.Read()){ list.Add(new User{ Id = reader.GetInt32(0),FirstName = reader.GetString(1),LastName = reader.GetString(2) });}}} natankrasney@gmail.com 21 ‫בשורה‬ ‫לעמודה‬ ‫גישה‬ ‫בדומה‬ ‫אינדקס‬ ‫בעזרת‬ ‫למערך‬ ‫לגישה‬ String ‫על‬ ‫עדיף‬ StringBuilder string ‫עושים‬ ‫כאשר‬ ‫בצועים‬ ‫מבחינת‬ concatenation ‫באמצעותה‬ ‫לולאה‬ ‫אחרי‬ ‫שורה‬ ‫קוראים‬ ‫בטבלה‬ ‫שורה‬
  • 22. ‫לטבלה‬ ‫לכתיבה‬ ‫דוגמה‬ using (SqlConnection connection = new SqlConnection(strConnectionString)){ connection.Open(); StringBuilder sb = new StringBuilder(); sb.Append("INSERT INTO Table1 (FirstName,LastName) "); sb.Append("VALUES (@firstName, @lastName);"); String sql = sb.ToString(); using (SqlCommand command = new SqlCommand(sql, connection)){ command.Parameters.AddWithValue("@firstName", firstNameUser); command.Parameters.AddWithValue("@lastName", lastNameUser); rowsAffected = command.ExecuteNonQuery(); }} natankrasney@gmail.com 22 firstNameUser , lastNameUser ‫לתוך‬ ‫יכנס‬ ‫שערכם‬ ‫משתנים‬ ‫הם‬ Table1 ‫הטבלה‬ ‫הכנסת‬ ‫פעולת‬ ‫ביצוע‬ ‫לטבלה‬ ‫הנתונים‬
  • 23. ? LINQ to SQL ‫זה‬ ‫מה‬ LINQ to SQL ‫על‬ ‫נרחיב‬ ‫כאן‬ LINQ ‫של‬ ‫התחביר‬ ‫את‬ ‫למדנו‬ LINQ ‫על‬ ‫בקורס‬ ‫להלן‬ ‫מוצגת‬ LINQ to SQL ‫של‬ ‫הארכיטקטורה‬ natankrasney@gmail.com 23 Query syntax : from cust in nw.Customers where cust.City == "Paris" select cust.CompanyName SQL select CompanyName from Customers where City = 'Paris'; C# ‫ב‬ ‫עובדת‬ ‫האפליקציה‬ ‫בעזרת‬ SQL Server ‫מול‬ System.Data.Linq.Data (nw - ‫)בדוגמא‬ Context Lambda syntax : nw.Customers.Where(cust => cust.City == "Paris")
  • 24. LINQ to SQL‫ב‬ ‫שמשתמש‬ ‫פרויקט‬ ‫יצירת‬ .1console , ASP.Net ‫לדוגמא‬ ‫)אפשר‬ ‫יותר‬ ‫מתקדם‬ ‫או‬ Visual Studio 2015‫ב‬ ‫פרויקט‬ ‫צור‬ (… MVC .2Add->New Item->Data->LINQ to SQL classes->Add .3‫את‬ ‫וגרור‬ (Northwind ‫)לדוגמא‬ ‫לעבוד‬ ‫רוצה‬ ‫אתה‬ ‫מולו‬ Database‫ה‬ ‫של‬ ‫הטבלאות‬ ‫את‬ ‫סמן‬ ‫הקודם‬ ‫בסעיף‬ ‫שנוצר‬ ‫הפתוח‬ ‫לחלון‬ ‫הטבלאות‬ .4‫קומפילציה‬ ‫בצע‬ .‫ביניהן‬ ‫הקשרים‬ ‫עם‬ ‫בחלון‬ ‫מופיעות‬ ‫הטבלאות‬ ‫מופיעה‬ Northwind ‫מול‬ ‫שעובד‬ ‫פשוט‬ console ‫לפרויקט‬ ‫דוגמה‬ https://github.com/NathanKr/VS2015GitRep/tree/master/Telrad/LINQ/ConsoleLI‫כאן‬ ‫שיתאים‬ ‫כך‬ ‫בפרויקט‬ connection string‫ה‬ ‫את‬ ‫להתאים‬ ‫חשוב‬) NQtoSQL_NorthWindDb (‫שלכם‬ ‫המחשב‬ ‫שעל‬ northwind‫ל‬ natankrasney@gmail.com 24
  • 25. C#‫ב‬ ‫מחלקות‬ ‫בעזרת‬ northwind ‫נתונים‬ ‫מסד‬ ‫ייצוג‬ : ‫מחלקות‬ ‫בעזרת‬ database ‫ה‬ ‫של‬ ‫ייצוג‬ " LINQ to SQL Classes" ‫בעזרת‬ ‫קבלנו‬ natankrasney@gmail.com 25 ‫את‬ ‫מייצגת‬ DataClasses1DataContext ‫המחלקה‬ Northwind ‫הנתונים‬ ‫מסד‬ DataClasses1DataContext‫ב‬ ‫מיוצגת‬ ‫טבלה‬ ‫כל‬ IQueryable ‫את‬ ‫שיורש‬ Table ‫מסוג‬ ‫מאפיין‬ ‫באמצעות‬ ‫את‬ ‫מציגה‬ ‫כפולה‬ ‫לחיצה‬ ‫והקשרים‬ ‫הטבלאות‬ ‫ביניהן‬
  • 26. LINQ to SQL Query Syntax ‫ב‬ select ‫ל‬ ‫דוגמא‬ DataClasses1DataContext nw = new DataClasses1DataContext(strConnectionString); var resultQuery = from cust in nw.Customers where cust.City == "Paris" select cust.CompanyName; foreach (var item in resultQuery){ Console.WriteLine(item);} Console.ReadLine(); natankrasney@gmail.com 26 ‫כפי‬ Connection string ‫של‬ ‫במאפינים‬ ‫שמופיע‬ ‫שלכם‬ ‫המחשב‬ ‫על‬ Northwind database‫ה‬ ‫ייצוג‬ C#‫ב‬ ‫מחלקות‬ ‫בעזרת‬
  • 27. LINQ to SQL Lambda Syntax ‫ב‬ select ‫ל‬ ‫דוגמא‬ DataClasses1DataContext nw = new DataClasses1DataContext(strConnectionString); var resultLambda = nw.Customers.Where( x => x.City == "Paris").Select(x => x.CompanyName); foreach (var item in resultLambda){ Console.WriteLine(item); } Console.ReadLine(); natankrasney@gmail.com 27 ‫כפי‬ Connection string ‫של‬ ‫במאפינים‬ ‫שמופיע‬ ‫שלכם‬ ‫המחשב‬ ‫על‬ Northwind database‫ה‬ ‫ייצוג‬ C#‫ב‬ ‫מחלקות‬ ‫בעזרת‬
  • 28. LINQ to SQL ‫ב‬ Insert ‫ל‬ ‫דוגמא‬ DataClasses1DataContext nw = new DataClasses1DataContext(strConnectionString)) Employee newEmployee = new Employee(); newEmployee.City = "Washington"; newEmployee.Address = "White house"; newEmployee.BirthDate = new DateTime(1961, 8, 4); newEmployee.FirstName = "Barak"; newEmployee.LastName = "Obama"; nw.Employees.InsertOnSubmit(newEmployee); nw.SubmitChanges(); natankrasney@gmail.com 28 ‫כפי‬ Connection string ‫של‬ ‫במאפינים‬ ‫שמופיע‬ ‫שלכם‬ ‫המחשב‬ ‫על‬ Northwind
  • 29. LINQ to SQL ‫ב‬ Update ‫ל‬ ‫דוגמא‬ DataClasses1DataContext nw = new DataClasses1DataContext(strConnectionString)) Employee employee = nw.Employees.FirstOrDefault(emp => emp.FirstName == strEmployeeFirstName); if (employee != null) { employee.Address = strEmployeeAddress; nw.SubmitChanges(); } natankrasney@gmail.com 29 .(‫כמה‬ ‫גם‬ ‫)אפשר‬ ‫אחד‬ ‫שדה‬ ‫עדכון‬ ‫שקבלנו‬ ‫אוביקט‬ ‫על‬ ‫שיתבצע‬ ‫קריטי‬ - ‫הזה‬ ‫במקרה‬ collection‫ה‬ ‫מתוך‬ nw.Employees
  • 30. LINQ to SQL ‫ב‬ Delete ‫ל‬ ‫דוגמא‬ var listToBeDeleted = nw.Employees.Where(emp => emp.FirstName == strFirstName); foreach (var emp in listToBeDeleted) { nw.Employees.DeleteOnSubmit(emp); } nw.SubmitChanges(); natankrasney@gmail.com 30 ‫בחשבון‬ ‫נלקחה‬ ‫הזה‬ ‫במקרה‬ ‫מעובד‬ ‫יותר‬ ‫שיש‬ ‫האופציה‬ ‫שם‬ ‫באותו‬ ‫אחד‬