עבור לתוכן

לא מוצא את הבעיה בשאילתא.

Featured Replies

פורסם

השאליתא אמורה לבדוק שהשם משתמש והסיסמא תואמים ועל כן לשנות את הסיסמא.


//עידכון סיסמא של קורא
public void ReaderPassword(string UserNickName, int UserPassword, int NewPass)
{
DataSet ds = Sqlhelper.fill(string.Format("select * from Korym where UserPassword={0} AND UserNickName={1}", "UserPassword", "UserNickName"), "Korym");
if (ds.Tables["Korym"].Rows.Count > 0)
{
DataRow dr = ds.Tables["Korym"].Rows[0];
if(dr["UserNickName"]=="UserNickName")
{
if (dr["UserPassword"] == "UserPassword".ToString())
{
dr["UserPassword"] = NewPass;
Sqlhelper.update(ds, "select * from Korym", "Korym");
}
}
}
}

פורסם

תדפיס את המחרוזת שאתה מעביר לשאילתא (או שתסתכל עליה ב-debug) וכבר תבין מה הבעיה.

(רמז: היא לא שונה בהרבה מהבעיות שהיו לך עד עכשיו)

פורסם
  • מחבר

בdebug אני לא רואה שום בעיה אבל הוא לא משנה את הסיסמא.

ניסיתי להבין מה הבעיה במחרוזת ואני עדיין לא מבין... :(

פורסם

נניח שהפרמטרים שעוברים לפונקציה הם "yossi" ו-12345. אז מה השאילתא שמועברת ל-Sqlhelper.fill ?

פורסם
  • מחבר



t("select * from Korym where UserPassword={0} AND UserNickName={1}", "UserPassword", "UserNickName"), "Korym");

השאילתא הזו לפי הבנתי

פורסם
  • מחבר

"UserPassword", "UserNickName" אלה השדות שהוא מאחזר.

if(dr["UserNickName"]=="UserNickName") זו המחרוזת שהוא בודק.

פורסם
  • מחבר

טוב מן הסתם שאני לא מבין איפה הטעות אז אני אסביר כל שורה מה היא עושה לפי מה שאני יודע.



פונקציה מקבלת שם סיסמא וסיסמא חדשה
public void ReaderPassword(string UserNickName, int UserPassword, int NewPass)
{
שאילתא שמאחזרת את הסיסמא והשם משתמש כאן יוסי ו12345 נכנסים לתמונה.
DataSet ds = Sqlhelper.fill(string.Format("select * from Korym where UserPassword={0} AND UserNickName={1}", "UserPassword",
"UserNickName"), "Korym");

אני חושב שזה בודק אם יש בכלל נתונים בטבלה הזו.
if (ds.Tables["Korym"].Rows.Count > 0)
{
DataRow dr = ds.Tables["Korym"].Rows[0];

השוואת שם המתשמש אם הוא זהה(נראה לי שיש לי פה טעות כי בפרמטר של הפונקציה המחרוזת של השם היא זהה לזו שבטבלה)
if(dr["UserNickName"]=="UserNickName")
{
אותו עיקרון
if (dr["UserPassword"] == "UserPassword".ToString())
{
dr["UserPassword"] = NewPass;
Sqlhelper.update(ds, "select * from Korym", "Korym");
}
}
}
}

אולי תסביר לי איך זה עובד פה כי לפי מה שאתה רוצה זה לא בדיוק ברור לי ולכן אני לא יכול לענות לך על השאלה בבירור.

פורסם

אתה מעביר מחרוזות במקום משתנים.

פורסם

הבעיה היא שזו המחרוזת שאתה מעביר:

select * from Korym where UserPassword=UserPassword AND UserNickName=UserNickName

במקום להעביר לה את UserPassword ו-UserNickName אתה מעביר "UserPassword" ו-"UserNickName", שהן סתם מחרוזות, ולא הפרמטרים שהועברו לפונקציה.

פורסם
  • מחבר

גם אחרי שתיקנתי את זה זה עדיין לא עובד.

משהו מתפקשש לי באופרטור של הIF.

שינתי את UserPass ממחרוזת למשתנה אבל עדיין זה לא עובד.

קשה לי להבין בחקלים אני חושב שהכי טוב שאני אראה את כל הבלוק קוד מתוקן וככה אני אוכל לשאול שאלות ולהבין סוף-סןף

פורסם
  • מחבר


public void ReaderPassword(string UserNickName, int UserPassword, int NewPass)
{
DataSet ds = Sqlhelper.fill(string.Format("select * from Korym where UserPassword=UserPassword AND UserNickName=UserNickName"), "Korym");
if (ds.Tables["Korym"].Rows.Count > 0)
{
DataRow dr = ds.Tables["Korym"].Rows[0];
if (dr["UserNickName"] == "UserNickName")
{
if (dr["UserPassword"] == UserPassword.ToString())
{
dr["UserPassword"] = NewPass;
Sqlhelper.update(ds, "select * from Korym", "Korym");
}
}
}
}


:bash: :bash: :bash: :bash:

פורסם

טרחת לקרוא בכלל את ההודעה שכתבתי לך?

הבעיה היא שזו המחרוזת שאתה מעביר:

select * from Korym where UserPassword=UserPassword AND UserNickName=UserNickName

במקום להעביר לה את UserPassword ו-UserNickName אתה מעביר "UserPassword" ו-"UserNickName"' date=' שהן סתם מחרוזות, ולא הפרמטרים שהועברו לפונקציה.

[/quote']

בוא נעשה את זה צעד אחר צעד: אם אני רוצה לעשות שאילתת SQL שתחזיר לי את כל הרשומות מהטבלה Korym ששם המשמש שלהם הוא yossi והססמה היא 12345. איזו שאילתא אתה צריך?

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

דיונים חדשים