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 Provider và Data 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é!