PDA

View Full Version : مشکل عجیب با try--catch



elderado
چهارشنبه 15 شهریور 1391, 17:41 عصر
با سلام به همه ی دوستان و مهندسین عزیز
دوستان من یه کد توی ترای ، کچ نوشتم
کد های توی ترای داره همش اجرا میشه و مشکلی نداره
اما کد های ترای که تموم شد میره قسمت کچ رو هم اجرا میکنه
مشکل کار کجاست؟
ممنونم که راهنمایی میکنید

harani
چهارشنبه 15 شهریور 1391, 17:47 عصر
خب اینجوری نمیشه که قضاوت کرد کدتونو باید بذارین .

elderado
چهارشنبه 15 شهریور 1391, 17:57 عصر
اینم کد


DataTable p = new DataTable();
DataTable s = new DataTable();
p = bl.bl.select("select user_pass from users where user_pass=N'" + txt_pass.Text + "'");
s = bl.bl.select("select user_name from users where user_name =N'" + txt_usr.Text + "'");
try
{
if (s.Rows[0]["user_name"].ToString() == txt_usr.Text)
{
if (p.Rows[0]["user_pass"].ToString() == txt_pass.Text)
{
if (bl.bl.select("select user_state from users where user_name=N'" + txt_usr.Text + "'").Rows[0][0].ToString() == "فعال")
{
frm_main.role = (bl.bl.select("select user_role from users where user_name=N'" + txt_usr.Text + "' and user_pass=N'" + txt_pass.Text + "'").Rows[0]["user_role"].ToString());
this.Hide();
frm_main.user_id = Convert.ToInt32(bl.bl.select("select user_id from users where user_name =N'" + txt_usr.Text + "' and user_pass=N'" + txt_pass.Text + "'").Rows[0][0].ToString());
frm_main f = new frm_main();
f.Show();
}
else { MessageBox.Show("نام کاربری غیر فعال شده است"); }
}
}
}
catch { MessageBox.Show("نام کاربری یا رمز عبور اشتباه است"); }

abdullah20
چهارشنبه 15 شهریور 1391, 19:41 عصر
:گیج::گیج:
عجیبتر از اون این تیکه کده
ببخشد این کد چیکار میکنه؟
کار لوگین کردن را انجام میده؟

FastCode
چهارشنبه 15 شهریور 1391, 19:49 عصر
اتفاقاً کد تمیزیه
به جز اینکه در برابر sqlinjection مقاوم نیست
پیشنهاد میکنم از Parameter های sql استفاده کنید و مقادیرشون رو جدا با یک field ه params به method ه select تون بدید
اینطوری نیازی نیست که کدتون رو زیاد تغییر بدید چون declaration ه متودتون تغییر زیادی نمیکنه

اما در مورد ه خطا
در کدام مسیر کد خطا دارید؟
اگر وقتی form ه main بسته میشه خطا دارید باید بگم احتمالاً خطایی شبیه ه cannot unload app domain یا خطاهایی از این دست ه که تا مشخصات ه exception رو نزارید نمیشه کاری کرد

در ضمن امیدوارم property های static ه form ه main تون public نباشن

مشکل دیگش هم اینه که هر کاربری میتونه با رمز بقیه کاربر ها وارد بشه
برای درست کردن این مشکل باید یکی از table ها رو حذف کنید و هر دو field ه user و pass رو در یک سطر fetch کنید

elderado
چهارشنبه 15 شهریور 1391, 21:17 عصر
خیلی خیلی ممنونم از جناب فست کد بخاطر راهنمایی موثر
راستش خودم هم تو فکرش بودم
میخواستم طول تکست باکسا رو محدود کنم تا از اینجکشن جلوگیری کنم
و تایمر بذارم تا کسی نتونه بروت فورس کنه
اما این چیزار رو توی کلاس سی ای اچ یاد گرفتم نمیدونم چطور پیاده سازیش کنم!
در مورد اینکه هر کاربر میتونه یا پسورد یکی دیگه لاگین کنه هم دو راه به نظرم میرسه
یکی اینکه موقعی که پسورد میخواد چک بشه یوزر نیم هم جزو شرط ها باشه
دوم هم اینکه از یک استور پروسیجر برای این کار استفاده کنم . و اینکه از پیشنهاد استفاده از متد Select چیزی نفهمدم میشه لطفا یه مثال برام بذارین؟؟(خواهشا)
این اولین استارت برنامه نویسی منه!!!
و اما مشکل توی این تاپیک با ترای کچ
من برنامه رو خط به خط اجرا کردم و دیدم که تا
f.show();
پیش میره و F رو نشون هم میده، اما بعدش میپره توی قسمت کچ و اون مسیج باکس رو اجرا میکنه
به نظرم چون توی قسمت لود فرمی که میخواد باز بشه کارای زیادی کردم و یه مقداری طول میکشه تا بیاد بالا ترای ، کچ فک میکنه که اون دستور failed شده!!
یه همچین چیزی میشه؟
من پروژه رو میزارم یه نگاهی بهش بندازید
خیلی سادس!!! آخه اولین استارت برنامه نویسیمه!!
ممنونم از توجه و کمکتون
http://stor1145.uploaded.net/dl/a5d45718-47a4-4a64-aedf-759a8993f5f4

FastCode
چهارشنبه 15 شهریور 1391, 21:44 عصر
http://stor1145.uploaded.net/dl/a5d45718-47a4-4a64-aedf-759a8993f5f4
You have reached the max. number of possible free downloads for this hour, please try again in an hour or purchase one of our premium products. (http://ul.to/register)

دانلود به من نرسید.
lol

elderado
چهارشنبه 15 شهریور 1391, 21:48 عصر
این بهترین سایت آپلوده که تا حالا دیدم
اگه سایتی دارید که میتونم توش آپلود کنم بهم بدید
حجمش یه ذره زیاد شده
اینجا آپلود نمیشه
ممنونم

elderado
چهارشنبه 15 شهریور 1391, 21:58 عصر
اینم پروژه
http://uplod.ir//project.rar.htm

FastCode
چهارشنبه 15 شهریور 1391, 23:09 عصر
url رو میزارم برای بقیه ولی تضمینی در uptime نمیدم چون سرورم ممکنه جابجا بشه
http://cavps.dyndns-server.com/elderado.rar

elderado
چهارشنبه 15 شهریور 1391, 23:34 عصر
آپلود شد
ممنونم
به نام
project.rar

FastCode
پنج شنبه 16 شهریور 1391, 01:10 صبح
فایل رو نگاه کردم
شما در frm_main_load یک دستور try catch اضافه کن

اون دو تا متغیر بالای فرم رو هم بکن internal به جای پابلیک
Ctrl D Ctrl E
همه ی check ها رو بزن تا همون لحظه ای که خطا میده برنامه break بشه

elderado
پنج شنبه 16 شهریور 1391, 03:39 صبح
من به شدت از شما ممنونم دوست عزیز
خیلی لطف کردی
کارم راه افتاد
داداش پروژمو دادم نگا کردی اگه پیشنهادی چیزی داری بهم بگو ممنون میشم
بازم ممنونم ازت بابت جواب این تاپیک