Ngôn ngữ ASP.NET - Đối tượng Connection
Giới thiệu đối tượng Connection
Điều đầu tiên bạn cần là tạo một kết nối để xác định database nào cần làm việc. Nó sẽ quản lý tất cả các logic ở mức thấp kết hợp với các giao thức đặc trưng của database. Công việc mà bạn cần làm chỉ là tạo một đối tượng connection, mở kết nối và đóng kết nối sau khi đã hoàn thành công việc.
Mặc dù làm việc với connection rất đơn giản trong ADO.NET, bạn vẫn cần hiểu về connection để có một quyết định đúng khi viết mã lệnh truy xuất dữ liệu. Phải hiểu rằng mỗi kết nối là một tài nguyên quan trọng. Nếu bạn chỉ có một ứng dụng làm việc với database trong máy, bạn có thể không cần quan tâm đến nó. Tuy nhiên, với các ứng dụng doanh nghiệp, hàng trăm người dùng khắp công ty kết nối tới cùng một database. Mỗi kết nối giống như một đường đây và số lượng của chúng nằm trong mức giới hạn. Trường hợp bạn có thể thấy rõ hơn là một web site được truy cập với hàng trăm nghìn lượt mỗi ngày. Ứng dụng sẽ bắt và giữ các kết nối, điều này có thể gây ra những ảnh hưởng nghiêm trọng đến hiệu suất và vận hành của ứng dụng.
Data Provider :
- System.Data.Oledb : Sử dụng với Access
- System.Data.SqlClient : Sử dụng với SQLServer
Ứng với mỗi tên miến ta có một connection tương ứng:
- System.Data.Oledb.OledbConnection
- System.Data.SqlClient.SqlConnection
Ngoài ra ADO.NET còn hỗ trợ các Data Provider khác như
- System.data.OcracleClient : Dành cho Ocracle
- MicroSoft.data.Odbc : Dành cho dạng kết nối thong qua Odbc Của Hệ điều hành
- Microsoft.Data.Sqlxml: Dành cho XML trên Sqlserver
Connection String
Trước khi thực hiện kết nối Connectionần khai báo các thong tin cho Connection thông qua thuộc tính Connection String. Cách khai báo thay đổi tùy thuộc vào Data Provider. Gồm có các thành phần sau:
Nếu kết nối với CSDL Access
- Provider: Khai báo Data Provider Của Hệ QT CSDL Access
- Data Source: Nguồn dữ liệu (Tên CSDL.mdb)
- User ID: Tên người dùng
- Password : Mật khẩu
Ví dụ: Tạo kết nối với CSDL Access
using System;
using System.Data;
using System.Data.OleDb;
public partial class VD2 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
//Khai báo và khởi tạo biến Connection, office< 2010
String StrCnn="Provider=Microsoft.Jet.OLEDB.4.0;
Data Source=" + Server.MapPath("~/App_Data/QLBansach.mdb");
OleDbConnection cnn = new OleDbConnection (StrCnn);
//Mở kết nối
cnn.Open();
//Command điều khiển truy vấn sql
OleDbCommand cmd = cnn.CreateCommand();
cmd.CommandText = "select HotenKH from Khachhang where MaKH=2";
//lấy về chuỗi giá trị trong cơ sở dữ liệu
string result = (string)cmd.ExecuteScalar();
//đóng kết nối
cnn.Close();
//in giá trị ra màn hình
Response.Write(result);
}
}
Kết nối với CSDL SQLServer
Đối tượng SqlConnection
Mô hình sau cho ta thấy cách mà SqlConnection được sử dụng bởi các đối tượng ADO.NET khác:
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=QLSach;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). Bảng 1 mô tả các phần của một connection string.
Tên tham số của chuỗi kết nối | Ý nghĩa |
Data Source | Tên máy chủ cài SqlServer. Có thể là tên máy, IP, domain name. |
Initial Catalog | Tên cơ sở dữ liệu. |
Integrated Security | đặt SSPI để đăng nhập bằng quyền windows |
User ID | Username của SQL Server. |
Password | Mật khẩu của 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:
Tạo một SqlConnection.
- Mở connection.
- Truyền connection cho các đối tượng ADO.NET khác.
- Thực hiện các thao tác database với các đối tượng ADO.NET này.
- Đóng connection.
Các thuộc tính của Connection
- DataBase: : Tương ứng với Initial Catalog(SQL) hay tên CSDL muốn làm việc (Access)
- DataSource: Tương ứng với DataSource Tên máy SQL hay tên CSDL
- Provider: Tương ứng với Provider
- State: Tình trạng kết nối Của Connection với các giá trị
- Broken: Kết nối đã bị ngắt chỉ xảy ra sau khi đã kết nối
- Closed: Kết nối đã đóng
- Connecting: Đang kết nối
- Executing: Kết nối đang thực hiện một lệnh
- Fetching: Kết nối đang truy xuất dữ liệu
- Open: Kết nối đang mở
Các phương thức
- Change Databse: Thay đổi DataBase làm việc
- Close : Đóng kết nối sử dụng đóng Connection đang mở
- Dispose: Xóa tòan bộ tài nguyên liên quan đấn Connection trên vùng nhớ.
- Open: Thực hiện kết nối Connectionới các thông tin đã khai báo trong ConnectionString
Ví dụ: Kiểm tra kết nối với CSDL SQLServer
protected void Button1_Click(object sender, EventArgs e)
{
try{
//Khai báo và khởi tạo biến Connection
SqlConnection cnn = new SqlConnection("Data Source=;Initial Catalog=QLbansach;User ID=sa;Password=");
//Mở kết nối
cnn.Open();
TextBox1.Text = "State = " + cnn.State; ;
// Thực hiện các câu lệnh SELECT, INSERT, DELETE, UPDATE.
cnn.Close();
}
finally
{
// 5. Close the connection
if (cnn!= null)
cnn.Close();
}
//Đóng kết nối
}
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.
Thực thi trang web trên cho kết quả:
Tổng kết
Các đối tượng SqlConnection cho phép các đối tượng ADO.NET khác biết database nào sẽ được truy xuất và cách để tạo một connection. Chúng được tạo bằng cách truyền một connection string với một danh sách các cặp key/value để định nghĩa connection. Các bước mà bạn quản lý một connection là tạo, mở, truyền (cho các đối tượng ADO.NET khác), sử dụng và đóng. Hãy đảm bảo đóng connection một cách chính xác khi bạn đã làm việc xong với nó để chắc chắn rằng bạn không có một sự rò rỉ tài nguyên kết nối.