PracticU

CLR - פונקצית עדכון

בלי כתוביותעם כתוביות
PracticU › קורס DBA אפליקטיבי - שפת SQL למתחילים › CLR - פונקצית עדכון
מילון מושגים:
CLR - סביבת הריצה של .NET שמריצה את הקוד, מנהלת את הזיכרון ומטפלת בשגיאות (Common Language Runtime).
SQL Server - מערכת ניהול מסדי נתונים יחסיים של מיקרוסופט, הנשלטת בשפת T-SQL.
.NET - פלטפורמת פיתוח של מיקרוסופט להרצת יישומים בשפות כמו C#, הכוללת ספריות וסביבת ריצה משותפות.
DLL - קובץ ספרייה ב-Windows המכיל קוד ופונקציות שתוכנות שונות יכולות לטעון ולהשתמש בהן במשותף.
פרוצדורה מאוחסנת - קטע קוד SQL שמור במסד הנתונים שאפשר להפעיל לפי שם, לביצוע חוזר של פעולות על הנתונים.
מתודה - פונקציה המוגדרת בתוך מחלקה ומתארת פעולה שאובייקטים מאותה מחלקה יכולים לבצע.
שם משתמש - מזהה ייחודי שמשתמש מזין כדי להזדהות במערכת, לרוב יחד עם סיסמה.
פריימוורק - מסגרת תוכנה שמספקת מבנה וכלים מוכנים לפיתוח יישומים, כדי לחסוך כתיבת קוד חוזר.

CLR - פונקצית עדכון
השיעור מראה פונקציית CLR שמבצעת INSERT לתוך טבלה ב-SQL Server דרך החיבור של מי שקרא לה. הקוד נכתב ב-.NET, נבנה כ-DLL, ומופעל מתוך Stored Procedure.
השלבים העיקריים
1. מחלקה ומתודה: המחלקה מוגדרת public, והמתודה InsertByCLR גם היא public static, כדי שתהיה נגישה מ-SQL Server.
2. חיבור מהקונטקסט: במקום פרטי התחברות, מחרוזת החיבור היא context connection=true. הקוד רץ בתוך אותו מסד שקרא לו, ולכן אין צורך בשם משתמש או סיסמה.
3. פקודה: אובייקט SqlCommand מקבל את טקסט ה-INSERT לטבלת employees עם השדות FirstName ו-LastName, והערכים כתובים בקוד.
4. הפעלה: פותחים את החיבור, מבצעים ExecuteNonQuery לפקודה שאינה מחזירה נתונים, וסוגרים את החיבור.
5. גרסת .NET: מכיוון שהשרת הוא SQL Server 2008, הפרויקט נבנה ב-.NET Framework 3.5.
6. יבוא ויצירת פרוצדורה: הקובץ מיובא כאסמבלי, ונוצרת Stored Procedure עם EXTERNAL NAME שמצביע על המחלקה והמתודה.
7. בדיקה: מריצים את הפרוצדורה ומסתכלים בטבלת employees. השורה החדשה מופיעה עם הערכים שנכתבו בקוד.
שימו לב
הערכים בדוגמה קבועים בקוד, ולכן כל הרצה מוסיפה את אותה שורה.
בסיום תוכלו לכתוב פעולת DML בתוך CLR ולהפעיל אותה מ-SQL Server.
השיעור הבא בקורס: CLR - פונקציה עם פרמטרים - חלק 1

פרקי ההרצאה: CLR - פונקצית עדכון

  1. 00:00

    מטרת הדוגמה: CLR שמבצע DML

  2. 00:55

    using וטיפוסי SQL בקוד ה-CLR

  3. 01:56

    פונקציה סטטית שמכניסה שורה

  4. 02:38

    Context Connection והחיבור הקיים

  5. 03:28

    יצירת SqlCommand עם פקודת INSERT

  6. 05:04

    פתיחה וסגירה של החיבור

  7. 05:43

    ביצוע הפקודה ללא החזרת נתונים

תמלול ההרצאה: CLR - פונקצית עדכון

