ASP.Net: Tạo lớp kết nối CSDL – Class connect database

ASP.Net: Tạo lớp kết nối CSDL – Class connect database

Với các bài tập nhỏ trong lúc học ASP.Net thì có thể bạn dùng kết nối cơ sở dữ liệu bình thường, tuy nhiên khi thiết kế trang web hoàn chỉnh thì câu kết nối sẽ được viết đi viết lại rất nhiều lần do đó mình sẽ sử dụng class kết nối CSDL.

Việc mà bạn tạo class kết nối rất có lợi, bạn có thể tiết kiệm thời gian gõ lại chuỗi kết nối cơ sở dữ liệu, lúc bạn sửa lại server hay CSDL thì bạn không phải đến từng trang một mà chỉ cần sửa trực tiếp trên chuỗi kết nối là đươc.

ASP.Net: Tạo lớp kết nối CSDL – Class connect database

Tạo class kết nối CSDL trong ASP.Net

Thêm Class kết nối

Khi đã tạo dự án website bằng Visual vào menu Solution Explorer tạo một item mới đó là Class đặt tên là dataProvider.cs

Add new class kết nối database DataProvider

Add new class kết nối database DataProvider

Bạn chọn Yes để visual tạo cho bạn file dataProvider.cs đồng thời tạo ra thư mục Addcode và để chứa các file mở rộng vào đó.

Khai báo thư viện và khởi tạo các biến

Việc đầu tiên là mở dataProvider.cs khai báo thư viện, mình sử dụng kết nối bằng SQL nên khai báo thư viện System.Data.SqlClient ngoài ra còn sử dụng các Data như: dataset, datatable… nên khai báo thêm: System.Data.

using System.Data.SqlClient;

using System.Data;

Phía dưới dòng public class dataProvider bạn khai báo các biến sẽ được sử dụng trong class kết nối cơ sở dữ liệu này.

SqlConnection con;

SqlDataAdapter da;

DataSet ds;

SqlCommand cmd

Giải thích:

  • SqlConnection: Dùng để kết nối vào cơ sở dữ liệu
  • SqlDataAdapter: Là đối tượng trung gian lấy dữ liệu FIll vào trong các đối tương Data
  • DataSet: Kho chứa dữ liệu tạm thời để xử lý
  • SqlCommand: Các xử lý truy vấn SQL thêm, xóa, sửa

Tiếp đến bạn khởi tạo kết nối bằng cách sau:

public void conncet()

{

    if (con == null)

        con = new SqlConnection("server=.; database=bcdonlinesv; integrated security = true;");

    if (con.State == ConnectionState.Closed)

        con.Open();

}

Nếu connection là null thì mới tạo kết nối, và trạng thái kết nối là đóng thì ta sẽ mở nó lên. Sau đó mình thực hiện việc đóng kết nối như sau:

public void disconnect()

{

    if ((con != null) && (con.State == ConnectionState.Open))

        con.Close();

}

Nếu connection là null và trang thái là mở thì mình sẽ đóng lại.

Hàm lấy dữ liệu (get data) trong Class kết nối

Mình phân ra hai nhóm một là lấy dữ liệu lên, hai là xử lý command còn gọi là ExeCuteNonQuery. Cách bạn lấy dữ liệu từ một chuỗi kết nối và truy vấn get sau đó đổ vào DataSet và tiến hành các xử lý.

public DataSet get(string sql)

{

    conncet();

    da = new SqlDataAdapter(sql, con);

    ds = new DataSet();

    da.Fill(ds);

    disconnect();

    return ds;

}

Đây sẽ trả về là kiểu DataSet.

Hàm xử lý Thêm xóa sửa trong Class kết nối

Bạn thấy các công việc thêm xóa sửa trong database chỉ khác nhau chổ truy vấn SQL nên ta sẽ gom chung nó vào một hàm. Cách bạn khai báo như sau:

