393
Chương 10: Cơ sở dữ liệu
cho phép bạn lấy thông tin về trạng thái của một kết nối và những thiết lập được sử dụng để
mở kết nối. Khi đã hoàn tất một kết nối, bạn nên gọi phương thức
Close
để giải phóng các tài
nguyên hệ thống và kết nối cơ sở dữ liệu nằm dưới.
IDbConnection
được thừa kế từ
System.IDisposable
, nghĩa là mỗi lớp kết nối sẽ hiện thực phương thức
Dispose
. Phương thức
này sẽ tự động gọi
Close
, cho nên lệnh
using
là một cách rất rõ ràng và hiệu quả khi sử dụng
đối tượng kết nối trong mã lệnh.
Để đạt được hiệu năng tối ưu trong việc truy cập dữ liệu thì phải mở kết nối cơ sở dữ liệu
càng chậm càng tốt, và khi đã hoàn tất thì ngắt kết nối càng sớm càng tốt. Việc này bảo đảm
rằng, bạn không truy xuất tới kết nối cơ sở dữ liệu trong một thời gian dài và mã lệnh có cơ
hội cao nhất để giữ lấy kết nối. Điều này đặc biệt quan trọng nếu bạn đang sử dụng
connection-pooling.
Đoạn mã dưới đây trình bày cách sử dụng lớp
SqlConnection
để mở một kết nối đến SQL
Server đang chạy trên máy cục bộ có sử dụng Integrated Windows Security (bảo mật tích hợp
với Windows). Để truy xuất đến một máy từ xa, chỉ cần thay đổi data-source từ
localhost
thành tên của đối tượng cơ sở dữ liệu.
// Tạo đối tượng SqlConnection rỗng.
using (SqlConnection con = new SqlConnection()) {
// Cấu hình chuỗi kết nối của đối tượng SqlConnection.
con.ConnectionString =
"Data Source = localhost;"+ // Đối tượng SQL Server cục bộ
"Database = Northwind;" + // Cơ sở dữ liệu mẫu Northwind
"Integrated Security=SSPI"; // Integrated Windows Security
// Mở kết nối cơ sở dữ liệu.
con.Open();
// Hiển thị thông tin về kết nối.
if (con.State == ConnectionState.Open) {
Console.WriteLine("SqlConnection Information:");
Console.WriteLine(" Connection State = " + con.State);
Console.WriteLine(" Connection String = " + con.ConnectionString);
Console.WriteLine(" Database Source = " + con.DataSource);
Console.WriteLine(" Database = " + con.Database);
Console.WriteLine(" Server Version = " + con.ServerVersion);
Console.WriteLine(" Workstation Id = " + con.WorkstationId);
Console.WriteLine(" Timeout = " + con.ConnectionTimeout);
Console.WriteLine(" Packet Size = " + con.PacketSize);
} else {
Console.WriteLine("SqlConnection failed to open.");