PDA

View Full Version : سوال: مقایسه یوزر و پسورد در بانک اطلاعاتی



Direlap
شنبه 27 خرداد 1391, 22:24 عصر
سلام دوستان

من یه کد دارم که اینه :

SqlCommand Cmd = new SqlCommand("Select * from tblUser Where UserName like @a AND Password Like @b");
cmd.Parameters.Add("@a", SqlDbType.VarChar).Value = a[1];
cmd.Parameters.Add("@b", SqlDbType.VarChar).Value = a[2];


تو کد بالایی من میخوام ببینم که یوزر و پسوردی که وارد می کنیم درسته یا نه ؟ بعد اجرا شدن کد با

con.Open();
cmd.ExecuteNonQuery();

حالا چطوری میتونم بفهمم که کد اجرا شده چه خروجی ای داره . چون من تا حالا خروجی رو به دیتاگرید ویو میدادم . یعنی کدوم کاربری هست که این یوزرنیم و پسورد باهاش مچ هست ؟

ممنونم ازتون

saeedx28
یک شنبه 28 خرداد 1391, 00:16 صبح
سلام بعد از cmd.ExecuteNonQuery(); کد زیر را وارد کن

sqldatareader dr = cmd.Executereader;
if dr .HasRows ==True
اگر دستور if فوق مقدار true را برگرداند یعنی یوزر و پسورد درست بوده و یک خروجی دارد

omidamiry
یک شنبه 28 خرداد 1391, 09:10 صبح
سلام
ی بار دوستم گفت اگه در تکس باکس نام کاربر بنویسی or و در یوزر 1 بزاری این معادله جوابش ترو میشه و انجام میشه یعنی هک شدن برنامتون.
به نظر من شما در جدول یوزر گشت بزن و سلکت کن و با دوتا ایف نام کاربری و پسوردو چک کن تا این مشکل پیش نیاد.

Direlap
یک شنبه 28 خرداد 1391, 15:09 عصر
سلام بعد از cmd.ExecuteNonQuery(); کد زیر را وارد کن

sqldatareader dr = cmd.Executereader;
if dr .HasRows ==True
اگر دستور if فوق مقدار true را برگرداند یعنی یوزر و پسورد درست بوده و یک خروجی دارد

پس خروجی این دستور ترو یا فالس هست دیگه نه ؟

خوب اگه بخوام بجای نمایش در گرید ویو به اون کدهای اجراشده دسترسی داشته باشم چطور باید عمل کنم ؟

Direlap
یک شنبه 28 خرداد 1391, 15:12 عصر
سلام
ی بار دوستم گفت اگه در تکس باکس نام کاربر بنویسی or و در یوزر 1 بزاری این معادله جوابش ترو میشه و انجام میشه یعنی هک شدن برنامتون.
به نظر من شما در جدول یوزر گشت بزن و سلکت کن و با دوتا ایف نام کاربری و پسوردو چک کن تا این مشکل پیش نیاد.

خوب مشکل من اینجاست که چطوری به کد اجرا شده دسترسی پیدا کنم . مثلا وقتی سلکت می کنم و یا یه کدی رو اجرا می کنم راحت تو گرید ویو نشون میدادم ولی اگه بخوام بهش دسترسی داشته باشم چطور ؟

saeedx28
یک شنبه 28 خرداد 1391, 17:31 عصر
پس خروجی این دستور ترو یا فالس هست دیگه نه ؟

خوب اگه بخوام بجای نمایش در گرید ویو به اون کدهای اجراشده دسترسی داشته باشم چطور باید عمل کنم ؟

sqldatareader یه خاصیت HasRows داره که میگه دستور سلکت شما خروجی دارد یا نه و اونو با ترو فالس نمایش می ده برای دسترسی به داده های جدولی که سلکت کردی می تونی از dr.item("نام فیلد جدول"); استفاده کنی که لازم قبلش دستور dr.read(); اجرا بشه و در آخر هم dr.close و اگر خروجی سلکت شما چند رکورد باشد می تونی از یه حلقه while و شمارنده i برای دسترسی به هر سطر استفاده کنی
مثال

int i;
string name(10);
while (dr.read())
{
name(i)=dr.item("name").tostring;
i=i+1;
}
dr.close();