raha1234567
شنبه 16 مرداد 1389, 21:42 عصر
در اکثربرنامه های امروزی از فرمی برای تائید کردن نام کاربرو پسورد کاربر استفاده می کنند به همین جهت در پروژه های VB.Net ( برای پروژه های C# چنین امکانی نیست )چنین فرمی به طور پیش فرض تدارک دیده شده است البته خود شما نیز به راحتی می توانید آنرا بسازید و این امکان فقط برای سرعت بخشیدن به طراحی برنامه است.
برای اضافه کردن ان از مسیر Project/Add Windows Form شی LoginForm را به برنامه اضافه کنید یا خودتان یک فرم با دو کنترل textbox به نامهای UsernameTextBox و PasswordTextBox و دو باتن به نامهای Ok و Cancel به برنامه اضافه کنید.
از اینجا به بعد فرض می کنم که شما برای چک کردن username و password ورودی کاربران یک جدول در اکسس با نام users ایجاد کرده اید که دارای دو فیلد username و password است.
حال می خواهیم برنامه ای بنویسیم که در صورت تائید یا وجود داشتن نام کاربری و پسورد در پایگاه داده ، فرم اصلی برنامه با نام frmmain را نمایش بدهد و فرم login را ببندد.
در ابتدا دو namespace زیر را اضافه کنید:
VB.NET
Imports System.Data.OleDb
Imports System.Threading
C#.NET
using System.Data.OleDb;
using System.Threading;
سپس دو متغیر زیر را به صورت سراسری تعریف کنید:
VB.NET
Private con As OleDbConnection
Private com As OleDbCommand
C#.NET
private OleDbConnection con;
private OleDbCommand com;
سپس در رویدادLoad فرم Login دستورات زیر را وارد کنید:
<FONT face="Times New Roman"><SPAN lang=AR-SA><FONT size=3>
VB.NET
con = New OleDbConnection
con.ConnectionString = "provider=microsoft.ace.oledb.12.0;data source=TEST.accdb"
C#.NET
con = new OleDbConnection();
con.ConnectionString = "provider=microsoft.ace.oledb.12.0;data source=TEST.accdb";
توجه کنید فایل اکسس درنظرگرفته شده 2007 و در پوشه Debug قرار دارد.
حال در رویداد Click دکمه OK دستورات زیر را بنویسید:
VB.NET
com = New OleDbCommand
con.Open()
com.Connection = con
com.CommandText = "select count(*) from users where username='" & UsernameTextBox.Text & "' and password='" & PasswordTextBox.Text & "'"
Dim value As Int16
value = com.ExecuteScalar
If value = 1 Then
Dim form As New Thread(AddressOf MainForm)
form.Start()
Me.Close()
Else
MessageBox.Show("نام کاربری یا رمز ورودی اشتباه است")
End If
con.Close()
C#.NET
com = new OleDbCommand();
con.Open();
com.Connection = con;
com.CommandText = "select count(*) from users where username='" + UsernameTextBox.Text + "' and password='" + PasswordTextBox.Text + "'";
int value;
value = (int)com.ExecuteScalar();
if (value == 1)
{
Thread form = new Thread(new ThreadStart(MainForm));
form.Start();
this.Close();
}
else
MessageBox.Show("نام کاربری یا رمز ورودی اشتباه است");
con.Close();
حالا باید تابعی (تابع MainForm) به صورت زیر تعریف کنید:
VB.NET
Private Shared Sub MainForm()
Dim frmm As New frmmain
Application.Run(frmm)
End Sub
C#.NET
private void MainForm()
{
frmmain frmm=new frmmain();
Application.Run(frmm);
}
در رویداد Click دکمه Cancel دستورات زیر را بنویسید:
VB.NET
Me.Close()
C#.NET
this.Close();
این برنامه برای اجرا آماده است.
نکته : باید توجه داشت که برای ذخیره کردن پسورد در پایگاه داده باید آنرا hash کرد که hash کردن پسورد در مقاله جداگانه گفته خواهد شد.
برای اضافه کردن ان از مسیر Project/Add Windows Form شی LoginForm را به برنامه اضافه کنید یا خودتان یک فرم با دو کنترل textbox به نامهای UsernameTextBox و PasswordTextBox و دو باتن به نامهای Ok و Cancel به برنامه اضافه کنید.
از اینجا به بعد فرض می کنم که شما برای چک کردن username و password ورودی کاربران یک جدول در اکسس با نام users ایجاد کرده اید که دارای دو فیلد username و password است.
حال می خواهیم برنامه ای بنویسیم که در صورت تائید یا وجود داشتن نام کاربری و پسورد در پایگاه داده ، فرم اصلی برنامه با نام frmmain را نمایش بدهد و فرم login را ببندد.
در ابتدا دو namespace زیر را اضافه کنید:
VB.NET
Imports System.Data.OleDb
Imports System.Threading
C#.NET
using System.Data.OleDb;
using System.Threading;
سپس دو متغیر زیر را به صورت سراسری تعریف کنید:
VB.NET
Private con As OleDbConnection
Private com As OleDbCommand
C#.NET
private OleDbConnection con;
private OleDbCommand com;
سپس در رویدادLoad فرم Login دستورات زیر را وارد کنید:
<FONT face="Times New Roman"><SPAN lang=AR-SA><FONT size=3>
VB.NET
con = New OleDbConnection
con.ConnectionString = "provider=microsoft.ace.oledb.12.0;data source=TEST.accdb"
C#.NET
con = new OleDbConnection();
con.ConnectionString = "provider=microsoft.ace.oledb.12.0;data source=TEST.accdb";
توجه کنید فایل اکسس درنظرگرفته شده 2007 و در پوشه Debug قرار دارد.
حال در رویداد Click دکمه OK دستورات زیر را بنویسید:
VB.NET
com = New OleDbCommand
con.Open()
com.Connection = con
com.CommandText = "select count(*) from users where username='" & UsernameTextBox.Text & "' and password='" & PasswordTextBox.Text & "'"
Dim value As Int16
value = com.ExecuteScalar
If value = 1 Then
Dim form As New Thread(AddressOf MainForm)
form.Start()
Me.Close()
Else
MessageBox.Show("نام کاربری یا رمز ورودی اشتباه است")
End If
con.Close()
C#.NET
com = new OleDbCommand();
con.Open();
com.Connection = con;
com.CommandText = "select count(*) from users where username='" + UsernameTextBox.Text + "' and password='" + PasswordTextBox.Text + "'";
int value;
value = (int)com.ExecuteScalar();
if (value == 1)
{
Thread form = new Thread(new ThreadStart(MainForm));
form.Start();
this.Close();
}
else
MessageBox.Show("نام کاربری یا رمز ورودی اشتباه است");
con.Close();
حالا باید تابعی (تابع MainForm) به صورت زیر تعریف کنید:
VB.NET
Private Shared Sub MainForm()
Dim frmm As New frmmain
Application.Run(frmm)
End Sub
C#.NET
private void MainForm()
{
frmmain frmm=new frmmain();
Application.Run(frmm);
}
در رویداد Click دکمه Cancel دستورات زیر را بنویسید:
VB.NET
Me.Close()
C#.NET
this.Close();
این برنامه برای اجرا آماده است.
نکته : باید توجه داشت که برای ذخیره کردن پسورد در پایگاه داده باید آنرا hash کرد که hash کردن پسورد در مقاله جداگانه گفته خواهد شد.