2 שאלות בעניני DB

2 שאלות בעניני DB

1. איך אפשר לגשת לשורה בטבלה בגישה ישירה, זאת אומרת שיש לי את המפתח לשורה ואני רוצה לעדכן שדה בשורה הזאת. 2. בלי קשר לנ"ל, אני רוצה לעדכן שדה בטבלה, בצורה כזו: אם תנאי מסוים מתקיים אז להוסיף לשדה סכום מסוים. האם אני צריכה קודם לעשות SELECT ואח"כ לחבר את הסכומים ואח"כ לעדכן, או שאפשר במשפט אחד לעדכן ע"י הוספה. מקוה שהסברתי את השאלה ברור אם לא תודיעו לי ואני אנסה להסביר עוד פעם. תודה רבה
 

adam222

New member
את מתכוונת...

באמצעות שאילתות SQL? אם כן, אז: 1. באמצעות משפט SQL UPDATE tbl_user set userPass='555' where ID=150 2. אפשר במשפט SQL אחד
 
תודה ושאלות:

1. לזה התכוונתי אבל נראה לי שזה לא נקרא גישה ישירה, הוא לא מחפש בכל הטבלה אם ה-ID שווה 150 עד שהוא מוצא? 2. איך אפשר להוסיף מספר במשפט אחד? איך אני יודעת מה היה שם קודם? או שיש מילה שאומרת לו לחבר? תודה רבה
 

אבי דקל

New member
../images/Emo41.gif תשובות :

השאלות הללו הם שאלות ב SQL, לא בדוט נט
1. פקודת Update. אם השדה הינו המפתח הראשי בטבלה, כנראה מוגדר עליו אינדקס, ולכן לא מתבצע Full Table Scan, אלא סריקה האינדקס וגישה רק לרשומה הרלוונטית. 2. שוב פקודת Update, אך הפעם יש להוסיף ל Where את התנאי. אם התנאי מתייחס לשדה אחר בטבלה, אז פשוט כותבים אתו ב Where, אם התנאי מתייחס לתוכנית שלך, אז מבצעים IF בתוכנית, ואם התנאי מתקיים מבצעים את ה Update.
 
תודה רבה

אתה צודק אבל כאן ה
שלי בקשר ל-2, אני יודעת לעשות UPDATE כשאני רוצה להחליף ערך בשדה מסוים, הבעיה שלי היא שבשדה בטבלה יש כבר מספר ואני רוצה להוסיף לו, איך אני כותבת כזה UPDATE. לדוגמא:
UPDATE TBL1 SET Num=5 WHERE Type=2​
כל פעם שהסוג יהיה 2 הוא יכניס בשדה NUM את המספר 5, אני רוצה שהוא יוסיף את המספר 5 למספר שכבר יש בשדה NUM. תודה
 
שאלה על התחביר של #C

ב-++C יש אפשרות להגדיר פונקציות עם מה שנקרא Default parameter. זאת אומרת להציב ערך ברירת מחדל לפרמטר שמתקבל בפונקציה, כך שאם לא נשלח פרמטר אז הפונקציה משתמשת ב-default. ב#C יש גם אפשרות כזאת? ניסיתי והוא מודיע על שגיאה.
 

gooshi

New member
תחביר של #C

תעשי Overloading לפונקציה, זאת אומרת אחת שלא מקבלת פרמטר ואז קובעת בעצמה את הערך האוטומטי והשניה שמקבלת פרמטר למשל:
private int mul(int a) { return a*2; } private int mul(int a,int b) { return a*b; }​
מה שקורה הוא כשאת מכפילה מספרים את יכולה להעביר את הפרמטר הראשון בלבד ואז הערך האוטומטי שיקבל "הפרמטר השני" הוא 2. אחרת, את יכולה לקרוא לפנוקציה זו עם שני פרמטמרים שונים. בהצלחה, The Goosh
 
תודה אבל את זה גם אני יודעת

ואם אתה רוצה יותר מזה אפשר גם לכתוב:
private int mul(int a) { return this.mul(a,2); } private int mul(int a,int b) { return (a*b); }​
אם זה הרבה קוד אז זה יותר פשוט כמו בדוגמא כדי לא לכתוב כפילויות. שאלתי אם יש אפשרות לעשות את זה כמו ב++C כך:
private int mul(int a,int b=2) { return (a*b); }​
תודה רבה
 

gooshi

New member
כולי אושר....

אני ממש מאושר לשמוע שאת יודעת מה זה Overloading . ואפילו ברמת מתקדמים.... עכשיו בטוח אשן טוב יותר בלילה. למיטב ידיעתי אין ב #C אופציה פרמטר Optional כמו שיש ב- VB או כמו שציינת את היכולת הנ"ל הקיימת ב ++C.
 

Admini

New member
מי אמר ש-Overloading לא עובד ב-VB

נסו לבנות 2 פונקציות באותו השם עם פרמטרים שונים ותראו שאין בעיה מיוחדת
 

gooshi

New member
אתה לא מדייק

קודם כל למיטב זכרוני הטענה שמסרת שייכת לשרשור אחר בכלל בנוגע להבדלים בין #C ל VB בכל מקרה, ידוע כי ניתן לעשות Overloading לפונקציה ב VB לא ניתן לבצע Operator Overloading ב VB זאת אומרת לקבוע התנהגות של אופרטוה + למשל על שני אובייקטים שתגדיר, לעומת #C שבה אפשר Tha Goosh
 
למעלה