OOP C# - Sử dụng Hàm để chạy Procdure trong mô hình 3 lớp

Wednesday, March 25, 2015
Lập trình hướng đối tượng và Mô hình 3 lớp trong C# Đôn Bá Đạo Blog đã giới thiệu khá nhiều cho các bạn nhưng những hàm đó khá bình thường , chỉ chạy được những câu SQL đơn giản .

Hôm nay chúng ta sẽ học thêm 2 hàm để chạy procdure để hiện thị một DataTable và một hàm để Thêm dữ liệu vào SQL thông qua Procdure

Có một số trường hợp khi chúng ta thêm dữ liệu vào SQL thì cũng cần phải check dữ liệu có trùng hay không hoặc như thế nào đó . Các bạn phải dùng đến Procdure hoặc Trigger . Vậy chúng ta cùng tìm hiểu như thế nào để thực hiện 2 hàm này nhé.

OOP C# - Sử dụng Hàm để chạy Procdure trong mô hình 3 lớp

Hàm hiển thị một DataTable

Khá giống với hàm hiển thị bình thường mà chúng ta đã biết.

//### Lấy thông tin từ Proc SQL
        public DataTable Laydulieu(string sql)
        {
            SqlConnection con=getconnect();
            SqlCommand command = new SqlCommand(sql, con);
            command.CommandType = CommandType.StoredProcedure;           
            SqlDataAdapter ada = new SqlDataAdapter(command);
            DataTable dt = new DataTable();
            ada.Fill(dt);
            return dt;
        }
Cũng không khác gì lắm so với hàm hiển thị dữ liệu kia nhưng các sử dụng sẽ khác . Chúng ta sẽ cùng tìm hiểu về cách để áp dụng và gọi hàm này trong lớp Bussiness nhé.

 return da.Laydulieu("laythongtin");
Như vậy là chúng ta chỉ cần chèn tên procdure vào nhưng không có tham số nhé.
Vì hiển thị dữ liệu cũng không cần lắm là sử dụng procdure các bạn có thể sử dụng cách bình thường mà mình đã giới thiệu từ trước để sử dụng.

Việc quan trọng mà chúng ta cần áp dụng chính là Hàm cập nhật dữ liệu bằng Procdure

Hàm cập nhật dữ liệu bằng Procdure

 public int capnhatdulieu(string sql, string[] name, object[] value, int Nparameter)
        {
            SqlConnection con=getconnect();
            con.Open();
            SqlCommand command = new SqlCommand(sql, con);
            command.CommandType = CommandType.StoredProcedure;
            for (int i = 0; i < Nparameter; i++)
            {
                command.Parameters.AddWithValue(name[i], value[i]);
            }
            return command.ExecuteNonQuery();
        }
Các tham số truyền vào bao gồm:
Tên procdure.
[] name : khai báo các tham số trong procdre bắt đầu từ 0.. n
[] value: các biến được sử dụng trong procdure.
[] Nparameter: khai báo các phần tử trong procdure.
Code ví dụ:

 public int themgoimon(string tenmon,string idban,string giatien)
        {
            int thamso = 3;
            string[] ten = new string[thamso];
            object[] giatri = new object[thamso];
            ten[0] = "@tenmon";
            giatri[0] = tenmon;
            ten[1] = "@idban";
            giatri[1] = idban;
            ten[2] = "@giatien";
            giatri[2] = giatien;
            return da.capnhatdulieu("kiemtratrung", ten, giatri, thamso);
        }
Nguồn: Đôn Bá Đạo