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.
Thực thi các giao diện lập trình trên như sau:
Và giao diện form kết nối như sau:
Viết code cho nút OK
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.
Mô hình 3 tầng trong lập trình |
Bước 1. Tạo project có cấu trúc như sau:
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:
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.";
}
}
|
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.";
}
}
|
Bài tiếp theo: Thêm mới 1 bản ghi vào table trong CSDL theo mô hình 3 lớp.