public void ExeCuteNonQuery(string sql)

{

    conncet();

    cmd = new SqlCommand(sql, con);

    cmd.ExecuteNonQuery();

    disconnect();

}
Demo sử dụng các tính năng bằng lớp kết nối CSDL

Bây giờ chúng ta sẽ sử dụng class kết nối cơ sở dữ liệu vừa tạo thực hiện các thao tác lấy dữ liệu, thêm xóa sửa. Mình lấy lại Dữ liệu bài Đăng ký đăng nhập trong ASP.Net sử dụng cho tiện khỏi phải tạo mới nữa.

1. Tính năng lấy dữ liệu.

dataProvider data = new dataProvider(); // Khởi tạo đối tượng từ class

Sử dụng được class phải có đối tượng ở đây mình khai báo là data. Sau đó tạo hàm load database.

private void load_data()

{

    string sql = "select * from taikhoan";

    gvTaiKhoang.DataSource = data.get(sql).Tables[0];

    gvTaiKhoang.DataBind();

}

Tiếp đến bạn load data khi gọi PageLoad.

protected void Page_Load(object sender, EventArgs e)
{

    if (!IsPostBack)

        load_data();

}

Kết quả bạn sẽ nhìn thấy được kết quả như sau:

Kết quả get data bang class kết nối CSDL

Kết quả get data bang class kết nối CSDL

2. Demo tính năng insert sử dung Class kết nối.

Các tính năng như insert update delete gần như là tương tự nhau mình sẽ demo phần insert thôi các phần khác mọi người tìm hiểu thêm nha! :D

Click vào nút insert khai báo như sau:

protected void btInsert_Click(object sender, EventArgs e)

    {

        string sql = "insert into taikhoan(username,pass) values('" + txtU.Text + "','" + mahoa(txtP.Text) + "')";

        data.ExeCuteNonQuery(sql);

        load_data();


    }

Kết luận: Rõ ràng dùng Class kết nối cơ sở dữ liệu thì sẽ ngắn gọn và chuyên nghiệp hơn nhiều so với các làm thô sơ lúc trước đã làm :) hiện nay có phần mới là kết nối theo mô hình 3 lớp (3 layer) mình sẽ chia sẻ sau. Chúc mọi người thành công!

Bạn thấy bài viết này như thế nào?: 
Average: 9.7 (6 votes)
Ả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

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

 
Google xác nhận Pixel 3a sau Google Pixel 3 và 3 XL dự kiến ra mắt tại Google I/O 2019

Google xác nhận Pixel 3a sau Google Pixel 3 và 3 XL dự kiến ra mắt tại Google I/O 2019

Ngay sau khi bộ đôi Google Pixel 3 và 3 XL, Goolge lại tiếp tục ra mắt các phiên bản rẻ hơn mang tên Pixel 3 Lite và Pixel 3 XL Lite. Và mới đây, bộ đôi này đã chính thức đạt chứng nhận của FCC.

Vaccine ComBe Five.

Chọn vaccine "5 trong 1" ComBe Five của Ấn Độ thay thế cho Quinvaxem lợi hay hại.

Bắt đầu từ tháng 6-2018, Việt Nam sẽ sử dụng vaccine ComBe Five của Ấn Độ để thay thế vaccine “5 trong 1” Quinvaxem của Hàn Quốc trong chương trình tiêm chủng mở rộng (TCMR) quốc gia, tiêm miễn phí cho trẻ dưới 1 tuổi.

iPad vẫn "sốt" mùa cuối năm hơn Kindle Fire

iPad vẫn "sốt" mùa cuối năm hơn Kindle Fire

Một cuộc khảo sát mới đây của công ty tư vấn và nghiên cứu thị trường Mỹ - Parks Associates cho thấy, người dùng dù ưa thích Kindle Fire nhưng 62% vẫn sẽ định mua iPad trong mùa mua sắm cuối năm.

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

 

Diet con trung