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.
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
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
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!
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!