Giới thiệu về ADO.NET

ADO.NET là tập hợp các thư viện được cung cấp bởi Microsoft nhằm giúp cho ứng dụng có thể thao tác (select, insert, update, delete) tới cơ sở dữ liệu (CSDL) bất kỳ như Sql Server, Oracle, MySql, SQLite…

Mặc định trong .NET sẽ cung cấp sẵn thư viện để kết nối tới Sql Server – SqlClient (System.Data), còn nếu muốn sử dụng các cơ sở dữ liệu khác thì ta tải về từ Nuget

Kiến trúc ADO.NET

ADO.NET được chia thành 2 thành phần chính là Data ProviderData Set như hình vẽ dưới đây:

Data Provider

Gồm các thư viện cung cấp cách thức kết nối tới CSDL và thao tác tới dữ liệu. Mặc định .Net cung cấp sẵn cho chúng ta thư viện để kết nối tới Sql Server – SqlClient (System.Data). Để sử dụng các loại cơ sở dữ liệu khác chúng ta có thể tải về từ Nuget.

Một số từ khóa bạn có thể sử dụng để tìm kiếm như: mysql provider (provider cho Mysql); sqlite provider (provider cho SqlLite); …

Data Set

Gồm các thư viện để quản lý dữ liệu như DataTable (đại diện cho các bảng có trong CSDL); DataColumn (đại diện cho các cột có trong bảng); DataRow (đại diện cho dữ liệu); khóa chính; Constraint (đại diện cho khóa ngoại của bảng); DataRelation (đại diện cho mỗi quan hệ giữa các bảng)…

Sơ lược về chuỗi kết nối (connectionString)

Data Source=myServerName;Initial Catalog=databaseName;User ID=myUser;Password=myPassword

Data Source: Tên SQL Server

Initial Catalog: Tên database

User ID: Tên đăng nhập vào SQL Server

Password: Mật khẩu đăng nhập

Xem bài viết chi tiết về chuỗi kết nối tại đây:

Mở và đóng kết nối cơ bản

string connectionString = "Data Source=myServerName;Initial Catalog=databaseName;User ID=myUser;Password=myPassword";

SqlConnection sqlConnection = new SqlConnection(); 
sqlConnection.ConnectionString = connectionString; // Truyền chuỗi kết nối 

sqlConnection.Open(); // Mở kết nối

sqlConnection.Close(); // Đóng kết nối

Sử dụng khối lệnh using

Khi mở một kết nối xuống cơ sở dữ liệu, sau khi thực hiện các truy vấn thì việc cần làm là phải đóng kết nối cơ sở dữ liệu lại. Khi sử dụng khối lệnh using, khối lệnh này sẽ đảm bảo rằng kết nối sẽ luôn luôn được đóng lại, dù có xảy ngoại lệ đi chăng nữa.

Tìm hiểu thêm về khối lệnh using tại đây: https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/using-statement

string connectionString = "Data Source=myServerName;Initial Catalog=databaseName;User ID=myUser;Password=myPassword";

using(SqlConnection sqlConnection = new SqlConnection())
{
  sqlConnection.ConnectionString = connectionString; // Truyền chuỗi kết nối
  sqlConnection.Open(); // Mở kết nối

  // TODO
}
// Khi ra khỏi phạm vị của khối lệnh, kết nối cơ sở dữ liệu sẽ tự động được đóng

Đoạn code trên sẽ tương đượng với đoạn code bên dưới (đây là cách viết trước khi câu lệnh using ra đời):

string connectionString = "Data Source=myServerName;Initial Catalog=databaseName;User ID=myUser;Password=myPassword";

SqlConnection sqlConnection = new SqlConnection();
try
{
	sqlConnection.ConnectionString = connectionString; // Truyền chuỗi kết nối
 	sqlConnection.Open(); // Mở kết nối

  	// TODO
}
finally
{
	if(sqlConnection != null)
        ((IDisposable)sqlConnection).Dispose(); // Đóng kết nối, hủy tài nguyên
}

Lời kết phần 1

Đây là bài viết mở đầu của chuỗi bài viết về ADO.NET, trong bài viết này tập trung vào khái niệm ADO.NET, kiến trúc của nó và cách đóng mở kết nối tới SQL Server

Trong các bài viết tiếp theo, mình sẽ chia sẻ những vấn đề tiếp theo của chuỗi bài viết về ADO.NET này.

Cuối cùng, cảm ơn mọi người đã xem, hãy để lại ý kiến để mình hoàn thiện hơn nhé!

Được phân loại: