mahan0o0
پنج شنبه 06 فروردین 1394, 13:46 عصر
سلام دوستان
من یه برنامه windows application ثبت اطلاعات کاربران دارم که مشخصات کاربران را میگیره و توی جدول sql ثبت میکنه. من از روش سه لابه استقاده کردم. مشکلم اینه که الان میخوام مقادیری که از کاربر میگیره رو به صورت پارامتری به sql بفرسته ولی چون دارم روش سه لایه استفاده میکنم نمیدونم چطور باید اینکار رو انجام یدم. الان کد من به این شکله
لایه اول
class DAL
{
SqlConnection con;
SqlCommand cmd;
SqlDataAdapter da;
public DAL()
{
con = new SqlConnection();
cmd = new SqlCommand();
da = new SqlDataAdapter();
cmd.Connection = con;
da.SelectCommand = cmd;
}
public void conect()
{
con.ConnectionString = "Server=.;Integrated security=SSPI;database=urreg;Trusted_Connection=ye s;";
con.Open();
}
public void disconnect()
{
con.Close();
}
public void EXE(string SQL)
{ cmd.CommandText = SQL;
cmd.ExecuteNonQuery();
}
public DataTable select(string SQL)
{
cmd.CommandText = SQL;
DataTable dt = new DataTable();
da.Fill(dt);
return dt;
}
لایه دوم
class BAL
{
DAL dd = new DAL();
public string name;
public string birthDate;
public string idnum;
public string tel;
public string adres;
public string oldidnimber;
public int idd;
public void ADD()
{
string sql = "insert into usr(Name,BirthDateIDNumber,Number,Adres)";
sql += "values ('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}',' {8}','{9}')";
sql = string.Format(sql, this.name,this.birthDate ,this.idnum,this.tel, this.adres);
dd.EXE(sql);
dd.disconnect();
} public void EDIT()
{
dd.conect();
string sql = "update usr set FirstName=N'{1},BirthDate=N'{2}',IDNumber='{3}',Nu mber=N'{4}',Adress=N'{5}' where IDNumber=N'{6}'";
sql = string.Format(sql, this.name, this.birthDate, this.idNum,, this.tel, this.adres, this.oldidnimber);
dd.EXE(sql);
dd.disconnect();
}
public void delete()
{
dd.conect();
string sql = "delete from usr where IDNumber=N'{0}'";
sql = string.Format(sql, this.oldidnimber);
dd.EXE(sql);
dd.disconnect();
}
لایه سوم
public partial class Form1 : Form
private void addbutton_Click(object sender, EventArgs e)
{
BAL ad = new BAL();
ad.name = textBox1.Text;
ad.birthDate = maskedTextBox1.Text;
ad.idNum = textBox2.Text;
ad.tel = textBox3.Text;
ad.adress = textBox4.Text;
ad.ADD();
Form1_Load(null, null);
MessageBox.Show("اطلاعات ثبت شد");
}
اگر بخوام از پارامتر استفاده کنم یعنی به شکل زیر چطور کد زیر رو توی سه لایه استفاده کنم؟ یعنی این کد رو بشکونم و هر قسمت کد توی لایه خودش قرار بگیره. ممنون میشم راهنمایی کنید. چون مبتدی هستم اگه بهم بگید کدم کلا به چه شکل میشه که خیلی لطف کردید
SqlConnection conn = new SqlConnection();
conn .ConnectionString = "Server=.;Integrated security=SSPI;database=ursreg;Trusted_Connection=y es";
con.open();
string sql = "insert into Personnel(Name,BirthDate,IDNumber,Number,Adres) values (@Name, @BirthDate, @IdNumber,@Number, @Adres)";
SqlCommand cmd = new SqlCommand(sql,conn);
cmd.Parameters.AddWithValue("@Name", textBox1.Text);
cmd.Parameters.AddWithValue("@BirthDate", maskedTexBox1.Text);
cmd.Parameters.AddWithValue("@IDNumber", textBox2.Text);
cmd.Parameters.AddWithValue("@Number", textBox3.Text);
cmd.Parameters.AddWithValue("@Adres", textBox4.Text);
cmd.ExecuteNonQuery(sql);
con.close();
من یه برنامه windows application ثبت اطلاعات کاربران دارم که مشخصات کاربران را میگیره و توی جدول sql ثبت میکنه. من از روش سه لابه استقاده کردم. مشکلم اینه که الان میخوام مقادیری که از کاربر میگیره رو به صورت پارامتری به sql بفرسته ولی چون دارم روش سه لایه استفاده میکنم نمیدونم چطور باید اینکار رو انجام یدم. الان کد من به این شکله
لایه اول
class DAL
{
SqlConnection con;
SqlCommand cmd;
SqlDataAdapter da;
public DAL()
{
con = new SqlConnection();
cmd = new SqlCommand();
da = new SqlDataAdapter();
cmd.Connection = con;
da.SelectCommand = cmd;
}
public void conect()
{
con.ConnectionString = "Server=.;Integrated security=SSPI;database=urreg;Trusted_Connection=ye s;";
con.Open();
}
public void disconnect()
{
con.Close();
}
public void EXE(string SQL)
{ cmd.CommandText = SQL;
cmd.ExecuteNonQuery();
}
public DataTable select(string SQL)
{
cmd.CommandText = SQL;
DataTable dt = new DataTable();
da.Fill(dt);
return dt;
}
لایه دوم
class BAL
{
DAL dd = new DAL();
public string name;
public string birthDate;
public string idnum;
public string tel;
public string adres;
public string oldidnimber;
public int idd;
public void ADD()
{
string sql = "insert into usr(Name,BirthDateIDNumber,Number,Adres)";
sql += "values ('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}',' {8}','{9}')";
sql = string.Format(sql, this.name,this.birthDate ,this.idnum,this.tel, this.adres);
dd.EXE(sql);
dd.disconnect();
} public void EDIT()
{
dd.conect();
string sql = "update usr set FirstName=N'{1},BirthDate=N'{2}',IDNumber='{3}',Nu mber=N'{4}',Adress=N'{5}' where IDNumber=N'{6}'";
sql = string.Format(sql, this.name, this.birthDate, this.idNum,, this.tel, this.adres, this.oldidnimber);
dd.EXE(sql);
dd.disconnect();
}
public void delete()
{
dd.conect();
string sql = "delete from usr where IDNumber=N'{0}'";
sql = string.Format(sql, this.oldidnimber);
dd.EXE(sql);
dd.disconnect();
}
لایه سوم
public partial class Form1 : Form
private void addbutton_Click(object sender, EventArgs e)
{
BAL ad = new BAL();
ad.name = textBox1.Text;
ad.birthDate = maskedTextBox1.Text;
ad.idNum = textBox2.Text;
ad.tel = textBox3.Text;
ad.adress = textBox4.Text;
ad.ADD();
Form1_Load(null, null);
MessageBox.Show("اطلاعات ثبت شد");
}
اگر بخوام از پارامتر استفاده کنم یعنی به شکل زیر چطور کد زیر رو توی سه لایه استفاده کنم؟ یعنی این کد رو بشکونم و هر قسمت کد توی لایه خودش قرار بگیره. ممنون میشم راهنمایی کنید. چون مبتدی هستم اگه بهم بگید کدم کلا به چه شکل میشه که خیلی لطف کردید
SqlConnection conn = new SqlConnection();
conn .ConnectionString = "Server=.;Integrated security=SSPI;database=ursreg;Trusted_Connection=y es";
con.open();
string sql = "insert into Personnel(Name,BirthDate,IDNumber,Number,Adres) values (@Name, @BirthDate, @IdNumber,@Number, @Adres)";
SqlCommand cmd = new SqlCommand(sql,conn);
cmd.Parameters.AddWithValue("@Name", textBox1.Text);
cmd.Parameters.AddWithValue("@BirthDate", maskedTexBox1.Text);
cmd.Parameters.AddWithValue("@IDNumber", textBox2.Text);
cmd.Parameters.AddWithValue("@Number", textBox3.Text);
cmd.Parameters.AddWithValue("@Adres", textBox4.Text);
cmd.ExecuteNonQuery(sql);
con.close();