PDA

View Full Version : حرفه ای: مشکل در کلاس نویسی لاگین (منطق و عملکرد)



mahlake
جمعه 23 مرداد 1394, 09:35 صبح
با سلام من تا به امروز کیلویی کد مینوشتم... حالا تصمیم گرفتم کلاس نویسی کنم اما یه لاگین ساده را هم نمیتونم بنویسم میشه کدم رو نگاه کنید و ایراد هایم رو بگیرید؟ کلا کد لاگینم کار نمیکنه


یه کلاس ساختم که باهاش استرینگ برای کامند تکست هام رو به منظور خوندن اطلاعات از دیتابیس میسازم که کد کلاس به شرح زیر هست:

public class logcod
{
private string _usern;
private string _passw;
public string Usern
{
get
{
return _usern;
}
set
{
_usern = value;
}
}
public string Passw
{
get
{
return _passw;
}
set
{
_passw = value;
}
}
public string logcomm()
{
string a = "Select user,pass from rezervtion where [user]='" + _usern + "'AND [pass]='" + _passw + "'";
return (a);
}
}


بعد اومدم توی رویداد کلیک دکمه در برنامه مقدار ها رو به این کلاس فرستادم و بعد استرینگی که برای کامند تکست ساختم رو گرفتم و فرستادمش به یه کلاس دیگه تا عملیات لاگین رو چک کنم

این کد کلاسی هست که استرینگ رو میگیره و اطلاعات رو میخونه که کلا نه پیدا میکنه و نه چیزی برمیگردونه هست:

public class logapp
{
conADO conado = new conADO();
private string _a;
public string A {
get
{
return _a;
}
set
{
_a = value;
}
}
public DataTable loguser()
{
SqlDataAdapter cmd = new SqlDataAdapter(_a,conado.con);
conado.opencon();
DataTable dr = new DataTable();
cmd.Fill(dr);
return dr;


}
}



یه کلاس دیگه هم ساختم که کانکشن استرینگ ها رو نگه داره که به شرح زیره:

public class conADO
{
public SqlConnection con = new SqlConnection("Data Source=.;Initial Catalog=moshavereh;Integrated Security=True;");
public void opencon()
{

if (con.State == ConnectionState.Closed)
con.Open();
}

}


و در آخر هم کد دکمه ام:

private void vrdlogbtn_Click(object sender, RoutedEventArgs e)
{
logcod lgcom = new logcod();
lgcom.Usern=userlogtxt.Text.Trim();
lgcom.Passw = passlogtxt.Password;
string a= lgcom.logcomm();
logapp logap = new logapp();
logap.A = a;


DataTable dr=logap.loguser();


if (dr.Rows.Count>=1)
{
اینجا کد بازشدن فرم قراره نوشته بشه
}
else
{
MessageBox.Show("Incorrect");
}


}


ببخشید یه کم طولانی شد....

واقعا ممنونم که وقت گذاشتید و تا انتهای این پست رو خوندید...

davidrobert
جمعه 23 مرداد 1394, 10:10 صبح
دوست عزیز همه اطلاعات رو نمیشه کلاس نویسی کرد مثلا دستور لاگین رو بخواهید کپسوله کنید تو هم فرم بدرد میخوره .یک بار بنویسید و در دکمه و کلید ترکیبی صدا کنید این طوری بهتر هستش دستور های اسکیولی ولی میگیم کلاس نویسی یا همون کپسوله کاری کنیم یعنی این که دستور های فوق تکراری رو یک بار بنویسم و هزاران بار صدا کنیم . یعنی تاریخ و ساعت زیاد لازم میشه به جایی اینکه بیام صد هزار بار این دستور رو بنویسیم داخل کلاس مینویسم و صداش میکنیم من در این سورس http://barnamenevis.org/showthread.php?435582-%D8%AF%D8%A7%D9%86%D9%84%D9%88%D8%AF-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D8%AD%D8%B3%D8%A7%D8%A8%D8%AF%D8%A7%D8%B1%DB%8C-%D8%A8%D8%A7-%D8%A7%D9%85%DA%A9%D8%A7%D9%86%D8%A7%D8%AA-%DA%A9%D8%A7%D9%85%D9%84-%D9%88-%D9%87%D9%85%DA%86%D9%86%DB%8C%D9%86-%DA%86%D8%A7%D9%BE-%D9%81%D8%A7%DA%A9%D8%AA%D9%88%D8%B1-%D8%A8%D8%A7-%D8%AA%DA%A9%D9%86%D9%88%D9%84%D9%88%DA%98%DB%8C-EF&p=1948713&viewfull=1#post1948713 که لینکش رو قرار دادم کد های زیادی به صورت کلاس نوشتم که بار ها و بارها مینوشتم که تکراری بود بخاطر همین یک بار مینوشتم و بارها صداش میزدم شما اول ببنید چی میخواهید و کدم دستور رو راه به راه باید بدید اون رو کپسوله یا کلاس نویسی کنید نه همه دستور ها رو من تو این سورس 50 درصد کد نویسی رو کاهش دادم و در برنامه جدید هام 80 درصد دیگه کاهش دادم. و این 2 درصد رو نمی تونم کاری کنم دستور های کار با دیتابیس هستش فقط یک بار مینویسم در دکمه و کلید ترکیبی صدا میکنم. شما اگه به فکر کاهش کد نویسی هاتون هستید اول کلاس نویسی یا کپسوله نویسی و دوم کامپوننت سازی یاد بگرید کلی کارتون رو جلو میندازه.

