
context connection=true. הקוד רץ בתוך אותו מסד שקרא לו, ולכן אין צורך בשם משתמש או סיסמה.הטקסט המלא של הדקות הראשונות בהרצאה «CLR - פונקצית עדכון» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
לדוגמה הבאה אני רוצה לבצע דוגמה נוספת לקריאת קוד מתוך ה-CLR. אנחנו נרצה ליצור כאן שוב תוכנית חדשה בתוך ה-Dotnet.
התוכנית עצמה תייצר פקודת DML, ולאחר מכן אנחנו נפעיל אותה מתוך Store Procedure ב-SQL Server. שוב פעם, אנחנו ניגשים למערכת, Class Library, אנחנו יוצרים כאן CLR, והפקודה שאנחנו נעשה, נלך על פקודת Insert.
שוב פעם, כל ה-Namespace מבחינתנו כרגע לא רלוונטי, כל מה שאנחנו צריכים כרגע לעשות עם תוכנית נקייה זה לבצע קודם כל using. כאן אנחנו מבצעים פקודת dml ולכן אנחנו נקרא ל-SystemData.sql Client.
בנוסף לזה אנחנו צריכים גם לייצר כאן קוד שהוא יהיה בסוף dll לטובת ה-sql Server, ולכן אנחנו גם נעשה אימפורט לתוך Microsoft.sqlServer.sqlServer.sqlServer.
ודבר נוסף שאנחנו נעשה כאן עוד using לתוך של ה-SystemData והפעם לא ה-SQL Client אלא ה-SQL Types על מנת שנוכל להשתמש גם באובייקטים בטייפס של ה-SQL Server.
בואו ניצור את זה, אנחנו יוצרים כאן תחילה את הקלאס. גם כאן אנחנו נותנים Public, Public Class, ניתן לו קלאס אחד ולאחר מכן אנחנו ניגשים כבר לפונקציה שגם היא תהיה גם Public אבל גם Static על מנת שנוכל לקרוא לה מבחוץ.
זו פונקציה Insert by CLR, זו פונקציה שתבצע כרגע פעולת DML, פעולת חיבור לתוך הדאטאבס והכנסה של שורה חדשה. ראשית כל עלינו לבצע הגדרה של קונקשן, לצורך זה יש לנו את האובייקט sql.connection שווה ל-new sql.connection ובתוך ה-connection על מנת ליצור אותו אני צריך באפשרות השנייה לשלוח כאן Connection String.
כיוון שהתוכנית עצמה לא צריכה לבצע קונקשן לתוך הדאטאבייס, אלא היא כבר נמצאת בתוך הדאטאבייס, כאן אני צריך לומר לו קונקשן סטרינג מיוחד שהוא נקרא קונטקסט.
קונקשן שווה ל-true. מה שאני בעצם כאן אומר לתוכנית שתריץ, תשתמש בקונקשן הקיים, כלומר באותה סביבת עבודה שממנה קראו לך, דהיינו לאמור בתוך ה-SQL Server, מאותו דאטאבייס שבו יקראו לאותו DLL, תשתמש באותו קונקשן סטרינג, באותו חיבור, באותו דאטאבס, ולכן כאן אני לא מציין איזשהו נתיב, איזשהו פרוביידר,
איזשהו יוזרנם או פסוורד על מנת להתחבר לדאטאבס, כיוון שאני כבר נמצא בתוך הדאטאבס. אובייקט נוסף שאנחנו יוצרים כאן זה ה-SQLCommand.
בתוך ה-SQLCommand כרגע אנחנו by default נשתמש בקונסטרקטור שאינו שולח פרמטרים. לאחר מכן אנחנו כבר נמלא את הפרמטרים. קומנד טקסט שווה insert into, נשתמש בתוך טבלת employees, אנחנו מכניסים לעמודות first name, last name וה-values הערכים שאותם אנחנו רוצים להכניס, Practical college, זוהי
פקודת ה-insert, ונוסף לזה יש לנו אפשרות גם לציין לא רק מהו הקומנד טקסט אלא מהו הקומנד טייפ, כאן יש לנו איזשהו נומרטור של command sql command type, וכאן ב-sql command type, מה שאנחנו צריכים להגדיר לו, שאנחנו בעצם, זו פקודת טקסט, למרות שזה גם ה-default ואין לנו צורך לציין את זה.
כאן אני רואה שיש לי גם את ה-sql data, זה אומר שאנחנו צריכים כאן לבצע עוד using של ה-system.data שגם הוא יהיה לי, מה שמייתר לי את הצורך לכתוב את כל זה.
אלו כללים בעבודה בתוך ה-dotnet, אנחנו כרגע לא נכנסים לזה, כיוון שאנחנו חותרים כבר להגיע למצב שבו אנחנו נוכל להריץ את הפקודה מתוך ה-SQL Server.
כתבנו את זה, ה-CMD קונקשן, אנחנו צריכים לתת לו את האובייקט קון שאותו הגדרנו, וכל מה שנותר לנו כרגע לעשות זה Open, לפתוח את הקונקשן.
בסופו של דבר כ-Best Projects ברגע שאנחנו גם מסיימים, אז עלינו גם לסגור את הקונקשן, ובין לבין בתוך זה יש לנו את הפקודת CMD שאנחנו צריכים לבצע אקזקיוט לפקודת אינסרט שאותה אנחנו עושים מכיוון שכרגע אין לנו עניין לקבל איזשהו ערך אז אנחנו קוראים כאן לפקודת non query אנחנו לא שולפים איזשהו מידע אלא מבצעים ולכן
אני קורא לה אקזקיוט non query על מנת לבצע את הפקודת אינסרט שאותה אנחנו רשמנו זהו זה כל מה שיש לנו כאן לעשות זה בעצם הקטע קוד שאותו הרלוונטי שאותו אנחנו רוצים כרגע להריץ לפני שאנחנו מריצים, שוב פעם, אנחנו צריכים לוודא שיש לנו תאימות מבחינת הגרסה של ה-dotnet framework. את זה אנחנו יכולים לראות כאן בפרויקט,
שם ה-SolutionCLRinsertProperties. אני נכנס, מכיוון שאנחנו נעבוד ב-SQL Server של 2008, הוא תומך לי בפרמבורג 3.5, אז אנחנו נציין את זה כאן.
נחזור רגע לקוד שלנו, SolutionExplorer, לקלאס 1 שאותו כתבנו, הנה הוא כאן לפנינו. אני עובד כרגע על 3.5 וזה מצוין, אנחנו חוזרים לבילד ואני מבצע כרגע בילד כקובץ dll של הפונקציה הזאת insert by clr, פקודה שתדע לבצע בעצם את, להשתמש בקונקשן