Trường Đại Học Lạc Hồng 2009 - 2010
LẬP TRÌNH
WEB ASP.NET
Ts. Vũ Đức Lung
Ks. Phan Hữu Tiếp
Chương 4:
Xử Lý Dữ Liệu Với ADO.NET
1
LHU
Ts. Vũ Đức Lung – Ks. Phan Hữu Tiếp
Nội dung chính
Giới thiệu về ADO.NET
Các đối tượng trong ADO.NET
Điều khiển liên kết dữ liệu
2
http:// lhu.edu.vn
Ts. Vũ Đức Lung – Ks. Phan Hữu Tiếp
3
http:// lhu.edu.vn
Ts. Vũ Đức Lung – Ks. Phan Hữu Tiếp
Giới thiệu về ADO.NET
Ứng dụng cần CSDL: người dùng, ứng dụng, file,…
CSDL quan hệ => lưu trữ theo hệ quản trị CSDL: Access, MS
SQL Server, Oracle.
Người thiết kế quan tâm:
Lưu trữ dữ liệu tập trung
Đảm bảo toàn vẹn dữ liệu
Khả năng truy xuất đồng thời
Thời gian hồi đáp ngắn
Bảo mật dữ liệu
Trao đổi giữa các hệ thống khác nhau
4
http:// lhu.edu.vn
Ts. Vũ Đức Lung – Ks. Phan Hữu Tiếp
Giới thiệu về ADO.NET
ADO.NET (Active Data Object) là một phần của .NET
Framework, cung cấp các dịch vụ xử lý dữ liệu
Làm việc với dữ liệu không kết nối
Dữ liệu được lưu trữ trong một CSDL thu nhỏ gọi là DataSet
=>tăng tốc độ tính tốn, giảm sử dụng tài ngun trên
Database server.
Khả năng xử lý dữ liệu dạng chuẩn XML =>làm việc với nhiều
ứng dụng khác
5
http:// lhu.edu.vn
Ts. Vũ Đức Lung – Ks. Phan Hữu Tiếp
Giới thiệu về ADO.NET
6
http:// lhu.edu.vn
Ts. Vũ Đức Lung – Ks. Phan Hữu Tiếp
Giới thiệu về ADO.NET
Kiến trúc ADO.NET có hai đối tượng chính: Dataset (data
table) và .NET data provider (Data Adapter, DataReader,
Command, Connection)
Dataset lưu data từ Database
Để nhận data từ CSDL, DataAdapter dùng câu lệnh SELECT
trong Command, để cập nhật data dùng INSERT, UPDATE,
DELETE
7
http:// lhu.edu.vn
Ts. Vũ Đức Lung – Ks. Phan Hữu Tiếp
Giới thiệu về ADO.NET
Các thành phần trong ADO.NET
DataSet
DataTable
DataView
DataRow
DataColumn
DataRelation
8
http:// lhu.edu.vn
Ts. Vũ Đức Lung – Ks. Phan Hữu Tiếp
Các thành phần trong ADO.NET
Managed provider component: gồm DataAdapter, DataReader
giữ nhiệm vụ làm việc trực tiếp như tập tin, database,…
Content component: gồm Dataset, DataTable, đại diện cho dữ
liệu thực sự cần làm việc.
DataReader là đối tượng mới, giúp việc truy xuất dữ liệu nhanh
chóng nhưng chỉ được phép đọc và di chuyển tới
Dataset cũng là đối tượng mới, khơng chỉ là dữ liệu, Dataset cịn
có thể coi là một bản sao gọn nhẹ của CSDL trong bộ nhớ với
nhiều bảng và có các mối quan hệ. Dataset hỗ trợ XML thông
qua đối tượng XMLDataDocument.
DataAdapter là đối tượng kết nối giữa DataSet và CSDL. Nó
gồm Connection và Commmand, để cung cấp dữ liệu cho
Dataset, cũng như cập nhật dữ liệu từ DataSet xuống CSDL.
9
http:// lhu.edu.vn
Ts. Vũ Đức Lung – Ks. Phan Hữu Tiếp
Các thành phần trong ADO.NET
10
http:// lhu.edu.vn
Ts. Vũ Đức Lung – Ks. Phan Hữu Tiếp
Các thành phần trong ADO.NET
DataSet:
DataSet dùng để chứa dữ liệu lấy từ CSDL lớn ( SQL, Aceess)
sau đó mọi thơng tin cần thiết sẽ được truy xuất từ DataSet
Nói 01 cách khác DataSet là CSDL thu nhỏ từ CSDL lớn
Trong Dataset sẽ chứa các bảng là thông tin mà chúng ta cần
lấy.Trong DataSet sẽ có nhiều DataTable và các mối quan hệ
giữa chúng đại diện bởi các DataRelation
Dataset giống như là hình ảnh về CSDL trong bộ nhớ .
11
http:// lhu.edu.vn
Ts. Vũ Đức Lung – Ks. Phan Hữu Tiếp
Các thành phần trong ADO.NET
Lợi ích trong việc sử dụng DataSet
Hoàn toàn trong bộ nhớ: Một Table trong Dataset là một Array of
Rows, nên ta có thể dùng thẳng (direct access) một record bằng cách
nói đến cái Row chứa nó, chớ không cần phải dùng MoveNext,
MovePrev,.v.v.
Làm nhẹ công tác của Database server. Tất cả mọi công tác sửa đổi dữ
liệu đều được thực hiện trong Dataset.
Dataset có thể được biểu diễn bằng một XML (eXtensible Marked
Language)
12
http:// lhu.edu.vn
Ts. Vũ Đức Lung – Ks. Phan Hữu Tiếp
Các thành phần trong ADO.NET
DataTable:
DataTable là 01 thành phần trong Dataset
DataTable chứa dữ liệu của 01 bảng trong Dataset và thuộc lớp
DataTable. DataTable bao gồm
• Tập hợp Columns thc lớp DataColumnCollection trong đó mỗi cột
là một đối tượng thuộc lớp DataColumn
• Tập hợp Rows thc lớp DataRowCollection trong đó mỗi cột là một
đối tượng thuộc lớp DataRow
13
http:// lhu.edu.vn
Ts. Vũ Đức Lung – Ks. Phan Hữu Tiếp
Các thành phần trong ADO.NET
DataRelation:
Dataset bao gồm tập hợp các table đại diện bởi các đối tượng
DataTable và quan hệ giữa các table đó đại diện bởi các đối
tượng DataRelation
DataRelation, người dùng có thể:
• Định nghĩa mối quan hệ giữa các bảng
• Duyệt dữ liệu trong các bảng theo mối quan hệ Master – Detail
Một đối tượng kiểu DataRelation bao gồm các thơng tin:
• Tên của Parent Table và Child Table
• Các column trong DataRelation đại diện cho PrimaryKey
Parent và ForeignKey trong Child Table
14
trong
http:// lhu.edu.vn
Ts. Vũ Đức Lung – Ks. Phan Hữu Tiếp
Các thành phần trong ADO.NET
DataRelation:
Với DataRelation, ADO.NET cung cấp cho người lập trình một
cách thức mới để xử lý dữ liệu. Dữ liệu vẫn nằm trong các bảng
thay vì bị gom từ nhiều bảng thành 01 RecordSet nhưng vẫn có
thể truy cập dễ dàng và hiệu quả.
Ví dụ: trong parent table có 10 dịng, mỗi dịng trong Parent table
có 10 dòng con trong Child table
Cách cũ: dùng 01 truy vấn kết hợp hai bảng để lấy 1 lần 100
mẫu tin hay dùng 02 RecordSet, mỗi lần RecordSet Master thay
đổi mẫu tin hiện hành thì mở lại RecordSet Detail
15
http:// lhu.edu.vn
Ts. Vũ Đức Lung – Ks. Phan Hữu Tiếp
Các thành phần trong ADO.NET
DataRelation:
Khuyết điểm: dữ liệu bị lấy thừa vì khơng chắc người dùng sẽ đi
xem hết 100 mẫu tin đã lấy và khó thao tác thêm, sửa, xóa, Với
cách thứ 2, dữ liệu chỉ lấy vừa đủ nhưng chậm hơn vì mỗi lần
thay đổi Master lại phải truy vấn dữ liệu cho Detail
Phương pháp mới: Chỉ cần lấy dữ liệu 01 lần duy nhất
nhưng dữ liệu vẫn nằm trong các bảng, dễ dàng thao tác xử
lý
16
http:// lhu.edu.vn
Ts. Vũ Đức Lung – Ks. Phan Hữu Tiếp
Các thành phần trong ADO.NET
Ràng Buộc Trên Quan Hệ: ADO.NET chỉ cho phép xác định 02
loại ràng buộc
UniqueConstraint: đảm bảo tính duy nhất về giá trị của một cột trong
table
ForeignKeyContraint: chỉ ra cách ứng dụng sẽ thực hiện khi cập nhật
hay xóa dữ liệu trên bảng có quan hệ với bảng khác
Các giá trị của ForeignKeyContraint là:
None: khơng làm gì cả
Cascade: phụ thuộc vào dịng trên parent table sẽ bị cập nhật hay
xóa
SetDefault:giá trị của cột khóa ngoại trên detail table được đặt về giá
trị mặc định khi dịng trên parent table bị xóa
SetNull: giống SetDefault , giá trị được đặt là NULL
17
http:// lhu.edu.vn
Ts. Vũ Đức Lung – Ks. Phan Hữu Tiếp
Các thành phần trong ADO.NET
DataView:
DataView gần giống với khái niệm RecordSet của ADO. Trên
một DataTable có thể tạo nhiều DataView với các điều kiện lọc,
sắp xếp dữ liệu khác nhau. Trên DataView ta có thể xem hay
thay đổi giá trị các mẫu tin
DataView của ADO.NET có nhiệm vụ kết nối với các control của
WinForm và Web Form
18
http:// lhu.edu.vn
Ts. Vũ Đức Lung – Ks. Phan Hữu Tiếp
Điểm nổi bật trong ADO.NET
Tương tác giữa nhiều hệ thống khác nhau (Interoperability)
Hỗ trợ nhiều người dùng (Scanlability)
Mở rộng khả năng làm việc với CSDL (Productivity)
Hiệu quả cao trong xử lý dữ liệu (Performance)
Cơ chế làm việc ở ADO.NET:
Xử dụng dữ liệu ở dạng disconnect data
Client tạo kết nối với server để lấy dữ liệu
Server gửi dữ liệu về cho Client
Client ngắt kết nối với Server
Khi cần cập nhật dữ liệu, kết nối giữa Client và Server được
phục hồi
Thời gian kết nối giữa Client và Server khơng cịn lâu như trước
19
http:// lhu.edu.vn
Ts. Vũ Đức Lung – Ks. Phan Hữu Tiếp
Các đối tượng trong ADO.NET
Khai báo và sử dụng không gian tên (namespace)
<%@ Import Namespace="System.Data.OleDb" %>
Mục đích
Namespace
-System.Data
-System.Data.OleDb
-System.Data.SqlClient
-Các đối tượng và kiểu cơ bản phục
vụ ADO.NET
-Các lớp được thiết kế để làm việc
với bất kỳ nguồn dữ liệu nào
- Thiết kế tối ưu cho CSDL SQL
server
20
http:// lhu.edu.vn
Ts. Vũ Đức Lung – Ks. Phan Hữu Tiếp
Đối tượng Connection
Data Provider:
Data Provider có sẵn trong ADO.NET
• System.Data.OleDb
• System.Data.SqlClient
Ứng với mỗi tên miền có một connection tương ứng
System.Data.OleDb.OleDbConnection
System.Data.SqlClient.SqlConnection
Cả OleDBConnection và SQLConnection đều có các thuộc tính
và phương thức giống nhau như ConnectionString , State hay
Open
- Các Provider mà OLEDB và SQL có thể kết nối dữ liệu:
SQLOLEDB: OLEDB Provider của Microsoft cho SQL Server
MSDAORA: OLEDB Provider của Microsoft cho Oracle
JOLT: OLEDB Provider cho Jet
21
http:// lhu.edu.vn
Ts. Vũ Đức Lung – Ks. Phan Hữu Tiếp
Đối tượng Connection
Connection String:Cung cấp thông tin cần thiết cho kết nối.
Trước khi thực hiện kết nối cần thông báo các thơng tin cần
thiết 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.
Phụ thuộc vào Data Provider
OleDB Provider có thể gồm các thành phần:
22
http:// lhu.edu.vn
Ts. Vũ Đức Lung – Ks. Phan Hữu Tiếp
Đối tượng Connection
Ví dụ 1: Tạo connection đến CSDL Microsoft Access
Ví dụ 2: Tạo connection đến CSDL SQL Server
23
http:// lhu.edu.vn
Ts. Vũ Đức Lung – Ks. Phan Hữu Tiếp
Đối tượng Connection
24
http:// lhu.edu.vn
Ts. Vũ Đức Lung – Ks. Phan Hữu Tiếp
Đối tượng Connection
Ví dụ 3: Tạo connection đến CSDL SQL Server
25
http:// lhu.edu.vn