PDA

View Full Version : برگرداندن اطلاعات از متدی خاص در برنامه نویسی شئی گرا



ho0rezam
پنج شنبه 22 دی 1390, 12:55 عصر
سلام و خسته نباشید به اساتید.

من قبلا توی کارها asp.netی که انجام میدادم ، تمام مراحل select و update و delete و غیره رو در codebehind صفحهاتم انجام میدادم..حالا دارم روی برنامه نویسی چند لایه کار میکنم و شئی گرایی یه چند تا سوال واسم پیش اومده.

اول مراحل کار رو میگم:


یه کلاس تعریف کردم
داخل کلاس متدی نوشتم که connection string رو میگیره و return میکنه


public string ConnectionString
{
get
{
return ConfigurationSettings.AppSettings["DBconnectionString"].ToString();
}
}




بعد یه متد کلی واسه همه فرآیند های update و delete و insert که روش یکسانی دارن نوشتم


public int ExecuteNoneQuery(string cmdtxt, params SqlParameter[] cmdparameters)
{
SqlConnection con = new SqlConnection(ConnectionString);
SqlCommand cmd = new SqlCommand();

cmd.Connection = con;
cmd.CommandText = cmdtxt;
cmd.Parameters.AddRange(cmdparameters);

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

return 0;
}




که در نهایت اطلاعات وارد دیتابیس میشه.

حالا مشکلم روی SELECT هست که کلا فرآیندش متفاوته با این 3 تا و باید مثلا از SQLDataReader استفاده کرد.



مثلا فرض کنید همچین متدی نوشتم (نمیدونم درست هست یا نه)


public SqlDataReader DataReader(string cmdtxt)
{
SqlConnection con = new SqlConnection(ConnectionString);
SqlCommand cmd = new SqlCommand();
SqlDataReader dr = new SqlDataReader();

cmd.Connection = con;
cmd.CommandText = cmdtxt;
con.Open();
dr = cmd.ExecuteReader();
con.Close();

return dr;
}






cmdtxt در واقع همون query دیتابیس هست که اطلاعات رو واکشی میکنه و در داخل dr میذاره
و حالا مشکل return کردن



مشکل من روی برگردوندن اطلاعات هست،منظورم اینه که وقتی متد مورد نظر اطلاعات رو از دیتابیس گرفت چجوری اون رو برگردونم؟ و چطور متد های دیگه این اطلاعات برگردونده شده رو بگیرن؟ و همینطور مثلا TextBox های موجود در صفحه چطور با مقادیر گرفته شده پر بشن؟

پیشاپیش ممنون از راهنماییتون

dorparasti
پنج شنبه 22 دی 1390, 14:27 عصر
توی همین سایت در این مورد زیاد صحبت شده و پروژه های سورس باز هم زیاد هست برای یادگیری . اینجا (http://barnamenevis.org/showthread.php?141777-%D9%81%D9%87%D8%B1%D8%B3%D8%AA-%D9%85%D9%82%D8%A7%D9%84%D8%A7%D8%AA%D8%8C-%D9%BE%D8%B1%D9%88%DA%98%D9%87-%D9%87%D8%A7-%D9%88-%D8%AA%D8%A7%D9%BE%DB%8C%DA%A9-%D9%87%D8%A7%DB%8C-%D9%85%D9%81%DB%8C%D8%AF-%D8%AA%D8%A7%D9%84%D8%A7%D8%B1-ASP.NET-%28%D8%AF%D8%B1-%D8%AD%D8%A7%D9%84-%D8%AA%DA%A9%D9%85%DB%8C%D9%84%29&p=659702#post659702)رو نگاه کن

یک نمونه آموزشی هم اینجا (http://www.how2learnasp.net/article.aspx?code=88407883-053c-4035-88c8-b75d804d6e2c)می تونی ببینی

در مورد استفاده از یک کلاس برای انجام عملیات های مربوط به دیتابیس که بهش sqlHelper هم می گن این مطلب رو از این سایت (http://www.dotnettips.info/2012/01/sqlhelper.html) برات می نویسم :



يك درخواست عمومي!
لطف كنيد در پروژ‌هاي «جديد» خودتون اين نوع كلاس‌هاي SqlHelper رو «دور بريزيد». ياد گرفتن كار با يك ORM جديد اصلا سخت نيست. مثلا طراحي Entity framework مايكروسافت به حدي ساده است كه هر شخصي با داشتن بهره هوشي در حد يك عنكبوت آبي يا حتي جلبك دريايي هم مي‌تونه با اون كار كنه! فقط NHibernate هست كه كمي مرد افكن است و گرنه مابقي به عمد ساده طراحي شده‌اند.
مزاياي كار كردن با ORM ها اين است:
- كوئري‌هاي حاصل از آن‌ها «پارامتري» است؛ كه اين دو مزيت عمده را به همراه دارد:
امنيت: مقاومت در برابر SQL Injection
سرعت و همچنين مصرف حافظه كمتر: با كوئري‌هاي پارامتري در SQL Server همانند رويه‌هاي ذخيره شده رفتار مي‌شود.
- عدم نياز به نوشتن DAL شخصي پر از باگ. چون ORM يعني همان DAL كه توسط يك سري حرفه‌اي طراحي شده.
- يك دست شدن كدها در يك تيم. چون همه بر اساس يك اينترفيس مشخص كار خواهند كرد.
- امكان استفاده از امكانات جديد زبان‌هاي دات نتي مانند LINQ و نوشتن كوئري‌هاي strongly typed تحت كنترل كامپايلر.
- پايين آوردن هزينه‌هاي آموزشي افراد در يك تيم. مثلا EF را مي‌شود به عنوان يك پيشنياز در نظر گرفت؛ عمومي است و همه گير. كسي هم از شنيدن نام آن تعجب نخواهد كرد. كتاب(هاي) آموزشي هم در مورد آن زياد هست.