PDA

View Full Version : سوال در مورد برنامه نویسی3 لایه



ATili.Nero
جمعه 11 آذر 1390, 18:17 عصر
دوستان من سایت کتابخانه را برای پروژه پایان ترمم دارم درست می کنم.
استاد مربوطم گفته که 3 لایه باشه.
کد ها رو همون حالت قبل 3 لایه درست کردم
دستور Insert کار می کند اما دستور Show که باید به GridView بدهد اون اشکال داره
نمونه کدهام رو پایین نوشتم
یه نگاه بندازید
موندم خودم....

کد مربوط به کلاس DataBase

using System;
using System.Collections.Generic;
using System.Web;
using System.Data;
using System.Data.Sql;
using System.Data.SqlClient;

/// <summary>
/// Summary description for DataBase
/// </summary>
public class DataBase
{
public SqlConnection Conection = new SqlConnection();

public void connect()
{
Conection.ConnectionString = "Data Source=ATILI-VAIO;Initial Catalog=DataBase;Integrated Security=True";
if (Conection.State == ConnectionState.Closed) Conection.Open();
}

public void disconnect()
{
if (Conection.State == ConnectionState.Open) Conection.Close();
}

public void command(SqlCommand Command)
{
this.connect();
Command.Connection = Conection;
Command.CommandType = CommandType.Text;
Command.ExecuteNonQuery();
this.disconnect();
}

public DataTable docommand(SqlCommand Command)
{
this.connect();
DataTable dt = new DataTable();
SqlDataAdapter da = new SqlDataAdapter(Command);
Command.Connection = Conection;
Command.CommandType = CommandType.Text;
da.Fill(dt);
this.disconnect();
return dt;
}
}


کد مربوط به کلاس Admin (لایه دوم)


using System;
using System.Collections.Generic;
using System.Web;
using System.Data;
using System.Data.SqlClient;

/// <summary>
/// Summary description for Class_Admin
/// </summary>
public class Class_Admin
{
public SqlDataReader Show_Admin()
{
SqlCommand Command = new SqlCommand();
Command.CommandText = "select * from Admin";
DataBase db = new DataBase();

SqlDataReader da = Command.ExecuteReader();
return da;
//return db.docommand(Command);
}
}


و در نهایت هم در فرم ASP کد زیر را قرار می دهم


Class_Admin Admin=new Class_Admin
Grdiview1.datasource=Admin.show();
GridView1.databind();

ghameshloe
جمعه 11 آذر 1390, 20:46 عصر
سلام
دوست عزیز به جای اینکه این مشکلت را حل کنی لطفا یکم بیشتر در مورد معماری چندلایه تحقیق کن و از نمونه ها مثل وب سایت که آقای فتح الهی گذاشتند استفاده کن. یا حسین(علیه السلام)

fakhravari
شنبه 12 آذر 1390, 00:17 صبح
با سلام در کل اگه از کلاس استفاده کنید میشه لایه.
و این چند لایه بستگی به خودتون داره که لایه بانک کلا از کلاس یک موجودیت جدا کنید

Saman Hashemi
شنبه 12 آذر 1390, 09:32 صبح
با سلام در کل اگه از کلاس استفاده کنید میشه لایه.
و این چند لایه بستگی به خودتون داره که لایه بانک کلا از کلاس یک موجودیت جدا کنید
دوست عزیز شما هم بیشتر تحقیق کن...!
خیر صرف استفاده از کلاس لایه نویسی نمیشه لایه نویسی قواعد و قانون های خودشو داره و اینطوری نیست که شما با روش های ابداعی خودتون اینکار انجام بدید دلیلشم واضح تصور کنید اگه قرار باشه بعدا کسی جایگزین شما بشه توی یه پروژه با دانستن این قواعد و قوانین به راحتی بتونه پی به اجزای برنامه ببره...!
توی سایت آقای دلشاد (http://how2learnasp.net/archive.aspx) مفاهیم اولیه آموزش داده شده است...!

dorparasti
شنبه 12 آذر 1390, 09:40 صبح
فک نکنم تعریف لایه به این صورت صحیح باشه .
هدف از لایه ها بنظر من اینه که یک استقلال و تفکیک و البته ارتباط منطقی و بهینه شده بین بخش های مختلف یک پروژه وجود داشته باشه تا در تمام مراحل توسعه و پشتیبانی پروژه بسیار سریعتر و با کیفیت تر عمل بشه . نه اینکه از کلاس به عنوان جایگزینی برای code-behind صفحه استفاده بشه .

در مورد تعداد لایه ها حق با شماست . البته بهتره بگیم بستگی به پروژه داره .

ATili.Nero
شنبه 12 آذر 1390, 09:46 صبح
دوستان حالا کلاس هر کی هر چوری تعریف کرد کرد
فقط یکی بهم بگه کلاس Show رو من چی کار کنم درست کار کنه؟؟؟؟؟؟؟

Saber_Fatholahi
شنبه 12 آذر 1390, 12:01 عصر
دوست عزیز اینجوری نمی شه فهمید لطفا اون قسمت پروزه تونو دقیقا با خطایی که نشان می ده بذارین اینجا که بشه به شما کمک کرد

farhadsoft
شنبه 12 آذر 1390, 13:11 عصر
با سلام
یه توضیح کوچکی در مورد برنامه نویسی لایه ای:
معمولا نامگذاری صفحات لایه ای به صورت زیر میباشد
فرض کنید در صفحه ای به نام TestPage کار میکنید
شما میبایست تابعی بیرون از این صفحه را فراخوانی کنید
این لایه لایه میانی هست که معمولا با Business نام گذاری میشود
مثلا TestPageBusiness
و درنهایت از این صفحه تابعی از صفحه سوم که معمولا با DAL نامگذاری میشود فراخوانی میشود مثلا TestPageDAL که عملیات اصلی در این صفحه انجام میشود و نتایج به TestPageBusiness برگردانده میشود و از آنجا به TestPage داده میشود
موفق باشد

Saman Hashemi
شنبه 12 آذر 1390, 14:21 عصر
با سلام
یه توضیح کوچکی در مورد برنامه نویسی لایه ای:
معمولا نامگذاری صفحات لایه ای به صورت زیر میباشد
فرض کنید در صفحه ای به نام TestPage کار میکنید
شما میبایست تابعی بیرون از این صفحه را فراخوانی کنید
این لایه لایه میانی هست که معمولا با Business نام گذاری میشود
مثلا TestPageBusiness
و درنهایت از این صفحه تابعی از صفحه سوم که معمولا با DAL نامگذاری میشود فراخوانی میشود مثلا TestPageDAL که عملیات اصلی در این صفحه انجام میشود و نتایج به TestPageBusiness برگردانده میشود و از آنجا به TestPage داده میشود
موفق باشد
شیوه تقریبا همین اما شما هم بیشتر مطالعه کن دوست من...!
لایه براساس بانک و ارتباط هاش ساخته میشه تا صفحه چون شاید یک عمل nبار توی کل پروژه تکرار بشه و در صفحه های مختلف که این راه توصیه نمیشه ،اگر جای صفحه جدول بذاریم میشه گفت یه جورایی درست اما خیلی مونده تا کامل شه...!

farhadsoft
شنبه 12 آذر 1390, 20:52 عصر
حرفای شما مکمل حرفای منه
کسی نیست که نیاز به مطالعه نداشته باشه
حتی شما دوست عزیز !!!