Tuesday, December 13, 2016

Phần 2: SqlConnection

 

Tạo một đối tượng SqlConnection

Một đối tượng SqlConnection giống như các đối tượng khác trong C#. Bạn chỉ cần khai báo một thể hiện của SqlConnection, như dưới đây:
SqlConnection conn = new SqlConnection(
“Data Source=(local);Initial Catalog=Northwind;Integrated Security=SSPI”);
 
Đối tượng SqlConnection trên sử dụng constructor với một tham số kiểu string. Tham số này được gọi là chuỗi kết nối (connection string). Table 1 mô tả các phần của một connection string.
Table 1.  ADO.NET Connection String chứa các cặp key/value để xác định cách tạo một kết nối đến database.  Chúng bao gồm vị trí, tên của database và và chế độ bảo mật.
Connection String Parameter Name Description
Data Source Identifies the server.  Could be local machine, machine domain name, or IP Address.
Initial Catalog Database name.
Integrated Security Set to SSPI to make connection with user’s Windows login
User ID Name of user configured in SQL Server.
Password Password matching SQL Server User ID.
Integrated Security sẽ bảo mật khi bạn làm việc trên một máy đơn. Tuy nhiên, bạn sẽ thường xuyên cần phải định rõ mức bảo mật dựa trên SQL Server User ID với quyền hạn được xác định cho ứng dụng bạn sử dụng. Đoạn mã sau sử dụng một connection string với tham số User ID và Password:

 
SqlConnection conn = new SqlConnection(
“Data Source=DatabaseServer;Initial Catalog=Northwind;User ID=YourUserID;Password=YourPassword”);
 
Lưu ý Data Source được gán cho DatabaseServer để chỉ ra rằng bạn có thể định danh một database trên một máy khác, thông qua mạng LAN, hoặc qua Internet. Ngoài ra, User ID và Password được thay thế cho tham số Integrated Security.

Sử dụng SqlConnection

Mục đích của việc tạo một đối tượng SqlConnection là để các mã lệnh ADO.NET khác có thể làm việc được với database. Các đối tượng ADO.NET khác, như SqlCommand và SqlDataAdapter dùng một connection như một tham số. Quá trình sử dụng SqlConnection gồm các bước sau:
  1. Tạo một SqlConnection.
  2. Mở connection.
  3. Truyền connection  cho các đối tượng ADO.NET khác.
  4. Thực hiện các thao tác database với các đối tượng ADO.NET này.
  5. Đóng connection.
Chúng ta đã thấy cách để tạo một đối tượng SqlConnection. Những bước còn lại, mở, truyền, sử dụng và đóng connection được thể hiện trong Listing 1.


 
using System;
using System.Data;
using System.Data.SqlClient;
 
/// 
/// Demonstrates how to work with SqlConnection objects
/// 
class SqlConnectionDemo
{
    static void Main()
    {
        // 1. Instantiate the connection
        SqlConnection conn = new SqlConnection(
            "Data Source=(local);Initial Catalog=Northwind;Integrated Security=SSPI");
 
        SqlDataReader rdr = null;
 
        try
        {
            // 2. Open the connection
            conn.Open();
 
            // 3. Pass the connection to a command object
            SqlCommand cmd = new SqlCommand("select * from Customers", conn);
 
            //
            // 4. Use the connection
            //
 
            // get query results
            rdr = cmd.ExecuteReader();
 
            // print the CustomerID of each record
            while (rdr.Read())
            {
                Console.WriteLine(rdr[0]);
            }
        }
        finally
        {
            // close the reader
            if (rdr != null)
            {
                rdr.Close();
            }
 
            // 5. Close the connection
            if (conn != null)
            {
                conn.Close();
            }
        }
    }
}
 
Như đã thấy trong Listing 1, bạn mở một connection bằng cách gọi phương thức Open của đối tượng SqlConnection, conn. Bất kì thao tác nào thực hiện với SqlCommand cũng sử dụng connection này.
Mã lệnh sử dụng connection là một SqlCommand – đối tượng thực hiện truy vấn đến bảng Customers trong database. Tập kết quả trả về dưới dạng một SqlDataReader và vòng lặp while đọc cột đầu tiên của mỗi dòng trong tập kết quả này, chính là cột CustomerID. Chúng ta sẽ thảo luận về đối tượng SqlCommand và SqlDataReader trong lesson sau. Hiện tại, điều quan trọng là bạn cần hiểu rằng các đối tượng sử dụng SqlConnection để biết được database nào sẽ được truy xuất.
Khi bạn sử dụng xong đối tượng connection, bạn phải đóng nó. Thực hiện thất bại có thể gây ra các hậu quả nghiêm trọng đến hiệu suất và khả năng của ứng dụng. Như bạn thấy trong Listing 1: phương thức Close() được gọi trong một khối finally và chúng ta đảm bảo rằng connection sẽ khác null trước khi đóng nó.
Lưu ý rằng chúng ta bao đoạn mã ADO.NET trong một khối try/finally. Khối finally giúp đảm bảo rằng một phần mã lệnh sẽ được thực thi, bất kể một ngoại lệ có xảy ra hay không. Bởi vì các connection là một tài nguyên hệ thống ít ỏi, bạn sẽ cần phải chắc chắn rằng chúng được đóng trong khổi finally.
Một điểm bạn nên làm khi đóng connection là đảm bảo connection khác null. Nếu có sai sót xảy ra khi tạo connection, nó sẽ là null và bạn không nên cố đóng một connection không hợp lệ, điều này sẽ gây ra một ngoại lệ.
Ví dụ này cho thấy cách để dùng đối tượng SqlConnection với SqlDataReader – đối tượng yêu cầu bạn phải thực hiện một lệnh đóng connection rõ ràng. Tuy nhiên, khi dùng mô hình dữ liệu ngắt kết nối, bạn không cần phải mở và đóng connection thủ công. Chúng ta sẽ xem xét về vấn đề này trong lesson sau khi tìm hiểu về đối tượng SqlDataAdapter.
 
Sưu tầm: yinyangit 

Bài Viết Liên Quan