Lập trình thực thi thủ tục SQL trong ADO.NET & Mô hình 3 lớp – Phần 2

Lập trình thực thi thủ tục SQL trong ADO.NET & Mô hình 3 lớp – Phần 2

Trong bài viết Lập trình thực thi thủ tục SQL trong ADO.NET – Phần 1 tôi đã trình bày về cách thực thi 1 thủ tục thông thường bên trong Code của Form sử dụng ADO.NET. Ở phần 2 này tôi sẽ trình bày cách các bạn thao tác với thủ tục SQL trong mô hình 3 lớp. Bạn sẽ thấy được việc thực thi thủ tục lúc này trở nên đơn giản và thuận tiện hơn rất nhiều.

Trong bài viết này, tôi lại quay trở lại ví dụ của Lập trình theo mô hình 3 của một bài viết trước. Bạn hãy tải về để tiện theo dõi.

Bước 1: Trong cơ sở dữ liệu BookShopDB, bạn hãy tạo 3 thủ tục thêm, xóa, sửa 1 cuốn sách như sau:

CREATE PROC SP_InsertBook

(

     @BookName nvarchar(250),

     @Author nvarchar(500),

     @Amount int,

     @Price int

)

AS

INSERT INTO Books

VALUES(@BookName,@Author,@Amount,@Price);
CREATE PROC SP_UpdateBook

(

     @BookID int,

     @BookName nvarchar(250),

     @Author nvarchar(500),

     @Amount int,

     @Price int

)

AS

UPDATE Books

SET BookName = @BookName,

     Author = @Author,

     Amount= @Amount,

     Price =@Price

WHERE BookID= @BookID;
CREATE PROC SP_DeleteBook

(

     @BookID int  

)

AS

DELETE Books

WHERE BookID= @BookID;

Bước 2: Trong lớp DataAccessHelper bạn viết một phương thức dùng chung để chạy 1 thủ tục dạng thêm, sửa, xóa như sau:

public int ExecuteStoredProcedure(string spName, string[] pNames, object[] pValues)

        {

            Open();

            // Khai báo và khởi tạo đối tượng Command với tham số tên thủ tục spName

            cmd = new SqlCommand(spName, conn);

            // Khai báo kiểu thủ tục

            cmd.CommandType = CommandType.StoredProcedure;

            // Khai báo tham số SqlParameter

            SqlParameter p;

            // Khởi tạo danh sách các tham số với giá trị tương ứng

            for (int i = 0; i < pNames.Length; i++)

            {

                p = new SqlParameter(pNames[i], pValues[i]);

                cmd.Parameters.Add(p);

            }


            return cmd.ExecuteNonQuery();

        }

Bước 3: Viết code sử dụng thủ tục trong lớp BookDAL

// Thực thi bằng thủ tục

        public bool InsertBook(Book bk)

        {

            string spName = "SP_InsertBook"; // Tên thủ tục

            // Tên các tham số trong thủ tục

            string[] pNames = {"@BookName", "@Author","@Amount","@Price" };

            // Giá trị tương ứng muốn gán cho từng tham số trên

            object[] pValues = {bk.BookName,bk.Author,bk.Amount,bk.Price };


            int count = db.ExecuteStoredProcedure(spName, pNames, pValues);

            

            return count > 0;

        }


        public bool UpdateBook(Book bk)

        {

            string spName = "SP_UpdateBook";

            string[] pNames = { "@BookID","@BookName", "@Author", "@Amount", "@Price" };

            object[] pValues = {bk.BookID, bk.BookName, bk.Author, bk.Amount, bk.Price };


            int count = db.ExecuteStoredProcedure(spName, pNames, pValues);


            return count > 0;

        }


        public bool DeleteBook(Book bk)

        {

            string spName = "SP_DeleteBook";

            string[] pNames = { "@BookID"};

            object[] pValues = { bk.BookID };


            int count = db.ExecuteStoredProcedure(spName, pNames, pValues);


            return count > 0;

        }

Bước 4: Gọi các phương thức thực thi thủ tục của BookDAL trong lớp BookBLL

// Thực thi gọi phương thức có sử dụng thủ tục

        public bool InsertBook(Book bk)

        {

            return dal.InsertBook(bk);

        }

        public bool UpdateBook(Book bk)

        {

            return dal.UpdateBook(bk);

        }

        public bool DeleteBook(Book bk)

        {

            return dal.DeleteBook(bk);

        } 

Bước 5: Gọi các phương thức của BookBLL trong Form frmBooks và frmUpdateBook.

    Gọi phương thức DeleteBook trong sự kiện Click  của nút btnDelete trên form frmBook

    Gọi các phương thức InsertBook và UpdateBook trong sự kiện Click của nút btnSave trên form frmUpdateBook

     Việc gọi như thế nào các bạn xem chi tiết trong Ví dụ Demo.

Bước 6: Chạy chương trình và thử nghiệm.

Download Demo thực thi thủ tục với ADO.NET & Mô hình 3 lớp

Chúc bạn thành công!

Bài 1: Xây dựng cơ sở dữ liệu có tên là DANHSACHDUTHI. Có cấu trúc gồm 3 bảng như sau:

Khóa chính:

  • DanhSach: SoBD
  • DiemThi: SoBD
  • ChiTietDT: DTDuThi

Script: DANHSACHDUTHI

Quản lý:

  • Thêm, xóa, sửa một mẩu dữ liệu vào table Danh sách sử dụng store procedure.
  • Thêm, xóa, sửa một mẩu dữ liệu vào table Chi tiết sử dụng store procedure
  • Thêm, xóa, sửa một mẩu dữ liệu vào table Điểm thi sử dụng store procedure.
Tags: 
Bạn thấy bài viết này như thế nào?: 
No votes yet
Ảnh của Tommy Tran

Tommy owner Express Magazine

Drupal Developer having 9+ year experience, implementation and having strong knowledge of technical specifications, workflow development. Ability to perform effectively and efficiently in team and individually. Always enthusiastic and interseted to study new technologies

  • Skype ID: tthanhthuy

Bình luận (0)

 

Add Comment

Filtered HTML

  • Các địa chỉ web và email sẽ tự động được chuyển sang dạng liên kết.
  • Các thẻ HTML được chấp nhận: <a> <em> <strong> <cite> <blockquote> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Tự động ngắt dòng và đoạn văn.

Plain text

  • No HTML tags allowed.
  • Các địa chỉ web và email sẽ tự động được chuyển sang dạng liên kết.
  • Tự động ngắt dòng và đoạn văn.
CAPTCHA
This question is for testing whether or not you are a human visitor and to prevent automated spam submissions.

Advertisement

 

jobsora

Dich vu khu trung tphcm

Dich vu diet chuot tphcm

Dich vu diet con trung

Quảng Cáo Bài Viết

 
HTML Injection – The Cross-Site Scripting (XSS)

HTML Injection – The Cross-Site Scripting (XSS)

XSS – Có lẽ mọi người đã biết. Mình chỉ xin tổng hợp lại một số kiến thức cơ bản dưới đây .

Giới thiệu REST Easy phần 2: Sub Property Boogaloo

Giới thiệu REST Easy phần 2: Sub Property Boogaloo

Hello again, RESTful friends. Welcome to episode II, The RESTful strikes back

6 Drupal SEO Modules Required for Superior Search Ranking Performance

6 Drupal SEO Modules cần thiết cho hiệu suất xếp hạng website

If you are running your site with Drupal, you are reaping the numerous benefits this publishing platform has to offer.

Công ty diệt chuột T&C

 

Diet con trung