Học tập, chia sẻ kiến thức cơ bản về tin học.

[Lập trình Windows] Kết nối cơ sở dữ liệu - Lớp kết nối.

Bài trước: Mô hình 3 lớp ứng dụng vào giải bài toán cộng hai số nguyên.
Mục tiêu: Tạo ra lớp kết nối cơ sở dữ liệu, dùng để kết nối cơ sở dữ liệu.
tinhoccoban.net - Mô hình 3 tầng trong lập trình
Mô hình 3 tầng trong lập trình

Bước 1. Tạo project có cấu trúc như sau:

tinhoccoban.net - Cấu trúc Project mô hình 3 tầng
Cấu trúc Project mô hình 3 tầng

Bước 2. Xây dựng giao diện lập trình và lớp kết nối như sau:


using System.Data.SqlClient;
namespace Mohinh3Tang.DAL
{
    interface IKetNoi
    {
        /// <summary>
        /// Tên máy tính chứa hệ quản trị SQL Server.
        /// </summary>
        string TenMayChu { get; set; }
        /// <summary>
        /// Tên cơ sở dữ liệu cần kết nối
        /// </summary>
        string TenCSDL { get; set; }
        /// <summary>
        /// Tên login dùng để đăng nhập
        /// </summary>
        string TenNguoiDung { get; set; }
        /// <summary>
        /// Mật khẩu đăng nhập
        /// </summary>
        string MatKhau {get;set;}
        /// <summary>
        /// Tạo chuỗi kết nối
        /// </summary>
        /// <param name="tenmc">Tên máy chủ</param>
        /// <param name="tencsdl">Tên cơ sở dữ liệu</param>
        /// <param name="tennguoidung">Tên login</param>
        /// <param name="matkhau">Mật khẩu</param>
        /// <returns>Trả về chuỗi kết nối đến cơ sở dữ liệu</returns>
        string GetConnectionString(string tenmc, string tencsdl, string tennguoidung, string matkhau);
        /// <summary>
        /// Tạo chuỗi kết nối
        /// </summary>
        /// <returns>Trả về chuỗi kết nối đến cơ sở dữ liệu</returns>
        string GetConnectionString();
    }
    interface IMyConnection
    {
        /// <summary>
        /// Thông tin kết nối
        /// </summary>
        clsKetNoi InforConnect { get; set; }
        /// <summary>
        /// Biến kết nối SQL
        /// </summary>
        /// <returns>Trả về biến kết nối</returns>
        SqlConnection GetConnection();
        /// <summary>
        /// Biến kết nối
        /// </summary>
        /// <param name="strConnectionString">Chuỗi kết nối cơ sở dữ liệu.</param>
        /// <returns>Trả lại biến kết nối.</returns>
        SqlConnection GetConnection(string strConnectionString);
    }
}

Thực thi các giao diện lập trình trên như sau:

