Smile فرم لاگین با سطح دسترسی - معماری سه لایه
آموزش طراحی فرم لاگین با سطح دسترسی با تکنولوژی ADO.net
منبع (فیلم آموزشی از لرن فایلز)
طراحی جدول (User)
درون بانک (اینجا sql) به فیلدهای زیر نیاز است : (در گزینه های از نوع bit مقدار - true و یا false ذخیره میشود)
.
.
.
در ادامه اضافه کردن یک کلاس جدید به پروژه (اینجا DataAccess)
در واقع کلاس DataAccess لایه اول در این پروژه است ...
* ابتدا ایجاد دستورات sql و ایجاد dataAdapter :
کد PHP:
SqlConnection con;
SqlCommand com;
SqlDataAdapter da;
public DataAccess()
{
con = new SqlConnection();
com = new SqlCommand();
da = new SqlDataAdapter();
com.Connection = con;
da.SelectCommand = com;
}
* حال ایجاد متد اتصال و قطع آن (اینجا Connect و Disconnect)
کد PHP:
public void Connect()
{
if (con.State != ConnectionState.Open)
{
con.ConnectionString = @"Data Source=.;Initial Catalog=Test;Integrated Security=True";
con.Open();
}
}
public void Disconnect()
{
con.Close();
}
ایجاد متد دستورات (query) و DataTable :
کد PHP:
public void Execute(string SQL)
{
com.CommandText = SQL;
com.ExecuteNonQuery();
}
public DataTable SELECT(string SQL)
{
DataTable dt = new DataTable();
com.CommandText = SQL;
da.Fill(dt);
return dt;
}
ایجاد کلاس (در اینجا Users) ... یا در واقع لایه دوم برنامه :
گفته شد که در فیلدهای نوع bit مقادیر true یا false قرار میگیرد ... که در واقع بیان کننده سطح دسترسی هر کاربر هستند !
بدین صورت که اگر هر چهار متغیر دارای مقدار true باشند ، چهار کلید فرم اصلی ببرنامه فعال میشوند ! (بجای کلید میتوان از هر کنترل دیگر استفاده کرد - در اینجا دو کلید ، یک منو و یک جعبه ابزار(toolStrip) استفاده شده)
.
.
.
فراخوانی کلاس دیتااکسس و ایجاد Dataset و چند متغیر
(در اینجا چهار متغیر به تعداد فیلدهای از نوع bit) ؛
کد PHP:
DataAccess DA = new DataAccess();
public static bool M = false;
public static bool S = false;
public static bool B1 = false;
public static bool B2 = false;
public int ID;
public string Nam;
public string Pas;
public bool Mnu;
public bool Str;
public bool Btn1;
public bool Btn2;
همانطور که مشاهده مینمایید : متغیر های سطح دسترسی در حالت پیشفرض - false هستند .
تذکر : متغیر های سطح دسترسی جهت قابل دسترس بودن در تمام برنامه از نوع static هستند !
ایجاد متد سطح دسترسی و دستورات مرتبط با لاگین :
کد PHP:
public void Sath(string name)
{
DA.Connect();
string sql = "Select * From [User] Where Nam = '{0}' ";
sql = string.Format(sql, name);
DataTable dt = DA.SELECT(sql);
DA.Disconnect();
M = Convert.ToBoolean(dt.Rows[0]["Mnu"].ToString());
S = Convert.ToBoolean(dt.Rows[0]["Str"].ToString());
B1 = Convert.ToBoolean(dt.Rows[0]["Btn1"].ToString());
B2 = Convert.ToBoolean(dt.Rows[0]["Btn2"].ToString());
}
public bool Login(string Name, string Pass)
{
DA.Connect();
string sql = "Select Count(*) From [User] Where Nam = '{0}' And Pas = '{1}'";
sql = string.Format(sql,Name,Pass);
DataTable dt = new DataTable();
dt = DA.SELECT(sql);
DA.Disconnect();
bool Enter = false;
if (dt.Rows[0][0].ToString() == "1")
{
Enter = true;
}
return Enter;
}
نکته : در واقع در دستورات بالا بیان میکنیم که اگر هر متغر برابر مقدار یک (true) باشد - کلید مربوطه فعال باشد و در غیر اینصورت غیرفعال .
دستورات اضافه کردن کاربر جدید و در آخر متد نمایش مشخصات کاربران در دیتاگرید ویو :
کد PHP:
public void ADD()
{
DA.Connect();
string sql = "Insert Into [User] (ID,Nam,Pas,Mnu,Str,Btn1,Btn2)";
sql += "Values ({0},'{1}','{2}','{3}','{4}','{5}','{6}')";
sql = string.Format(sql, this.ID, this.Nam, this.Pas, this.Mnu, this.Str, this.Btn1, this.Btn2);
DA.Execute(sql);
DA.Disconnect();
}
public DataTable ShowData()
{
DA.Connect();
DataTable dt = DA.SELECT("Select * From [User]");
DA.Disconnect();
return dt;
}
البته جهت یادآوری : میبایست در کلاس ها فضای Data.sqlClient را فراخوانی کنید (using) !