PDA

View Full Version : مشکل در کد(login کردن)



mahsa_999
سه شنبه 17 مهر 1386, 05:29 صبح
سلام
این کد رو من برای login کردن به یک برنامه نوشتم. اما مشکلی که داره اینه که وقتی پسورد رو از database می خونه و با پسوردی که کاربر وارد کرده مقایسه می کنه همیشه نتیجه مقایسه رو نابرابر می ده در حالی که وقتی مقادیرو چک می کنم برابرن!



try
{

SqlCommand mySqlCommand = new SqlCommand();
mySqlCommand.Connection = mySqlConnection;
mySqlCommand.CommandText = "SELECT password FROM login" +
" WHERE username=@username;";
mySqlCommand.Parameters.AddWithValue("@username", txtUserName.Text);
mySqlCommand.CommandType = CommandType.Text;

mySqlConnection.Open();
SqlDataReader mySqlDataReader = mySqlCommand.ExecuteReader();
mySqlDataReader.Read();
string password = mySqlDataReader["password"].ToString();
if (mySqlDataReader.ToString() == "")
{
MessageBox.Show("نام کاربری وارد شده معتبر نمیباشد");
}
else if (txtPassword.Text == password)
{
form2 test=new form2();
test.show();
}
else if (txtPassword.Text != password)
{
MessageBox.Show("رمز عبور وارد شده معتبر نمیباشد");
}
mySqlConnection.Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}

hdv212
سه شنبه 17 مهر 1386, 07:22 صبح
کدوم یکی از پیغام هارو میده ؟ اگه این یکیو میده :

نام کاربری وارد شده معتبر نمیباشد
مشکل در این قسمت از کده :

if (mySqlDataReader.ToString() == "")
{
MessageBox.Show("نام کاربری وارد شده معتبر نمیباشد");
}
شما چرا آبجکت mySqlDataReader رو به ToString بردی ؟ ظاهرا میخواستی مقدار برگشتی رو بررسی کنی که آیا داشته یا نه، از این متد به جاش استفاده کن ببین مشکل حل میشه :

if (!mySqlDataReader.HasRows())
{
MessageBox.Show("نام کاربری وارد شده معتبر نمیباشد");
}

mahsa_999
سه شنبه 17 مهر 1386, 08:31 صبح
ممنون از راهنمایی اما
این پیغامو نمیده درواقع سومین if اجرا می شه و می گه رمز عبور وارد شده درست نیست

hdv212
سه شنبه 17 مهر 1386, 09:14 صبح
مطمئنی که اطلاعات رو درست وارد میکنی، منظورم بزرگی و کوچی حروف و فاصله و ... هست.
یه چیز دیگه هم اینکه آیا شما از حروفی مثل ی یا آ یا امثال اینها استفاده میکنید ؟ ممکنه این حروف با حروفی که در دیتابیس ذخیره شدن یکی نباشن، یه راه حل اینکه دقیقا اون پسوردی که در دیتابیس نوشتید رو در جایی مثل notepad کپی کنید و در runTime دقیقا همونو paste کنید تا حداقل شکمون برطرف بشه.

mahsa_999
سه شنبه 17 مهر 1386, 09:46 صبح
این کارها رو کردم اما همچنان ایرادو داره. حتی هر دو رو تو یه textbox دیگه چاپ کردم و مثل هم بودن

mahsa_999
سه شنبه 17 مهر 1386, 09:49 صبح
شما راه دیگه ای برای login می دونید؟

hdv212
سه شنبه 17 مهر 1386, 14:44 عصر
دوست عزیز من دقیقا کد شما رو کپی کردم و تست کردم، مشکلی نداشت. صد در صد یه جای کار رو اشتباه میرید.