using System.Data.SqlClient;
namespace Mohinh3Tang.DAL
{
    class clsKetNoi:IKetNoi
    {
        string strChuoiKetNoiCoSoDuLieu;
        string strtenmaychu, strtencsdl, strtennguoidung, strmatkhau;
        public string TenMayChu
        { get { return strtenmaychu; } set { strtenmaychu = value; } }
        public string TenCSDL
        { get { return strtencsdl; } set { strtencsdl = value; } }
        public string TenNguoiDung
        { get { return strtennguoidung; } set { strtennguoidung = value; } }
        public string MatKhau { get { return strmatkhau; } set { strmatkhau = value; } }
        public string GetConnectionString(string tenmc, string tencsdl, string tennguoidung, string matkhau)
        {
            strChuoiKetNoiCoSoDuLieu = "";
            strChuoiKetNoiCoSoDuLieu += "Data Source =" + tenmc + ";";
            strChuoiKetNoiCoSoDuLieu += "Initial Catalog =" + tencsdl + ";";
            strChuoiKetNoiCoSoDuLieu += "User ID =" + tennguoidung + ";";
            strChuoiKetNoiCoSoDuLieu += "Password =" + matkhau + ";";
            return strChuoiKetNoiCoSoDuLieu;
        }
        public string GetConnectionString()
        {
            strChuoiKetNoiCoSoDuLieu = "";
            strChuoiKetNoiCoSoDuLieu += "Data Source =" + TenMayChu + ";";
            strChuoiKetNoiCoSoDuLieu += "Initial Catalog =" + TenCSDL + ";";
            strChuoiKetNoiCoSoDuLieu += "User ID =" + TenNguoiDung + ";";
            strChuoiKetNoiCoSoDuLieu += "Password =" + MatKhau + ";";
            return strChuoiKetNoiCoSoDuLieu;
        }
    }
    class MyConnection:IMyConnection
    {
        SqlConnection conn;
        public clsKetNoi InforConnect { get; set; }
        public MyConnection(string strServerName, string strDatabase, string strUserName,string strPass)
        {
            InforConnect = new clsKetNoi();
            InforConnect.MatKhau = strPass;
            InforConnect.TenCSDL = strDatabase;
            InforConnect.TenMayChu = strServerName;
            InforConnect.TenNguoiDung = strUserName;
        }
        public string GetConectionString()
        {
            return InforConnect.GetConnectionString();
        }
        public SqlConnection GetConnection()
        {
            conn = new SqlConnection();
            conn.ConnectionString = InforConnect.GetConnectionString();
            try
            {
                conn.Open();
            }
            catch (System.Exception)
            {
               
            }
            return conn;
        }
        public SqlConnection GetConnection(string strConnectionString)
        {
            conn = new SqlConnection();
            conn.ConnectionString = strConnectionString;
            try
            {
                conn.Open();
            }
            catch (System.Exception)
            {

            }
            return conn;
        }
    }
}


Bước 3. Tạo Form kết nối như sau:



STT
Đặt tên
Kiểu
Hiển thị
Ghi chú
1
txtServerName
Texbox

Tên máy chủ
2
txtTenCSDL
Texbox

Tên cơ sở dữ liệu
3
txtTenNguoiDung
Texbox

Tên login
4
txtMatKhau
Texbox

Mật khẩu
5
btnOK
Button
OK
Đồng ý
6
btnTry
Button
Thử kết nối
Thử kết nối

Và giao diện form kết nối như sau:
tinhoccoban.net - Giao diện form kết nối.
Giao diện form kết nối.

Bước 4.Viết code cho các nút

Viết code cho nút Thử kết nối
private void btnTry_Click(object sender, EventArgs e)
        {
            myConnection = new DAL.MyConnection(
                txtServerName.Text.Trim(),
                txtTenCSDL.Text.Trim(),
                txtTenNguoiDung.Text.Trim(),
                txtMatKhau.Text.Trim()
                );
          
            if (myConnection.GetConnection().State==ConnectionState.Open)
            {                
                lblThongBao.Text = "Kết nối thành công với chuỗi này!";
                btnOK.Enabled = true;
            }
            else
            {
                lblThongBao.Text = "Không kết nối được CSDL với chuỗi này.";
            }         
          
        }

 Viết code cho nút OK
private void btnOK_Click(object sender, EventArgs e)
        {          
            strChuoiKetNoiCoSoDuLieu = myConnection.GetConectionString();
            Form1 frm = new Form1(strChuoiKetNoiCoSoDuLieu);
            this.Hide();
            frm.ShowDialog();
            this.Show();           
        }

Bước 5. Tạo thêm 1 Contructor cho form main (Form1)
public Form1(string strKetNoi)
        {
            strKetnoi = strKetNoi;
            InitializeComponent();
            if (strKetnoi != null && strKetnoi != "")
            {
                lblNhanThongTin.Text = strKetnoi;
            }
            else
            {
                lblNhanThongTin.Text = "Máy chủ Cơ sở dữ liệu chưa được kết nối.";
            }
        }