Để thực hiện tương tác giữa ứng dụng và cơ sở dữ liệu, chúng ta cần thiết lập kết nối giữa ứng dụng và cơ sở dữ liệu. Thiết lập kết nối gồm các bước:

  • B1: Tạo chuỗi kết nối (connection string)
  • B2: Tạo một kết nối
  • B3: Cấu hình chuỗi kết nối

Tạo chuỗi kết nối

Chuỗi kết  nối chứa các thông tin về kết nối như tên máy chủ, tên cơ sở dữ liệu, tên kết nối, thời gian,…Những thành phần tạo nên một chuỗi kết nối và các ví dụ về chuỗi kết nối có thể tham khảo tại https://ngocminhtran.com/2017/02/22/ado-net-connected-classes-phan-1-ket-noi-den-data-store/ .

Ví dụ sau đây là một chuỗi kết nối dùng để kết nối đến cơ sở dữ liệu trên máy cục bộ


Server=Admin-PC0617iey\SQLEXPRESS; Database=QuanLySinhVien; Integrated Security=SSPI

Server chứa thông tin về máy chủ chứa cơ sở dữ liệu và cũng là thông tin chúng ta  dùng để đăng nhập khi quản trị cơ sở dữ liệu bằng Microsoft SQL Server Management Studio, ví dụ:

Database là tên cơ sở dữ liệu; Integrated Security xác nhận kết nối an toàn. Trong nhiều trường hợp chúng ta có thể dùng Data Source thay vì dùng Server và dùng Initial Catalog thay vì Database. Chuỗi kết nối trên có thể tương đương


Data Source =Admin-PC0617iey\SQLEXPRESS; Initial Catalog =QuanLySinhVien; Integrated Security=SSPI

Tạo kết nối

Khi đã có chuỗi kết nối chúng ta có thể tạo kết nối bằng đối tượng SqlConnection (vì chúng ta dùng SQL Server) và phương thức Open như đoạn mã sau:


try

{

using (SqlConnection connection =

new SqlConnection(@"Server=Admin-PC0617iey\SQLEXPRESS;

Database=QuanLySinhVien; Integrated Security=SSPI"))

{

connection.Open();

}

Console.WriteLine("Mo va dong co so du lieu thanh cong.");

}

catch (Exception ex)

{

Console.WriteLine("Loi khi mo  ket noi: " + ex.Message);

}

Dùng lệnh  using để gọi các phương thức Close() hay Dispose() để đóng kết nối và giải phóng tài nguyên. Dùng try/catch để bắt các ngoại lệ có thể phát sinh ví dụ sai tên cơ sở dữ liệu. Ví dụ khi gõ sai tên cơ sở dữ liệu trong chuỗi  kết nối như sau:


Server=Admin-PC0617iey\SQLEXPRESS; Database=puanLySinhVien; Integrated Security=SSPI

Lỗi có thể như sau:

Cấu hình chuỗi kết nối

Khi triển khai ứng dụng, thông tin về chuỗi kết nối có thể thay đổi phụ thuộc vào môi trường khác nhau như tên máy chủ, thông tin bảo mật, v.v. Vì vậy, chúng ta cần lưu trữ chuỗi kết nối trong tập tin cấu hình để có  thể thay đổi dễ dàng mà không cần can thiệp vào mã của ứng dụng. Với các ứng dụng như Console Application, Windows Application hay WPF Application, chuỗi kết nối được lưu trữ trong tập tin App.config; ứng dụng ASP.NET là tập tin Web.config. (Chi tiết hơn về chuỗi kết nối có thể tham khảo tại https://ngocminhtran.com/2017/02/22/ado-net-connected-classes-phan-1-ket-noi-den-data-store/ )

Trong ứng dụng Console của chúng ta, nội dung tập tin App.config có thể như sau:


<?xml version="1.0" encoding="utf-8" ?>

<configuration>

<startup>

<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />

</startup>

</configuration>

Các chuỗi kết nối được lưu trữ trong phần tử connectionStrings và các chuỗi kết được thêm đến connectionString bằng phần tử add. Chuỗi kết nối của chúng ta được lưu trữ trong App.config (Vào cửa sổ Solution Explorer chọn App.Config) như sau:


<?xml version="1.0" encoding="utf-8" ?>

<configuration>

<connectionStrings>

<add name="QLSV" connectionString="Server=Admin

PC0617iey\SQLEXPRESS; Database=QuanLySinhVien; Integrated Security=SSPI"/>

</connectionStrings>

<startup>

<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />

</startup>

</configuration>

Phần tử add chứa hai thuộc tính là name chứa tên của chuỗi kết nối, connectionString chứa chuỗi kết nối.

Để nhận chuỗi kết nối từ tập tin cấu hình chúng ta dùng lớp ConfigurationManager và trước đó chúng ta phải thực thi assembly System.Configuration.dll bằng cách vào PROJECT > Add Reference… Trong khung Assemblies chọn Framework và chọn System.Configuration ở khung giữa:

Nhấp OK. Thêm namespace System.Configuration và thay đổi đoạn mã như sau:


string connectionString = ConfigurationManager.ConnectionStrings["QLSV"].ConnectionString;

try

{

using (SqlConnection connection =new SqlConnection(connectionString))

{

connection.Open();

}

Console.WriteLine("Mo va dong co so du lieu thanh cong.");

}

catch (Exception ex)

{

Console.WriteLine("Loi khi mo  ket noi:" + ex.Message);

}

Xây dựng chuỗi kết nối

Thỉnh thoảng chúng ta muốn tự tạo một chuỗi kết nối bằng mã C#. Có thể thực hiện điều này với lớp SqlConnectionStringBuilder. Đoạn mã sau sẽ minh hoạ cách tạo chuỗi kết nối ở trên bằng lớp SqlConnectionStringBuilder:


SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder();

builder.DataSource = @"Admin-PC0617iey\SQLEXPRESS";

builder.InitialCatalog = "QuanLySinhVien";

builder.IntegratedSecurity = true;

using (SqlConnection connection = new

SqlConnection(builder.ConnectionString))

Học C# và WPF >