PDA

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



mehdiba3
سه شنبه 13 اسفند 1392, 12:54 عصر
سلام
یک توضیح میدم بعد اگه شد بگین درسته یا غلط و بعد مشکلی را هم که دارم مطرح می کنم و اگه کسی بلد بود راهمایی کنید. ممنون

برنامه ایم که نوشتم به صورت 3 لایه عملیات درج حذف و اصلاح را در بانک اطلاعاتی انجا میده. مشکلی که دارم این است که نمیتونم عملیات جستجو در دیتا گرید را توسط یک تکس باکس خاص انجام بدهم. واضحتر بگم ، نمیدونم در کدام لایه عملیات جستجو را و چگونگی پیاده سازی آن را انجام بدهم. از دوستان اگه میشه من رو راهنمایی کنید
با تشکر

لایه اول :

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data;
using System.Data.SqlClient;

namespace phonbook
{
class DAL
{
SqlConnection con;
SqlCommand com;
public SqlDataAdapter da;

public DAL()
{
con = new SqlConnection();
com=new SqlCommand();
da=new SqlDataAdapter();
com.Connection = con;
da.SelectCommand = com;
}
public void connect()
{
string SQL = "Data Source=.;Initial Catalog=phonbook;Integrated Security=True";
con.ConnectionString = SQL;
con.Open();
}
public void disconnect()
{
con.Close();
}
public void EXE(string SQL)
{
com.CommandText = SQL;
com.ExecuteNonQuery();
}
public DataTable select(string SQL)
{
com.CommandText = SQL;
DataTable dt=new DataTable();
da.Fill(dt);
return dt;
}

}
}



لایه دوم:


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data;
using System.Data.SqlClient;

namespace phonbook
{
class BAL
{
DAL dal = new DAL();
public string name;
public string family;
public string address;
public string phone;
public void ADD()
{
string SQL = "insert into tbl(name,family,phone,address) values( N'{0}',N'{1}',N'{2}',N'{3}')";
dal.connect();
SQL = string.Format(SQL, this.name, this.family, this.phone, this.address);
dal.EXE(SQL);
dal.disconnect();
}
public void DELETE()
{
string SQL = "DELETE from tbl";
dal.connect();
dal.EXE(SQL);
dal.disconnect();
}
public DataTable search()// kamel shavad
{
DataSet ds = new DataSet();
SqlDataAdapter da = new SqlDataAdapter();
da.Fill(ds);

string sql = "select * from tbl where family= '" + this.family + "'";
dal.connect();
DataTable dt = dal.select(sql);
dal.disconnect();
return dt;

}
public DataTable shodatatable()
{
dal.connect();
DataTable dt = dal.select("select * from tbl");
dal.disconnect();
return dt;

}
public DataTable searchByname()//kamel shavad
{
string sql = "select * from tbl where family= '" + this.family + "'";
DataTable dt = dal.select(sql);
return dt;
}
}
}

لایه سوم که همون UI است :

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace phonbook
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void Form1_Load(object sender, EventArgs e)
{
BAL bal=new BAL();
DataTable dt = bal.shodatatable();
dataGridView1.DataSource = dt;

}

private void button1_Click(object sender, EventArgs e)
{

}

private void button1_Click_1(object sender, EventArgs e)
{
BAL bal = new BAL();
bal.name = txtname.Text;
bal.family = txtfamily.Text;
bal.phone = txtphone.Text;
bal.address = txtaddress.Text;
bal.ADD();
Form1_Load(null, null);
MessageBox.Show("ثبت شد");
}

private void textBox2_TextChanged(object sender, EventArgs e)
{

}
}
}


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