הטקסט המלא של הדקות הראשונות בהרצאה «CLR - פונקצית עדכון» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.

  1. 00:21

    לדוגמה הבאה אני רוצה לבצע דוגמה נוספת לקריאת קוד מתוך ה-CLR. אנחנו נרצה ליצור כאן שוב תוכנית חדשה בתוך ה-Dotnet.

  2. 00:30

    התוכנית עצמה תייצר פקודת DML, ולאחר מכן אנחנו נפעיל אותה מתוך Store Procedure ב-SQL Server. שוב פעם, אנחנו ניגשים למערכת, Class Library, אנחנו יוצרים כאן CLR, והפקודה שאנחנו נעשה, נלך על פקודת Insert.

  3. 00:50

    שוב פעם, כל ה-Namespace מבחינתנו כרגע לא רלוונטי, כל מה שאנחנו צריכים כרגע לעשות עם תוכנית נקייה זה לבצע קודם כל using. כאן אנחנו מבצעים פקודת dml ולכן אנחנו נקרא ל-SystemData.sql Client.

  4. 01:08

    בנוסף לזה אנחנו צריכים גם לייצר כאן קוד שהוא יהיה בסוף dll לטובת ה-sql Server, ולכן אנחנו גם נעשה אימפורט לתוך Microsoft.sqlServer.sqlServer.sqlServer.

  5. 01:26

    ודבר נוסף שאנחנו נעשה כאן עוד using לתוך של ה-SystemData והפעם לא ה-SQL Client אלא ה-SQL Types על מנת שנוכל להשתמש גם באובייקטים בטייפס של ה-SQL Server.

  6. 01:43

    בואו ניצור את זה, אנחנו יוצרים כאן תחילה את הקלאס. גם כאן אנחנו נותנים Public, Public Class, ניתן לו קלאס אחד ולאחר מכן אנחנו ניגשים כבר לפונקציה שגם היא תהיה גם Public אבל גם Static על מנת שנוכל לקרוא לה מבחוץ.

  7. 02:16

    זו פונקציה Insert by CLR, זו פונקציה שתבצע כרגע פעולת DML, פעולת חיבור לתוך הדאטאבס והכנסה של שורה חדשה. ראשית כל עלינו לבצע הגדרה של קונקשן, לצורך זה יש לנו את האובייקט sql.connection שווה ל-new sql.connection ובתוך ה-connection על מנת ליצור אותו אני צריך באפשרות השנייה לשלוח כאן Connection String.

  8. 02:45

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

  9. 03:02

    קונקשן שווה ל-true. מה שאני בעצם כאן אומר לתוכנית שתריץ, תשתמש בקונקשן הקיים, כלומר באותה סביבת עבודה שממנה קראו לך, דהיינו לאמור בתוך ה-SQL Server, מאותו דאטאבייס שבו יקראו לאותו DLL, תשתמש באותו קונקשן סטרינג, באותו חיבור, באותו דאטאבס, ולכן כאן אני לא מציין איזשהו נתיב, איזשהו פרוביידר,

  10. 03:28

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

  11. 03:40

    בתוך ה-SQLCommand כרגע אנחנו by default נשתמש בקונסטרקטור שאינו שולח פרמטרים. לאחר מכן אנחנו כבר נמלא את הפרמטרים. קומנד טקסט שווה insert into, נשתמש בתוך טבלת employees, אנחנו מכניסים לעמודות first name, last name וה-values הערכים שאותם אנחנו רוצים להכניס, Practical college, זוהי

  12. 04:17

    פקודת ה-insert, ונוסף לזה יש לנו אפשרות גם לציין לא רק מהו הקומנד טקסט אלא מהו הקומנד טייפ, כאן יש לנו איזשהו נומרטור של command sql command type, וכאן ב-sql command type, מה שאנחנו צריכים להגדיר לו, שאנחנו בעצם, זו פקודת טקסט, למרות שזה גם ה-default ואין לנו צורך לציין את זה.

  13. 04:47

    כאן אני רואה שיש לי גם את ה-sql data, זה אומר שאנחנו צריכים כאן לבצע עוד using של ה-system.data שגם הוא יהיה לי, מה שמייתר לי את הצורך לכתוב את כל זה.

  14. 05:00

    אלו כללים בעבודה בתוך ה-dotnet, אנחנו כרגע לא נכנסים לזה, כיוון שאנחנו חותרים כבר להגיע למצב שבו אנחנו נוכל להריץ את הפקודה מתוך ה-SQL Server.

  15. 05:11

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

  16. 05:24

    בסופו של דבר כ-Best Projects ברגע שאנחנו גם מסיימים, אז עלינו גם לסגור את הקונקשן, ובין לבין בתוך זה יש לנו את הפקודת CMD שאנחנו צריכים לבצע אקזקיוט לפקודת אינסרט שאותה אנחנו עושים מכיוון שכרגע אין לנו עניין לקבל איזשהו ערך אז אנחנו קוראים כאן לפקודת non query אנחנו לא שולפים איזשהו מידע אלא מבצעים ולכן

  17. 05:49

    אני קורא לה אקזקיוט non query על מנת לבצע את הפקודת אינסרט שאותה אנחנו רשמנו זהו זה כל מה שיש לנו כאן לעשות זה בעצם הקטע קוד שאותו הרלוונטי שאותו אנחנו רוצים כרגע להריץ לפני שאנחנו מריצים, שוב פעם, אנחנו צריכים לוודא שיש לנו תאימות מבחינת הגרסה של ה-dotnet framework. את זה אנחנו יכולים לראות כאן בפרויקט,

  18. 06:16

    שם ה-SolutionCLRinsertProperties. אני נכנס, מכיוון שאנחנו נעבוד ב-SQL Server של 2008, הוא תומך לי בפרמבורג 3.5, אז אנחנו נציין את זה כאן.

  19. 06:29

    נחזור רגע לקוד שלנו, SolutionExplorer, לקלאס 1 שאותו כתבנו, הנה הוא כאן לפנינו. אני עובד כרגע על 3.5 וזה מצוין, אנחנו חוזרים לבילד ואני מבצע כרגע בילד כקובץ dll של הפונקציה הזאת insert by clr, פקודה שתדע לבצע בעצם את, להשתמש בקונקשן

לקורס המלא: קורס SQL ו‑DBA אפליקטיבי

ההרצאה הקודמת: CLR - חיבור לסביבת SQL

ההרצאה הבאה: CLR - פונקציה עם פרמטרים - חלק 1

הרצאות קשורות מקורסים אחרים

  • עדכון של Kali
  • עדכון נתונים ב-MongoDB
  • עדכון מוצר - קורס NodeJS
  • עדכון מוצר בריאקט

קורסים נוספים במסלול

  • קורס NoSQL - MongoDB
  • קורס SSIS
  • קורס BI - ניתוח מסדי נתונים - Qlik Sense
  • קורס Power BI