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

[Lập trình windows] Thêm mới 1 bản ghi vào table trong CSDL theo mô hình 3 lớp.

Bài trước: Kết nối cơ sở dữ liệu - Lớp kết nối.

Mục tiêu: Trình bày 1 cách cấu trúc chương trình theo mô hình 3 lớp để thêm mới 1 bản ghi vào table trong cơ sở dữ liệu.

tinhoccoban.net - Mô hình 3 lớp trong lập trình windows
Mô hình 3 lớp trong lập trình windows

Bước 1. Tạo bảng tblSinhVien trong Database QLSV.

STT
Mã hóa tên
Ý nghĩa
Kiểu
Ghi chú
1
MaSV
Mã Sinh viên
char(10)

2
TenSV
Tên Sinh viên
nvarchar(30)

3
DiaChi
Địa chỉ 
nvarchar(50)

4
GhiChu
Ghi chú
nvarchar(50)

Mã tạo bảng tblSinhVien

CREATE TABLE [dbo].[tblSinhVien](
            [MaSV] [char](10) NOT NULL,
            [TenSV] [nvarchar](30) NULL,
            [DiaChi] [nvarchar](50) NULL,
            [GhiChu] [nvarchar](50) NULL,
 CONSTRAINT [PK_tblSinhVien] PRIMARY KEY CLUSTERED
(
            [MaSV] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]


Tạo thủ tục thêm mới sinh viên


USE [QLSV]
GO
/****** Object:  StoredProcedure [dbo].[sp_inserttoSinhVienTable]    Script Date: 10/31/2018 10:35:06 AM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:                      <Author,,hoangtn>
-- Create date: <30-10-2018,,>
-- Description:   <Them moi 1 ban ghi vao bang sinh vien,,>
-- =============================================
CREATE PROCEDURE [dbo].[sp_inserttoSinhVienTable]
            -- Add the parameters for the stored procedure here
            (
            @MaSV char(10),
            @TenSV nvarchar(30),
            @DiaChi nvarchar(50),
            @GhiChu nvarchar(50)
            )
AS
BEGIN
            -- SET NOCOUNT ON added to prevent extra result sets from
            -- interfering with SELECT statements.
            SET NOCOUNT ON;

    -- Insert statements for procedure here
            insert into tblSinhVien(MaSV,TenSV,DiaChi,GhiChu)
            Values(@MaSV,@TenSV,@DiaChi,@GhiChu)
END


 Bước 2. Tạo interface và class cho thực thể Sinh viên: ISinhVien, clsSinhVien

Tạo project có cấu trúc như sau:
Cấu trúc Project theo mô hình 2 lớp trong lập trình Windows 
Trong đó:
ISinhVien

namespace Mohinh3Tang.DAL
{
    interface ISinhVien
    {
        /// <summary>
        /// Mã sinh viên
        /// </summary>
        string MaSV { get; set; }
        /// <summary>
        /// Tên sinh viên
        /// </summary>
        string TenSV { get; set; }
        /// <summary>
        /// Địa chỉ của sinh viên
        /// </summary>
        string DiaChi { get; set; }
        /// <summary>
        /// Ghi chú
        /// </summary>
        string GhiChu { get; set; }
        /// <summary>
        /// Chèn thêm 1 bản ghi với thông tin sinh viên mới đã có trong các thuộc tính.
        /// </summary>
        /// <param name="strConnectionString"></param>
        /// <returns>True: chèn được bản ghi mới;False: Không chèn được</returns>
        bool ChenMoiMotBanGhi(string strConnectionString);
    }
}
clsSinhVien
using System.Data.SqlClient;
namespace Mohinh3Tang.DAL
{
    class ClsSinhVien : ISinhVien
    {
        public string MaSV{get;set;}
        public string TenSV { get; set; }
        public string DiaChi { get; set; }
        public string GhiChu { get; set; }
        public ClsSinhVien()
        {
        }
        public ClsSinhVien(string masv, string tensv,string diachi, string ghichu)
        {
            MaSV = masv;
            TenSV = tensv;
            DiaChi = diachi;
            GhiChu = ghichu;
        }
        public bool ChenMoiMotBanGhi(string strConnectionString)
        {
            bool kt = false;
            SqlConnection sqlConn = new SqlConnection(strConnectionString);
            try
            {
                sqlConn.Open();
                SqlCommand sqlComm = new SqlCommand();
                sqlComm.Connection = sqlConn;
                sqlComm.CommandText = "sp_inserttoSinhVienTable";
                sqlComm.CommandType = System.Data.CommandType.StoredProcedure;

                //Truyen tham so vao cho thu tuc
                sqlComm.Parameters.Add("@MaSV", System.Data.SqlDbType.Char, 10).Value = MaSV ;               
                sqlComm.Parameters.Add("@TenSV", System.Data.SqlDbType.NVarChar,30).Value=TenSV;
                sqlComm.Parameters.Add("@DiaChi",System.Data.SqlDbType.NVarChar,50).Value=DiaChi;
                sqlComm.Parameters.Add("@GhiChu",System.Data.SqlDbType.NVarChar,50).Value=GhiChu;
               
                //Thuc thi cau lenh
                sqlComm.ExecuteNonQuery();
                kt = true;
            }
            catch
            { }
            return kt;
        }
    }
}


Bước 3. Tạo form SinhVien
STT
Đặt tên
Kiểu
Ghi chú
1
txtTenSV
Texbox

2
txtDiaChi
Texbox

3
txtGhiChu
Texbox

4
txtMaSV
Texbox

5
lblThongbao
Label


Có giao diện như sau:
tinhoccoban.net - Form thêm mới 1 sinh viên
Form thêm mới 1 sinh viên

Bước 4. Tạo thêm 1 contructor cho form frmSinhVien

public frmSinhVien(string strConnectionStringSent)
        {
            strConectionString = strConnectionStringSent;
            InitializeComponent();
        }

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

Viết code cho nút thêm mới:
private void btnThem_Click(object sender, EventArgs e)
        {
            DAL.ClsSinhVien sinhvien = new DAL.ClsSinhVien(txtMaSV.Text,
                txtTenSV.Text,
                txtDiaChi.Text,
                txtGhiChu.Text);
            bool kt = sinhvien.ChenMoiMotBanGhi(strConectionString);
            if (kt)
            {
                lblThongbao.Text = "Đã chèn một bản ghi vào bảng Sinh viên.";
            }
            else
            {
                lblThongbao.Text = "Không chèn được.";
            }
        }

Bài tiếp theo: