לא מוצא את הבעיה בשאילתא. - תכנות - HWzone פורומים
עבור לתוכן
  • צור חשבון

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


omfir

Recommended Posts

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


//עידכון סיסמא של קורא
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");
}
}
}
}

קישור לתוכן
שתף באתרים אחרים

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



פונקציה מקבלת שם סיסמא וסיסמא חדשה
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. איזו שאילתא אתה צריך?

קישור לתוכן
שתף באתרים אחרים

ארכיון

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

×
  • צור חדש...