mahlake
جمعه 23 مرداد 1394, 11:09 صبح
دوست عزیز همه اطلاعات رو نمیشه کلاس نویسی کرد مثلا دستور لاگین رو بخواهید کپسوله کنید تو هم فرم بدرد میخوره .یک بار بنویسید و در دکمه و کلید ترکیبی صدا کنید این طوری بهتر هستش دستور های اسکیولی ولی میگیم کلاس نویسی یا همون کپسوله کاری کنیم یعنی این که دستور های فوق تکراری رو یک بار بنویسم و هزاران بار صدا کنیم . یعنی تاریخ و ساعت زیاد لازم میشه به جایی اینکه بیام صد هزار بار این دستور رو بنویسیم داخل کلاس مینویسم و صداش میکنیم من در این سورس http://barnamenevis.org/showthread.php?435582-%D8%AF%D8%A7%D9%86%D9%84%D9%88%D8%AF-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D8%AD%D8%B3%D8%A7%D8%A8%D8%AF%D8%A7%D8%B1%DB%8C-%D8%A8%D8%A7-%D8%A7%D9%85%DA%A9%D8%A7%D9%86%D8%A7%D8%AA-%DA%A9%D8%A7%D9%85%D9%84-%D9%88-%D9%87%D9%85%DA%86%D9%86%DB%8C%D9%86-%DA%86%D8%A7%D9%BE-%D9%81%D8%A7%DA%A9%D8%AA%D9%88%D8%B1-%D8%A8%D8%A7-%D8%AA%DA%A9%D9%86%D9%88%D9%84%D9%88%DA%98%DB%8C-EF&p=1948713&viewfull=1#post1948713 که لینکش رو قرار دادم کد های زیادی به صورت کلاس نوشتم که بار ها و بارها مینوشتم که تکراری بود بخاطر همین یک بار مینوشتم و بارها صداش میزدم شما اول ببنید چی میخواهید و کدم دستور رو راه به راه باید بدید اون رو کپسوله یا کلاس نویسی کنید نه همه دستور ها رو من تو این سورس 50 درصد کد نویسی رو کاهش دادم و در برنامه جدید هام 80 درصد دیگه کاهش دادم. و این 2 درصد رو نمی تونم کاری کنم دستور های کار با دیتابیس هستش فقط یک بار مینویسم در دکمه و کلید ترکیبی صدا میکنم. شما اگه به فکر کاهش کد نویسی هاتون هستید اول کلاس نویسی یا کپسوله نویسی و دوم کامپوننت سازی یاد بگرید کلی کارتون رو جلو میندازه.

با سلام و تشکر از وقتی که گذاشتید...
من میخوام طوری کلاس نویسی کنم که مثلا هر سری مجبور نباشم که کد لاگین رو بنویسم... یا سرچ رو بنویسم... برای همین میخواستم لاگین رو توی یه کلاس خارجی بنویسم که توی همه برنامه هام ازش استفاده کنم...

davidrobert
جمعه 23 مرداد 1394, 13:08 عصر
دوست عزیز عنوان های دیتابیس هی عوض میشه دستورات اسکیلول نیاز به کلاس نویسی نداره چون اطلاعات دیتابیس عوض و کم زیاد میشه فقط مقادر ثابت تکراری یاد بگرید کلاس نویسی کنید کلی کارتون رو جلو میندازه.