آموزش طراحی فرم لاگین با سطح دسترسی با تکنولوژی ADO.net
منبع (فیلم آموزشی از لرن فایلز)
طراحی جدول (User)
درون بانک (اینجا sql) به فیلدهای زیر نیاز است : (در گزینه های از نوع bit مقدار - true و یا false ذخیره میشود)
آموزش طراحی فرم لاگین با سطح دسترسی با تکنولوژی ADO.net
منبع (فیلم آموزشی از لرن فایلز)
طراحی جدول (User)
درون بانک (اینجا sql) به فیلدهای زیر نیاز است : (در گزینه های از نوع bit مقدار - true و یا false ذخیره میشود)
آخرین ویرایش به وسیله ghasem110deh : پنج شنبه 27 شهریور 1393 در 19:54 عصر
در ادامه اضافه کردن یک کلاس جدید به پروژه (اینجا DataAccess)
در واقع کلاس DataAccess لایه اول در این پروژه است ...
.
.
.
ابتدا ایجاد دستورات sql و ایجاد dataAdapter :
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)
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) :
public void Execute(string SQL)
{
com.CommandText = SQL;
com.ExecuteNonQuery();
}
و در آخر ، ایجاد dataTable :
public DataTable SELECT(string SQL)
{
DataTable dt = new DataTable();
com.CommandText = SQL;
da.Fill(dt);
return dt;
}
البته جهت یادآوری : میبایست فضای Data.sqlClient را فراخوانی کنید (using) !
آخرین ویرایش به وسیله ghasem110deh : پنج شنبه 27 شهریور 1393 در 19:55 عصر
ایجاد کلاس (در اینجا Users) ... یا در واقع لایه دوم برنامه :
گفته شد که در فیلدهای نوع bit مقادیر true یا false قرار میگیرد ... که در واقع بیان کننده سطح دسترسی هر کاربر هستند !
بدین صورت که اگر هر چهار متغیر دارای مقدار true باشند ، چهار کلید فرم اصلی ببرنامه فعال میشوند ! (بجای کلید میتوان از هر کنترل دیگر استفاده کرد - در اینجا دو کلید ، یک منو و یک جعبه ابزار(toolStrip) استفاده شده)
.
.
.
ایجاد Dataset و چند متغیر (در اینجا چهار متغیر به تعداد فیلدهای از نوع bit) ؛
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 هستند !
ایجاد متد سطح دسترسی :
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) باشد - کلید مربوطه فعال باشد و در غیر اینصورت غیرفعال .
دستورات اضافه کردن کاربر جدید :
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;
}
یادتون نره :
using System.Data.SqlClient;
حال وارد کد نویسی در محیط فرم ها میشویم (در واقع لایه سوم - فراخوانی دستورات در دو لایه قبل)
.
.
.
دستورات مربوط به کلید ورود (log in) :
Users us = new Users(); if (us.Login(textBox2.Text, textBox1.Text) == true)
{
us.Sath(textBox2.Text);
this.Hide();
Form2 f2 = new Form2();
f2.Show();
}
else
MessageBox.Show("نام کاربری یا کلمه عبور صحیح نیست");
طبیعتا دستور لغو :
Application.Exit();
نکته : توجه داشته باشید که در دستورات کلید ورود ... متد سطح دسترسی فراخوانی شده است ، و شرط بررسی سطح به تکست باکس دو (نام کاربری) ارجاع شده !
در ادامه به مشخص و اعمال سطح دسترسی های تعریف شده در فرم اصلی میپردازیم ؛
.
.
.
دستورات مربوط به تعیین سطح دسترسی در رویداد لود فرم :
private void Form2_Load(object sender, EventArgs e) {
menuStrip1.Enabled = Users.M;
toolStrip1.Enabled = Users.S;
button1.Enabled = Users.B1;
button2.Enabled = Users.B2;
}
نکته : در تکه کد بالا ، منو ، جعبه ابزار و دو کلید مورد نظر فعال یا غیر فعال بودنشان از طریق متغیر های تعریف شده (که حالت پیش فرضشان false بود) تعیین می گردد !
بدین ترتیب که با مراجعه به فیلد مورد نظر در جدول و مشخص شدن مقدار (true و یا false) ، کنترل فعال یا غیر فعال میشود .
طبیعتا نمایش فرم سوم :
Form3 f3 = new Form3();
f3.ShowDialog();
در فرم ایجاد کاربر جدید و تعیین سطح دسترسی ، برای تعیین سطح از چهار comboBox با مقادیر true و false استفاده میکنیم ؛
که مقادیر مورد نظر را در فیلد مربوط به کنترل های فرم اصلی از طریق دستورات ذیل در جدول ذخیره میشوند !
.
.
.
در رویداد لود فرم ، کلاس Users فراخوانی شده و دیتاتیبل جهت نمایش رکوردهای جدول در دیتا گرید ویو :
private void Form3_Load(object sender, EventArgs e) {
Users uss = new Users();
DataTable dt = uss.ShowData();
dataGridView1.DataSource = dt;
}
دستورات کلید ثبت کاربر جدید :
private void button2_Click(object sender, EventArgs e) {
Users us = new Users();
us.ID = Convert.ToInt32(textBox1.Text);
us.Nam = textBox2.Text;
us.Pas = textBox3.Text;
us.Mnu = Convert.ToBoolean(comboBox1.Text);
us.Str = Convert.ToBoolean(comboBox2.Text);
us.Btn1 = Convert.ToBoolean(comboBox3.Text);
us.Btn2 = Convert.ToBoolean(comboBox4.Text);
us.ADD();
Form3_Load(null,null);
MessageBox.Show("کاربر جدید ثبت شد");
}
نکته : توجه داشته باشید که ، مقادیر کمبوباکس ها به bool تبدیل شده و در فیلد های مربوط ذخیره شده اند ...
سپس متد ADD - که دستورات insert را در خود دارد فراخوانی شده !
و از :
Form3_Load(null,null);
جهت نمایش در دیتاگرید ویو استفاده شده !
نکته : در محیط دستوری فرم ها به هیچ گونه فراخوانی فضای نام (using) نیاز نیست ! تنها کلاس های ایجاد شده را در صورت نیاز فراخوانی کرده ایم .
همانطور که در تصویر ضمیمه مشاهده می نمایید ، فیلدی که دارای (تیک) می باشد ، کنترل مرتبط به خود را در هنگام ورود کاربر فعال میکند .
نکته : جهت ورود اولیه (مدیر) می بایست ، یک رکورد از جدول را بصورت دستی مقداردهی کرده و سپس وارد برنامه شوید !
(مقادیر نوع bit را true قرار دهید) ...
.
.
.
در ادامه نحوه حذف ، ویرایش سطح دسترسی و نحوه ویرایش یوزر و پس توسط خود کاربر ارائه می شود .
.
.
.
تا بعد ... یا علی علیه السلام
برای سطح دسترسی راه بهتری است
مثلا ما صفحه ای داریم برای Student
4 عمل اصلی از نظر ما سطح هاشون مختلف
خب یک جدول امنیت درست میکنیم و به این صورت چک میکنیم
کاربر علی سطح1 برای جدول Student
کاربر علی سطح2 برای جدول Student
بعد میتوان در پیج لود صفحه سطح چک کرد
-----------------
نوع برسی و خروجی گرفتن از جداول موقع لاگین هم بهیه نیست
با سلام و خسته نباشید
آقا مطلبتون عالیه
فقط خواهشا همینارو با اکسس هم یاد بدین
خیلیا اس کیو ال بلد نیسن مثل من .
ممنون میشم
سلام و با عرض تشکر. امکان داره فایلش رو هم ادد کنید
اولا کلا بیخیال اکسس شین (نظر منه و دو عزیز که ازشون یاد میگیرم)
دوما واسه اکسس هم تقریبا همینه و فقط از دستورات خودش (oleDb) استفاده کنید ...
---------------------
*** sql - و برای بانک های کوچیک sqlite ***
سورس برنامه ضمیمه شد !