update ב stored procedure?

Zeliran

New member
update ב stored procedure?

יש לי מתודה שמעדכנת את בסיס הנתונים ע"י dataAdapter.Update ... יש דרך שאני אוכל להעביר אותה ל StoredProcedure? או שלא ניתן? (מאחר והיא מקבלת DataTable... )
 

nirtheking

New member
...

תעשה את שאילתת ה-update ב-SP ואז תשתמש ב-SqlCommand כדי לקרוא לה (ExecuteNonQuery) אלא אם זו לא כוונתך?
 

gilad g

New member
ניתן ../images/Emo13.gif

אל תשתמש ב-CommandBuilder, ותערוך את ה-UpdateCommand שלך: (אני מניח שאתה משתמש ב-SQLSRV)
SqlCommand cmd = new SqlCommand("mySP"); cmd.CommandType = CommandType.StoredProcedure; // Add parameters & their values. consult documentation for more details. cmd.Parameters.Add(...); cmd.Parameters.Add(...); cmd.Parameters.Add(...); myDataAdapter.UpdateCommand = cmd;​
 

Zeliran

New member
../images/Emo3.gifרגעעעעע....

במתודה עצמה אני מקבל DataTable... ועד עכשיו השתמשתי ב update אבל עכשיו.. איך בעצם אני אמור לכתוב את ה SP? כלומר, אני אמור להכניס כפרמטר את ה datatable? לעבור כל שורה ולהכניס נתונים? איך בדיוק זה עובד?
 

gilad g

New member
שאלה טובה ../images/Emo13.gif

אתה לא מעביר את כל ה-DataTable בתור פרמטר... את זה ADO.NET עושה בשבילך. כשאתה עושה Update, מה שבעצם קורה זה שהאדפטר עובר שורה שורה בטבלה שלך, ועבור כל שורה הוא מריץ את הפקודה המתאימה - InsertCommand בשביל שורות חדשות, UpdateCommand בשביל שורות ששונו, ו-DeleteCommand בשביל שורות ש"נמחקו". כמו כן, לפני הרצת הפקודה עבור כל שורה, הוא ממלא את הערכים של הפרמטרים של הפקודה, עם הערכים של השורה. איך הוא יודע איזה ערכים לשים
ובכן, לכל SqlParameter יש מאפיין שנקרא SourceColumn, שמציין את השם של העמודה שממנה יש לקחת את הערך של הפרמטר. ADO.NET בודקת מהי העמודה ש-SourceColumn מצביע עליה, לוקחת את הערך של העמודה בשורה הנוכחית, שמה אותו בתוך ה-Value של ה-SqlParameter, ומבצעת (ExecuteNonQuery) את הפקודה
זה נושא די רחב, ואחד המקומות שמרחיבים עליו הוא ה-MSDN.
 

Zeliran

New member
../images/Emo4.gifבעיה חדשה (ולא קשורה...)

לפתע ה IIS רוצה לעשות בעיות, ועכשיו המצב הולך ככה: ה IIS עובד, אם אני מנסה להכנס לכל תוכנית שהיא שנמצאת ב localhost גורמת לסגירה של ה IIS... מפעילים שוב את ה IIS והבעיה חוזרת על עצמה... יש דרך אחרת לפתרון הבעיה חוץ מהתקנה מחדש? (בתקווה שזה יעזור..
)
 

Zeliran

New member
../images/Emo26.gifמוזר ביותר...

אחרי התעסקות די רבה עם ה COM+ מה שקורה עכשיו זה שאת הפרויקטים אני יכול לפתוח, להריץ, לקמפל ומה לא אבל אם אני מנסה להכנס סתם ל localhost למשל, אני עדיין נתקל באותה בעיה.. מוזר...
 

Zeliran

New member
../images/Emo41.gifכן, אבל..

ב DataTable שאיתו אני מעדכן את בסיס הנתונים קיימת שורה אחת מחוקה,אז איך בדיוק ה SP אמורה להיראות? אני אמור קודם לבצע פעולת DELETE ואחרי זה לעבור לעדכן את שער בסיס הנתונים? אבל זה די בעייתי בגלל שחסרה שורה, אז מפתח ראשי אחד חסר, ולפני שאני מעדכן את בסיס הנתונים, אני מעדכן את כל המספרים שבאותה עמודה נגיד אם היה 1,2,3,4 ומחקנו את 2 אז במקום שיהיה 1,3,4 עכשיו יש 1,2,3 אז איך אני אמור לעבור את זה?
 
למעלה