Bài viết này được đăng tại
freetuts.net
Bạn đang đọc: Tạo form đăng nhập với SQL Server trong C# Winforms
, không được copy dưới mọi hình thức.
Để hiểu được bài này những bạn cần nắm vững kỹ năng và kiến thức trong Winforms và SQL Server, còn giờ đây hãy cùng mình thực hành thực tế thôi nào .
Tóm Tắt
1. Tạo form đăng nhập trong C# Winforms
Việc tiên phong tất cả chúng ta sẽ tạo giao diện form đăng nhập với những control như hình dưới đây .
Hai TextBox ” Tài khoản ” và ” Mật khẩu ” được dùng để người dùng nhập vào thông tin tài khoản và mật khẩu của họ .Bài viết này được đăng tại [ không lấy phí tuts. net ]
RadioButton ” Hiển thị mật khẩu ” được dùng để hiển thị mật khẩu nếu người dùng chọn .
Button ” Đăng nhập ” sẽ kiểm tra xem thông tin được nhập bởi người dùng có trùng khớp với tài liệu trong database hay không. Nếu có thì cho đăng nhập vào đồng thời cho biết đăng nhập với quyền admin hay user .
Button ” Thoát “, khi người dùng chọn button này thì hộp thoại thông tin hiện ra và hỏi người dùng có muốn thoát hay không. Nếu chọn OK thì thoát khỏi chương trình, nếu chọn Cancel thì hủy bỏ lệnh thoát .
2. Tạo database và kết nối từ C# Winforms
Sau khi tạo được giao diện form đăng nhập, giờ đây ta thực thi tạo database với những tài liệu thiết yếu để kết nối từ C # winforms. Các bạn hoàn toàn có thể xem cách tạo database trong SQL, ở đây mình có một đoạn code tạo database sẵn .
Create database [QLNhanVien] GO USE [QLNhanVien] GO /****** Object: Table [dbo].[NhanVien] Script Date: 8/13/2021 5:44:21 PM ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[NhanVien]( [MaNV] [int] IDENTITY(1,1) NOT NULL, [TaiKhoan] [nvarchar](50) NOT NULL, [MatKhau] [nvarchar](50) NOT NULL, [IDPer] [int] NOT NULL, CONSTRAINT [PK_NhanVien] PRIMARY KEY CLUSTERED ( [MaNV] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] GO
Sau khi tạo database QLNhanVien những bạn hãy thêm một vài tài liệu, hoàn toàn có thể nhập bằng giao diện hoặc lệnh T-SQL nhé .
Như vậy là tất cả chúng ta đã có database, giờ đây sẽ kết nối tới database trong SQL Server từ C # winforms. Ở đây mình sử dụng file App. config để kết nối tới SQL Server, đây là một cách thông dụng và bảo đảm an toàn .
App.config
Code kết nối tới SQL Server
SqlConnection conn = new SqlConnection(); conn.ConnectionString = ConfigurationManager.ConnectionStrings["connStr"].ConnectionString;
Bây giờ chỉ cần những bạn sử dụng phương pháp Open ( ) để mở chuỗi kết nối tới SQL Server và thao tác với database .
3. Xử lý các sự kiện trên form đăng nhập
Khi giao diện form đăng nhập và database đã được chuẩn bị cũng như kết nối tới SQL Server thành công. Bây giờ ta bắt đầu xử lý sự kiện cho từng control trong giao diện vừa tạo.
Xem thêm: Cách sử dụng hàm “ajax” của jQuery
Xử lý sự kiện cho TextBox “Mật khẩu”.
Vì tính bảo mật thông tin thì thường thì mật khẩu khi được nhập bởi người dùng sẽ bị ẩn đi. Để làm được điều này những bạn hoàn toàn có thể tùy chỉnh nó bằng giao diện trong phần Properties của TextBox ” Mật khẩu ” .
Hoặc hoàn toàn có thể tùy chỉnh bằng câu lệnh .
txtPass.PasswordChar = '*';
Xử lý sự kiện cho RadioButton “Hiển thị mật khẩu”.
Để bảo vệ rằng người dùng nhập mật khẩu đúng, tất cả chúng ta sẽ tạo một Radio Button ” Hiển thị mật khẩu “. Cho phép người dùng khi chọn vào sẽ hiển thị mật khẩu và sẽ ẩn đi nếu không chọn vào mục này .
private void chkShow_CheckedChanged(object sender, EventArgs e) { if (chkShow.Checked) { txtPass.PasswordChar = (char)0; } else { txtPass.PasswordChar = '*'; } }
Xử lý sự kiện cho Button “Đăng nhập”.
Trước khi giải quyết và xử lý sự kiện cho button này, những bạn nên biết rằng để đăng nhập thành công xuất sắc thì thông tin người dùng nhập vào phải trùng với tài liệu trong database .
Vì vậy ta sẽ tạo một Stored Procedure để kiểm tra đăng nhập. Nếu thông tin tài khoản đăng nhập là admin thì trả về 1 ngược lại nếu là user thì trả về 0. Trường hợp thông tin tài khoản đăng nhập sai hoặc không sống sót thì trả về 2 và 3 .
Stored Procedure
create proc [dbo].[SP_AuthoLogin] @Username nvarchar(20), @Password nvarchar(20) as begin if exists (select * from NhanVien where TaiKhoan = @Username and MatKhau = @Password and IDPer = 1) select 1 as code else if exists (select * from NhanVien where TaiKhoan = @Username and MatKhau = @Password and IDPer = 0) select 0 as code else if exists(select * from NhanVien where TaiKhoan = @Username and MatKhau != @Password) select 2 as code else select 3 as code end
Mình sẽ sử dụng phương pháp ExecuteScalar trong class SqlCommand để lấy tác dụng trả về từ SQL Server .
object kq = cmd.ExecuteScalar();
Các bạn hoàn toàn có thể xem cách sử dụng Stored Procedure để thao tác với SQL Server trong C # tại đây .
Ở đây mình có hai param đó là ” @ Username ” và ” @ Password ” tương ứng với thông tin mà người dùng nhập vào. Mình sẽ truyền hai tham số này vào Proc ” SP_AuthoLogin “, sau đó dùng phương pháp ExecuteScalar để lấy hiệu quả trả về .
SqlCommand cmd = new SqlCommand(); cmd.CommandType = CommandType.StoredProcedure; cmd.CommandText = "SP_AuthoLogin"; cmd.Parameters.AddWithValue("@UserName", txtUser.Text); cmd.Parameters.AddWithValue("@Password", txtPass.Text); cmd.Connection = conn;
Bây giờ chỉ cần so sánh hiệu quả trả về, nếu bằng 1 ( admin ) hoặc 0 ( user ) thì đăng nhập thành công xuất sắc. Ngược lại bằng 2 hoặc 3 thì đăng nhập không thành công xuất sắc .
if (code == 0) { MessageBox.Show("Chào mừng User đăng nhập", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information); } else if (code == 1) { MessageBox.Show("Chào mừng Admin đăng nhập", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information); } else if (code == 2) { MessageBox.Show("Tài khoản hoặc mật khẩu không đúng !!", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information); txtPass.Text = ""; txtUser.Text = ""; txtUser.Focus(); } else { MessageBox.Show("Tài khoản không tồn tại !!", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information); txtPass.Text = ""; txtUser.Text = ""; txtUser.Focus(); }
Xử lý sự kiện cho Button “Thoát”.
Ta sử dụng DialogResult và MessageBox để hiển thị một hộp thoại thông báo cho người dùng có muốn thoát khỏi chương trình khi hay không. Nếu người dùng chọn Yes thì gọi lệnh Application.Exit()
để thoát chương trình, ngược lại thì hủy bỏ lệnh.
private void btnCancel_Click(object sender, EventArgs e) { DialogResult dg = MessageBox.Show("Bạn có muốn thoát ?", "Thông báo", MessageBoxButtons.YesNo, MessageBoxIcon.Question); if(dg == DialogResult.Yes) Application.Exit(); }
4. Code hoàn chỉnh tạo form đăng nhập với SQL Server trong C# Winforms
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; using System.Data.SqlClient; using System.Configuration; namespace MyProject { public partial class Login : Form { public static string UserName = ""; public Login() { InitializeComponent(); } private void btnCancel_Click(object sender, EventArgs e) { DialogResult dg = MessageBox.Show("Bạn có muốn thoát ?", "Thông báo", MessageBoxButtons.YesNo, MessageBoxIcon.Question); if(dg == DialogResult.Yes) Application.Exit(); } private void chkShow_CheckedChanged(object sender, EventArgs e) { if (chkShow.Checked) { txtPass.PasswordChar = (char)0; } else { txtPass.PasswordChar = '*'; } } private void btnLogin_Click(object sender, EventArgs e) { SqlConnection conn = new SqlConnection(); try { conn.ConnectionString = ConfigurationManager.ConnectionStrings["connStr"].ConnectionString; conn.Open(); SqlCommand cmd = new SqlCommand(); cmd.CommandType = CommandType.StoredProcedure; cmd.CommandText = "SP_AuthoLogin"; cmd.Parameters.AddWithValue("@UserName", txtUser.Text); cmd.Parameters.AddWithValue("@Password", txtPass.Text); cmd.Connection = conn; UserName = txtUser.Text; object kq = cmd.ExecuteScalar(); int code = Convert.ToInt32(kq); if (code == 0) { MessageBox.Show("Chào mừng User đăng nhập", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information); } else if (code == 1) { MessageBox.Show("Chào mừng Admin đăng nhập","Thông báo",MessageBoxButtons.OK,MessageBoxIcon.Information); } else if(code == 2) { MessageBox.Show("Tài khoản hoặc mật khẩu không đúng !!", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information); txtPass.Text = ""; txtUser.Text = ""; txtUser.Focus(); } else { MessageBox.Show("Tài khoản không tồn tại !!", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information); txtPass.Text = ""; txtUser.Text = ""; txtUser.Focus(); } conn.Close(); } catch (Exception ex) { MessageBox.Show(ex.Message); } } private void txtUser_MouseClick(object sender, MouseEventArgs e) { txtUser.SelectAll(); } private void txtPass_MouseClick(object sender, MouseEventArgs e) { txtPass.SelectAll(); } private void Login_Load(object sender, EventArgs e) { } } }
Kết quả: Khi tài khoản đăng nhập là admin hoặc user sẽ thông báo. Trong thực tế sẽ phân quyền cụ thể hơn ví dụ admin có thể thêm sửa xóa, user chỉ có thể hiển thị.
Như vậy là tất cả chúng ta đã tạo xong form đăng nhập với SQL Server trong C # Winforms. Đây là những bài tập rất trong thực tiễn trong những ứng dụng, vậy nên hãy rèn luyện thật nhiều để thành thạo nhé. Ngoài cách mình hướng dẫn trên còn một số ít cách khác, những bạn hãy thử làm nhé. Chúc những bạn thành công xuất sắc ! ! !
Source: https://final-blade.com
Category: Kiến thức Internet