ASP.NET: Tạo lớp kết nối CSDL trong ASP.NET

Người đăng: share-nhungdieuhay on Chủ Nhật, 21 tháng 4, 2013


Việc tạo lớp (class) kết nối cơ sở dữ liệu rất có lợi, ta có thể tiết kiệm thời gian viết lại chuỗi kết nối cơ sở dữ liệu nhiều lần, lúc sửa lại Server hay CSDL thì ta 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.

Thêm Class kết nối
Khi đã tạo dự án (project) website bằng Visual Studio vào menu Solution Explorer tạo một đối tượng (item) mới là Class đặt tên là dataProvider.cs

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, sửa, xó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. 
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();
}


2. Demo tính năng Insert sử dụng Class kết nối.
Các tính năng như Insert, Update Delete gần như là tương tự nhau.
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();
}


{ 0 nhận xét... read them below or add one }

Đăng nhận xét