Tải bản đầy đủ (.docx) (74 trang)

Tìm hiểu về LinQ Entity Framework và áp dụng cho bài toán quản lý tạm trú, tạm vắng

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.14 MB, 74 trang )

Đồ án tốt nghiệp Bộ môn Công nghệ phần mềm

PHIẾU GIAO NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP
1. Thông tin chung
Tên đề tài

Tìm

hiểu

về

LinQ

Entity

Framework và áp dụng cho bài
toán quản lý tạm trú, tạm vắng
Họ và tên sinh viên:

Phạm Văn Tuân

Điện thoại liên lạc:

01665532110

Email:



Lớp:



Công nghệ phần mềm K56

Hệ đào tạo:

Đại học chính quy

Đề tài được thực hiện tại:

Hà Nội

2. Mục tiêu của ĐATN
Tìm hiểu về LinQ Entity Framework và áp dụng cho bài toán quản lý tạm trú,
tạm vắng.
3. Các nhiệm vụ cụ thể của ĐATN
- Tìm hiểu về lập trình cơ sở dữ liệu
- Tìm hiểu về LinQ Entity Framework
- Phân tích và thiết kế hệ thống cho bài toán quản lý tạm trú, tạm vắng
- Sử dụng LinQ Entity Framework lập trình cơ sở dữ liệu cho bài toán quản lý
tạm trú, tạm vắng.
4. Lời cam đoan của sinh viên:
Tôi – Phạm Văn Tuân – cam kết đây là công trình nghiên cứu của bản thân tôi
dưới sự hướng dẫn của Th.S Nguyễn Thị Hữu Phương
Phạm Văn Tuân

1

1
Lớp CNPM K56



Đồ án tốt nghiệp Bộ môn Công nghệ phần mềm

Các kết quả nêu trong đề tài là trung thực, không phải là sao chép toàn văn của
bất kỳ công trình nào khác.
Hà Nội, ngày tháng năm
Tác giả ĐATN
Phạm Văn Tuân
5. Xác nhận của giáo viên hướng dẫn về mức độ hoàn thành của ĐATN và cho
phép bảo vệ:
Hà Nội, ngày tháng năm
Cán bộ hướng dẫn

Th.S Nguyễn Thị Hữu Phương

Phạm Văn Tuân

2

2
Lớp CNPM K56


Đồ án tốt nghiệp Bộ môn Công nghệ phần mềm

TÓM TẮT NỘI DUNG ĐỀ TÀI
Nội dung đồ án tốt nghiệp bao gồm 4 chương:
Phần mở đầu : đặt vấn đề, mục tiêu của đồ án, nội dung của đồ án và phương pháp
thực hiện
Chương 1: Giới thiệu cho người đọc về lập trình cơ sở dữ liệu, các kỹ thuật lập

trình với CSDL, Ado.net, kỹ năng lập trình theo mô hình n lớp và làm việc với tập
tin XML.
Chương 2: Cơ sở lý thuyết về Lin Q và các thành phần của nó.Giới thiệu về Entity
Framework, so sánh giữa Entity Framework với Lin Q to SQL.
Chương 3: Ứng dụng của Lin Q vào việc lập trình cho bài toán quản lý tạm trú,
tạm vắng.

Phạm Văn Tuân

3

3
Lớp CNPM K56


Đồ án tốt nghiệp Bộ môn Công nghệ phần mềm

Chương 4: Cài đặt và thử nghiệm.
ƠN

LỜI CẢM

Em hoàn thành đồ án tốt nghiệp này tại Đại học Mỏ-Địa chất Hà Nội.
Với tất cả lòng chân thành, em xin gửi lời cám ơn sâu sắc đến Th.S
Nguyễn Thị Hữu Phương - người đã hướng dẫn chỉ bảo nhiệt tình và tạo mọi điều
kiện thuận lợi để em học tập, nghiên cứu hoàn thành đồ án tốt nghiệp này.
Với tất cả niềm trận trọng, em xin gửi lời cảm ơn đến các thầy cô giáo
trong Bộ môn Công nghệ phần mềm cũng như các thầy cô trong Khoa Công nghệ
thông tin đã dạy dỗ, giáo dục em trưởng thành về mọi mặt trong 5 năm qua. Cám
ơn các bạn bè trong và ngoài lớp về sự chia sẻ, những tình cảm trân thành tốt đẹp và

sự đồng hành của các bạn trong thời gian qua.
Đặc biệt em xin bày tỏ tấm lòng biết ơn chân thánh nhất với bố mẹ và gia
đình đã luôn nuôi dưỡng và tạo điều kiện để em được học tập và trưởng thành.
Em xin chân thành cảm ơn!!!

Phạm Văn Tuân

4

4
Lớp CNPM K56


Đồ án tốt nghiệp Bộ môn Công nghệ phần mềm

MỤC LỤC

Phạm Văn Tuân

5

5
Lớp CNPM K56


Đồ án tốt nghiệp Bộ môn Công nghệ phần mềm

DANH MỤC CÁC HÌNH VẼ
Hình 1-1 Các phần tử thông dụng trong ODBC……………………………………8
Hình 1-2 Chuối kết nối đến cơ sở dữ liệu………………………………………….8

Hình 1-3 Chuỗi kết nối đến cơ sở dữ liệu………………………………………….8
Hình 1-4 Mở cơ sở dữ liệu…………………………………………………………9
Hình 1-5 Mở cơ sở dữ liệu…………………………………………………………9

Phạm Văn Tuân

6

6
Lớp CNPM K56


Đồ án tốt nghiệp Bộ môn Công nghệ phần mềm

DANH MỤC CÁC BẢNG BIỂU

Phạm Văn Tuân

7

7
Lớp CNPM K56


MỞ ĐẦU
1. Lý do lựa chọn đề tài
Hiện nay với sự phát triển mạnh mẽ của Internet cùng với sự phát triển mạnh mẽ
của công nghệ. Nhiều ngôn ngữ mới được ra đời và nhiều ứng dụng đã được phát
triển trên nền tảng Entity Framework.
Cơ sở dữ liệu được coi là linh hồn của hệ thống máy tính, cơ sở dữ liệu tốt sẽ

giúp hệ thống hoạt động một cách hiệu quả hơn. Chính vì thế, kỹ thuật lập trình với
cơ sở dữ liệu luôn gắn liền với bất cứ ngôn ngữ nào vừa ra đời. Xử lý thông tin hay
dữ liệu là nhiệm vụ quan trọng nhất của bất kỳ phần mềm nào và một trong những
trở ngại chính mà các nhà phát triển hiện nay phải đối mặt là khác biệt giữa ngôn
ngữ lập trình hướng đối tượng và ngôn ngữ truy vấn dữ liệu, vấn đề càng phức tạp
hơn với sự xuất hiện của XML (eXtensible Markup Language - ngôn ngữ đánh dấu
mở rộng). Hiện tại, cách phổ biến nhất để ứng dụng lấy dữ liệu từ các hệ cơ sở dữ
liệu (CSDL) là sử dụng SQL (Structure Query Language - ngôn ngữ truy vấn cấu
trúc). SQL có cú pháp rất khác với những ngôn ngữ lập trình phổ dụng như C# và
VB.NET, do vậy lập trình viên phải nhọc công "hàn gắn" hai thực thể khác biệt này
với nhau trong mỗi dự án phần mềm. Một vấn đề khác với SQL là nó chỉ dùng để
truy vấn dữ liệu trong các cơ sở dữ liệu dạng quan hệ. Nếu muốn truy cập dữ liệu
XML hay dạng khác (như trang HTML, email...), nhà phát triển lại phải sử dụng cú
pháp truy vấn khác (XPath/XQuery). Để giảm gánh nặng thao tác trên nhiều ngôn
ngữ khác nhau và cải thiện năng suất lập trình, Microsoft đã phát triển giải pháp tích
hợp dữ liệu cho .NET Framework có tên gọi là LINQ (Language Integrated Query),
đây là thư viện mở rộng cho các ngôn ngữ lập trình C# và Visual Basic.NET (có thể
mở rộng cho các ngôn ngữ khác) cung cấp khả năng truy vấn trực tiếp dữ liệu đối
tượng, CSDL và XML. Chính vì thế em đã lựa chọn đề tài “Tìm hiểu về LinQ
Entity Framwork và áp dụng cho bài toán quản lý tạm trú, tạm vắng” làm đề tài tốt
nghiệp của mình.
2. Tính cấp thiết, ý nghĩa khoa học và thực tiễn của đề tài
A, Tính cấp thiết của đề tài


Ngày nay, ngành công nghệ thông tin đang phát triển vô cùng mạnh mẽ. Nó đã
chứng tỏ được sức mạnh của mình trong mọi lĩnh vực của cuộc sống. Tại Việt Nam,
công nghệ thông tin đã và đang khẳng định vai trò, vị trí lớn của mình trong mọi
lĩnh vực kinh tế, xã hội. Rất nhiều cơ quan công sở, xí nghiệp, trường học, bệnh
viện ... đã đưa tin học vào ứng dụng. Trong đó việc quản lý nhân khẩu là một ứng

dụng cần thiết và mang lại nhiều lợi ích. Nó giúp cho các cơ quan công sở tiết kiệm
được thời gian, tiền bạc, nhân công và có độ chính xác rất cao.
Tại các ủy ban phường - quận vấn đề quản lý tạm trú tạm vắng là một trong
những vấn đề cần thiết và cấp bách. Qua đó giúp quản lý nhân khẩu trong địa bàn
quận một cách chính xác nhất, qua đó cũng nắm ró được nhân khẩu, tình trạng tạm
trú, tạm vắng trong địa bàn xã
Xuất phát từ nhận thức trên, với mong muốn áp dụng công nghệ thông tin vào
quản lý, dựa trên những hoạt động thực tiễn em đã áp dụng công nghệ thông tin
vào bài toán quản lý tạm trú, tạm vắng.
B, Ý nghĩa khoa học và thực tiễn của đề tài
Với việc Entity Framework áp dụng vào bài toán quản lý tạm trú tạm vắng, cơ
sở dữ liệu sẽ được tích hợp ngay trên C# mà không cần dùng đến SQL sever
nữa.Khi đó ta có thể dùng cơ sở dữ liệu được mọi lúc mọi nơi.
3. Nhiệm vụ của đề tài
• Tìm hiểu về lập trình cơ sở dữ liệu
• Tìm hiểu về LinQ Entity Framework
• Phân tích và thiết kế hệ thống cho bài toán quản lý tạm trú, tạm vắng
• Sử dụng LinQ Entity Framework lập trình cơ sở dữ liệu cho bài toán quản lý
tạm trú, tạm vắng trong môi trường C#.
4. Nội dung thực hiện của đề tài





Tìm hiểu về lập trình cơ sở dữ liệu
Tìm hiểu về LinQ Entity Framework
Phân tích và thiết kế hệ thống cho bài toán quản lý tạm trú, tạm vắng
Sử dụng LinQ Entity Framework lập trình cơ sở dữ liệu cho bài toán quản lý
tạm trú, tạm vắng.



5. Phương pháp nghiên cứu
- Phương pháp nghiên cứu lý thuyết: Nghiên cứu, tổng hợp lý thuyết về lập trình
cơ sở dữ liệu và LinQ Entity Framework.
- Phương pháp lập trình: dựa trên lý thuyết tổng hợp được về lập trình cơ sở dữ
liệu và LinQ, thực hiện thao tác với cơ sở dữ liệu của bài toán tạm trú, tạm vắng
với SQL Server và lập trình trong môi trường của C# sử dụng LinQ để kết nối.


CHƯƠNG 1 TỔNG QUAN VỀ CÁC KỸ THUẬT LẬP TRÌNH
CƠ SỞ DỮ LIỆU
1.1 Khái niệm lập trình cơ sở dữ liệu
Một cơ sở dữ liệu là một kho lưu trữ thông tin của một cơ sở dữ liệu để đảm bảo
tính toàn vẹn của dữ liệu và các dữ liệu truy cập nhanh chóng quản lý. Một Hệ
thống rất phổ biến của một cơ sở dữ liệu là một hệ thống quản lý cơ sở dữ liệu quan
hệ (RDBM). Để sử dụng, các thông tin trong một cơ sở dữ liệu có thể được truy cập
bằng cách sử dụng Structured Query Language (SQL) là một ngôn ngữ cơ sở dữ
liệu phổ biến với hầu hết các cơ sở dữ liệu. Tuy nhiên, SQL chỉ cung cấp các lệnh
để truy cập và thao tác dữ liệu trong cơ sở dữ liệu.
Đối với bất kỳ ứng dụng phức tạp, có thường là một nhu cầu cho các điều kiện,
phân nhánh, và vòng lặp. Không ai trong số này là một phần của ngôn ngữ SQL. Để
lấp đầy khoảng trống này, nhiều ngôn ngữ lập trình phổ biến cho phép tích hợp với
SQL thông qua một thư viện thông thường như mở Cơ sở dữ liệu kết nối (ODBC),
Object Linking và Embedding (OLE), và đôi khi với các giao diện lập trình ứng
dụng hoặc thư viện cung cấp với các cơ sở dữ liệu.
Ngoài ra, hầu hết các cơ sở dữ liệu bây giờ có một ngôn ngữ đơn giản của riêng
mình mà cho phép điều khiển đơn giản cho các ứng dụng mà không cần toàn bộ sức
mạnh của ngôn ngữ chuẩn như C ++ và Pascal. Những ngôn ngữ đơn giản được sử
dụng để viết các thủ tục lưu trữ và được độc quyền cho mỗi cơ sở dữ liệu.

1.2 Nhu cầu lưu trữ dữ liệu của chương trình
Các chức năng xử lý chính của một chương trình:
• Giao diện : Xử lý các chức năng giao tiếp với người dùng
• Xử lý: Thưc hiện các xử lý quy định kiểm tra
• Dữ liệu: Quản lý việc lưu trữ . đọc ghi qua lại giữa CSDL và chương trình
làm việc
Các dạng file dữ liệu
• File văn bản: Cách này không an toàn vì nội dung có thể đọc và sửa lại được
từ các chương trình soạn thảo khác
• File nhị phân: Yêu cầu trước khi thực hiện lưu trữ phải mã hóa dữ liệu


Chú ý: việc lưu trữ này đều thực hiện thủ công trên các cấu trúc dữ liệu và
mảng dữ liệu nên không được tối ưu hóa
1.3 Các kỹ thuật lập trình với cơ sở dữ liệu
-

Các kỹ thuật lập trình cấp thấp:
+ Windows API: do HĐH cung cấp có tốc độ nhanh nhưng rất phức tạp với

nhiều kiểu dữ liệu, nhiều tham số, tên hàm khó nhớ
API:
• Là thành phần mạnh nhất trong các tiện ích của Visual Basic với hàng trăm
hàm sẵn có và thực hiện nhiều chức năng
• Là viết tắt của Application Programming Interface (giao diện lập trình ứng
dụng)
• Là cốt lõi của Windows vì vậy thường gọi là Windows API hay Win32 API
WinAPI quản lý mọi vấn đề làm ra Windows như việc đóng mở cửa sổ đến việc
truy xuất đĩa …
• Được chứa trong các file *DLL hoặc trong các thư mục hệ thống của

Windows
+ ODBC: do Microsoft xây dựng





Server thông qua ODBC Driver Manager
Là 1 công nghệ của windows cho phéo client kết nối với CSDL từ xa
ODBC hỗ trợ người lập trình kết nối đến được nhiều loại CSDL khác nhau
Mặc dù viết chương trình với ODBC rất khó nhưng bù lại tốc độ xử lý lại
rất nhanh

Để kết nối đến CSDL
+ Thiết lập kết nối dùng đối tượng rdoConnection
Ta dùng đối tượng rdoConnection để thiết lập một kết nối đến server cơ sở
dữ liệu từ xa trong RDO. Sau khi ta có một đối tượng rdoConnection hợp lệ, ứng
dụng có thể bắt đầu tương tác với cơ sở dữ liệu.
Đối tượng rdoConnection tương tự đối với Database trong lập trình với DAO.
Nó cũng tương tự theo một nghĩa nào đó với đối tượng Connetion của ADO. Dưới


đây là danh sách các phần tử thông dụng nhất trong chuỗi kết nối ODBC khi kết nối
với SQL Server.

Hình 1-1 Các phần tử thông dụng trong ODBC
Tuy nhiên, đây không phải toàn bộ các tham biến. Và không nhất thiết phải
dùng tất cả các tham biến này trong mọi trường hợp. Cơ sở dữ liệu có thể sử dụng
nhiều hoặc ít hơn. Ví dụ, để nối đến cơ sở dữ liệu SQL Server Novelty, ta dùng
chuỗi kết nối:


Hình 1-2 Chuối kết nối đến cơ sở dữ liệu
Hoặc cũng có thể kết nối đến CSDL mà không cần dùng DNS. Ví dụ:

Hình 1-3 Chuỗi kết nối đến cơ sở dữ liệu
+ Mở cơ sở dữ liệu
Sau khi đã có thông tin cần để thiết lập kết nối đến cơ sở dữ liệu, ta có hai
tuỳ chọn để thiết lập kết nối:


o Dùng phương thức OpenConnection của đối tượng rdoEnvironment.
o Dùng phương thức EstablishConnection của đối tượng. Cả hai phương
thức đều như nhau, chúng chỉ hoạt động hơi khác nhau một chút.
o Dùng phương thức OpenConnection

Hình 1-4 Mở cơ sở dữ liệu
o Dùng phương thức EstablishConnection

Hình 1-5 Mở cơ sở dữ liệu
-

Các kỹ thuật lập trình cấp cao:
+ DAO

• Ra đời sau ODBC
• Chỉ cho kết nối với hệ quản trị cơ sở dữ liệu ACCESS nhằm tăng tốc độ xử lý
và lập trình đơn giản
• DAO cung cấp cho người lập trình các đối tượng để làm việc với cơ sở dữ liệu.
+ Muốn kết nối đến cơ sở dữ liệu thì ta có thể dùng keyword set
-


Đầu tiên ta mở một Database Object dựa vào tên đầy đủ của Access database

Hình 1-6 Chuỗi kết nối cơ sở dữ liệu
-

Tiếp theo ta chỉ định một DAO Recordset lấy tự Method OpenRecordset của
database myDB


Hình 1-7 Lấy cơ sở dữ liệu
-

Tiếp theo ta load form = hàm sau

Hình 1-8 Hàm loadform
-

Cuối cùng ta load chúng lên textbox

Hình 1-9 Hàm load textbox
+ ADO:
• Ra đời sau DAO được xây dựng dựa trên OLEDB
• Các đối tượng của ADO là những đối tượng độc lập. có thể khai báo và sử
dụng riêng rẽ


Cung cấp phương pháp lập trình CSDL đơn giản, che bới đi những thủ tục
phức tạp nhưng chương trình sẽ chạy chậm hơn
1.4 ADO.NET

Trong thực tế, có rất nhiều ứng dụng cần tương tác với cơ sở dữ liệu. .NET
Framework cung cấp một tập các đối tượng cho phép truy cập vào cơ sở dữ liệu, tập
các đối tượng này được gọi chung là ADO.NET.
ADO.NET tương tự với ADO, điểm khác biệt chính ở chỗ ADO.NET là một
kiến trúc dữ liệu rời rạc, không kết nối (Disconnected Data Architecture). Với kiến
trúc này, dữ liệu được nhận về từ cơ sở dữ liệu và được lưu trên vùng nhớ cache của
máy người dùng. Người dùng có thể thao tác trên dữ liệu họ nhận về và chỉ kết nối
đến cơ sở dữ liệu khi họ cần thay đổi các dòng dữ liệu hay yêu cầu dữ liệu mới.
Việc kết nối không liên tục đến cơ sở dữ liệu đã đem lại nhiều thuận lợi, trong
đó điểm lợi nhất là việc giảm đi một lưu lượng lớn truy cập vào cơ sở dữ liệu cùng
một lúc, tiết kiệm đáng kể tài nguyên bộ nhớ. Giảm thiểu đáng kể vấn đề hàng trăm
ngàn kết nối cùng truy cập vào cơ sở dữ liệu cùng một lúc.
ADO.NET kết nối vào cơ sở dữ liệu để lấy dữ liệu và kết nối trở lại để cập
nhật dữ liệu khi người dùng thay đổi chúng. Hầu hết mọi ứng dụng đều sử dụng
nhiều thời gian cho việc đọc và hiển thị dữ liệu, vì thế ADO.NET đã cung cấp một
tập hợp con các đối tượng dữ liệu không kết nối cho các ứng dụng để người dùng có
thể đọc và hiển thị chúng mà không cần kết nối vào cơ sở dữ liệu.
Các đối tượng ngắt kết nối này làm việc tương tự đối với các ứng dụng Web.
Như bạn có thể biết rằng, có rất nhiều loại database hiện nay như Microsoft
SQL Server, Microsoft Access, Oracle, Borland Interbase, và IBM DB2, …
1.4.1 Mô hình kiến trúc của ADO.NET
ADO.NET được chia ra làm hai phần chính rõ rệt, được thể hiện qua hình


Hình 1-10 Kiến trúc ADO.NET
DataSet là thành phần chính cho đặc trưng kết nối không liên tục của kiến trúc
ADO.NET. DataSet được thiết kế để có thể thích ứng với bất kỳ nguồn dữ liệu nào.
DataSet chứa một hay nhiều đối tượng DataTable mà nó được tạo từ tập các dòng
và cột dữ liệu, cùng với khoá chính, khóa ngoại, ràng buộc và các thông tin liên
quan đến đối tượng DataTable này. Bản thân DataSet được dạng như một tập tin

XML.
Thành phần chính thứ hai của ADO.NET chính là NET Provider Data, nó chứa
các đối tượng phục vụ cho việc thao tác trên cơ sở dữ liệu được hiệu quả và nhanh
chóng,nó bao gồm 1 tập các đối tượng Connection, Command, DataReader,
DataAdapter. Đối tượng Connection cung cấp một kết nối đến cơ sở dữ liệu,
Command cung cấp một thao tác đến cơ sở dữ liệu, DataReader cho phép chỉ đọc
dữ liệu và DataAdapter là cấu nối trung gian giữa DataSet và nguồn dữ liệu.
Có thể nói mô hình đối tượng của ADO.NET khá uyển chuyển, các đối tượng
của nó được tạo ra dựa trên quan điểm đơn giản và dễ dùng. Đối tượng quan trọng


nhất trong mô hình ADO.NET chính là Dataset. Dataset có thể được xem như là thể
hiện của cả một cơ sở dữ liệu con, lưu trữ trên vùng nhớ cache của máy người dùng
mà không kết nối đến cơ sở dữ liệu.

Hình 1-11 Mô hình đối tượng của Dataset
DataSet bao gồm một tập các đối tượng DataRelation cũng như tập các đối
tượng DataTable. Các đối tượng này đóng vai trò như các thuộc tính của DataSet.
1.4.2 Các đối tượng của ADO.NET
A. SqlConnection
Để tương tác với database, người dùng phải có một kết nối tới nó. Kết nối giúp
xác định database server, database name, user name, password, và các tham số cần
thiết để kết nối tới database. Một đối tượng connection được dùng bởi đối tượng
command vì thế chúng sẽ biết database nào để thực thi lệnh.
B. SqlCommand
Quá trình tương tác với database cần phải biết hành động nào muốn xảy ra.
Điều này được thực hiện bởi đối tượng command. Đối tượng command được dùng
để gửi một câu lệnh SQL tới database. Một đối tượng command dùng một đối tượng
connection để xác định database nào sẽ được truy xuất. Có thể dùng một đối tượng
command riêng lẻ để thực thi lệnh trực tiếp, hoặc để gắn một tham chiếu của đối



tượng command cho một SqlDataAdapter – đối tượng giữ các command sẽ làm việc
trên một nhóm dữ liệu như sẽ đề cập tới trong phần dưới.
C. SqlDataReader
Nhiều thao tác dữ liệu đòi hỏi người dùng chỉ lấy một luồng dữ liệu để đọc.
Đối tượng data reader cho phép lấy được kết quả của một câu lệnh SELECT từ một
đối tượng command. Để tăng hiệu suất, dữ liệu trả về từ một data reader là một
luồng dữ liệu fast forward-only. Có nghĩa là chỉ có thể lấy dữ liệu từ luồng theo một
thứ tự nhất định. Mặc dù điều này có lợi về mặt tốc độ, nhưng nếu cần phải thao tác
dữ liệu, thì một DataSet sẽ là một đối tượng tốt hơn để làm việc.
D. DataSet
Đối tượng DataSet là một thể hiện của dữ liệu trong bộ nhớ. Chúng chứa
nhiều đối tượng DataTable, bên trong DataTable lại có nhiều hàng và cột, giống như
các database table thông thường. Thậm chí có thể định nghĩa dữ liệu giữa các table
để tạo các quan hệ parent-child. DataSet được thiết kế đặc biệt để giúp quản lý dữ
liệu trong bộ nhớ và để hỗ trợ các thao tác không cần kết nối (disconnected) trên dữ
liệu. DataSet là một đối tượng được dùng bởi tất cả Data Provider, đó là lý do tại
sao nó không có một Data Provider prefix trong tên gọi.
E. SqlDataAdapter
Đôi lúc dữ liệu làm việc là read-only và ít khi cần thay đổi dữ liệu nguồn. Vài
trường hợp cần lưu trữ tạm dữ liệu trong bộ nhớ để hạn chế truy xuất đến database.
Data adapter làm điều này dễ dàng bằng cách giúp quản lý dữ liệu trong chế độ ngắt
kết nối. Data adapter sẽ đổ vào DataSet khi đọc dữ liệu và thực hiện thay đổi dữ liệu
một lượt vào database.
Data adapter chứa một tham chiếu đến đối tượng connection và mở/đóng kết
nối tự động khi đọc và ghi dữ liệu vào database. Hơn nữa, data adapter chứa đối
tượng command cho những thao tác SELECT, INSERT, UPDATE và DELETE trên
dữ liệu. Người dùng sẽ có một data adapter được định nghĩa cho mỗi table trong
một DataSet và nó sẽ quản lý các giao tiếp với cơ sở dữ liệu.



1.5 Kỹ năng lập trình theo mô hình N lớp
Trong phát triển ứng dụng, để dễ quản lý các thành phần của hệ thống, cũng
như không bị ảnh hưởng bởi các thay đổi, người ta hay nhóm các thành phần có
cùng chức năng lại với nhau và phân chia trách nhiệm cho từng nhóm để công việc
không bị chồng chéo và ảnh hưởng lẫn nhau.
Ví dụ trong một công ty có từng phòng ban, mỗi phòng ban sẽ chịu trách
nhiệm một công việc cụ thể nào đó, phòng này không được can thiệp vào công việc
nội bộ của phòng kia như Phòng tài chính thì chỉ phát lương. Trong phát triển phần
mềm, người ta cũng áp dụng cách phân chia chức năng này. Kiến trúc đa tầng/nhiều
lớp, mỗi lớp sẽ thực hiện một chức năng nào đó, trong đó mô hình 3 lớp là phổ biến
nhất. Ba lớp bao gồm Presentation, Business Logic, và Data Access. Các lớp này sẽ
giao tiếp với nhau thông qua các dịch vụ (services) mà mỗi lớp cung cấp để tạo nên
ứng dụng, lớp này cũng không cần biết bên trong lớp kia làm gì mà chỉ cần biết lớp
kia cung cấp dịch vụ gì cho mình và sử dụng nó mà thôi.
Mô hình 3 lớp mà Microsoft đề nghị dùng cho các hệ thống phát triển trên nền
.NET như sau:

a. Lớp

giao diện

Lớp này

làm nhiệm vụ giao

với

người dùng cuối để


thu thập dữ

liệu và hiển thị kết

quả/dữ

liệu

thông qua các thành

phần

trong

giao diện người sử

dụng.

Lớp

này sẽ sử dụng các

dịch vụ do

lớp Business Logic

cung

Trong .NET có thể


tiếp

cấp.

dùng

Windows

Forms, ASP.

NET hay Mobile
Hình 1-12 Kiến trúc mô hình 3 lớp


Forms để

hiện

thực

lớp

này.

Trong lớp này có 2 thành phần chính là User Interface Components và User
InterfaceProcessComponents.
UI Components là những phần tử chịu trách nhiệm thu thập và hiển thị thông
tin cho người dùng cuối. Trong ASP.NET thì những thành phần này có thể là các
TextBox, các Button, DataGrid ….

UI Process Components: là thành phần chịu trách nhiệm quản lý các qui trình
chuyển đổi giữa các UI Components. Ví dụ chịu trách nhiệm quản lý các màn hình
nhập dữ liệu trong một loạt các thao tác định trước như các bước trong một Wizard
…. Lớp này không nên sử dụng trực tiếp các dịch vụ của lớp Data Access mà nên
sử dụng thông qua các dịch vụ của lớp Business Logic vì khi bạn sử dụng trực tiếp
như vậy, bạn có thể bỏ qua các ràng buộc, các logic nghiệp vụ mà ứng dụng cần
phải có.
b. Business Logic Layer
Lớp này thực hiện các nghiệp vụ chính của hệ thống, sử dụng các dịch vụ do
lớp Data Access cung cấp, và cung cấp các dịch vụ cho lớp Presentation. Lớp này
cũng có thể sử dụng các dịch vụ của các nhà cung cấp thứ 3 (3rd parties) để thực
hiện công việc của mình (ví dụ như sử dụng dịch vụ của các cổng thanh tóan trực
tuyến như Verisign, Paypal.
Trong lớp này có các thành phần chính là Business Components, Business
Entities và Service Interface.
Service Interface là giao diện lập trình mà lớp này cung cấp cho lớp
Presentation sử dụng. Lớp Presentation chỉ cần biết các dịch vụ thông qua giao
diện này mà không cần phải quan tâm đến bên trong lớp này được hiện thực như thế
nào.
Business Entities là những thực thể mô tả những đối tượng thông tin mà hệ
thống xử lý. Trong ứng dụng chúng ta các đối tượng này là các chuyên mục
(Category) và bản tin (News). Các business entities này cũng được dùng để trao đổi
thông tin giữa lớp Presentation và lớp Data Access.


Business Components là những thành phần chính thực hiện các dịch vụ mà
Service Interface cung cấp, chịu trách nhiệm kiểm tra các ràng buộc
logic(constraints), các qui tắc nghiệp vụ(business rules), sử dụng các dịch vụ bên
ngoài khác để thực hiện các yêu cầu của ứng dụng.
c. Data Access Layer

Lớp này thực hiện các nghiệp vụ liên quan đến lưu trữ và truy xuất dữ liệu
của ứng dụng. Thường lớp này sẽ sử dụng các dịch vụ của các hệ quản trị cơ sở dữ
liệu như SQL Server, Oracle,… để thực hiện nhiệm vụ của mình. Trong lớp này có
các thành phần chính là Data Access Logic, Data Sources, Servive Agents).
Data Access Logic components (DALC) là thành phần chính chịu trách
nhiệm lưu trữ vào và truy xuất dữ liệu từ các nguồn dữ liệu – Data Sources như
RDMBS, XML, File systems …. Trong .NET các DALC này thường được hiện
thực bằng cách sử dụng thư viện ADO.NET để giao tiếp với các hệ cơ sở dữ liệu
hoặc sử dụng các O/R Mapping Frameworks (Object Raletional) để thực hiện việc
ánh xạ các đối tượng trong bộ nhớ thành dữ liệu lưu trữ trong CSDL.
Service Agents là những thành phần trợ giúp việc truy xuất các dịch vụ bên
ngòai một cách dễ dàng và đơn giản như truy xuất các dịch vụ nội tại.
1.6 Làm việc với tập tin XML
XML (viết tắt từ tiếng Anh eXtensible Markup Language, "Ngôn ngữ Đánh
dấu Mở rộng") là ngôn ngữ đánh dấu với mục đích chung do W3C đề nghị, để tạo
ra các ngôn ngữ đánh dấu khác. Đây là một tập con đơn giản của SGML, có khả
năng mô tả nhiều loại dữ liệu khác nhau. Mục đích chính của XML là đơn giản hóa
việc chia sẻ dữ liệu giữa các hệ thống khác nhau, đặc biệt là các hệ thống được kết
nối với Internet.
Từ những buổi đầu sử dụng ngôn ngữ đánh dấu cho đến ngày nay, một trong
những lợi thế của việc đánh dấu nội dung bằng thẻ là nếu hệ thống máy tính bị hỏng
thì dữ liệu in ra vẫn có thể được hiểu thông qua các thẻ của chính nó.
Ngôn ngữ đánh dấu được phát triển từ rất sớm, các công ty tư nhân và chính
phủ đã thiết lập các chuẩn cho ngôn ngữ đánh dấu như: Ngôn ngữ đánh dấu chuẩn


tổng quát (Standard Generalized Markup Language - SGML), Ngôn ngữ đánh dấu
siêu văn bản (Hypertext Markup Language - HTML), và cuối cùng là XML. SGML
có vẻ hơi phức tạp trong khi đó HTML không đủ sức mạnh để nhận dạng tất cả các
thông tin. XML được tạo ra như là một ngôn ngữ đánh dấu dễ sử dụng và dễ mở

rộng.
1.6.1 Cấu trúc của một file XML
Gồm 2 phần :
• Document prolog: Chứa đựng các thông tin tổng quan về tài liệu –
metadata và bao dồm 02 phần
 Khai báo : XML Declaration
 Phần bổ trợ cung cấp thông tin về tài liệu XML (miscellaneous)
bao gồm Document Type Declaration, comments, processing
instructions, whitespace, ….
 Toàn bộ phần Document prolog có hay không có cũng được
nhưng khuyến cáo của W3C nên luôn có dòng XML
Declaration


Root Element: đây là tag lớn duy nhất của tài liệu chứa tất cả tag con bên
trong và nội dung của tài liệu XML.

Hình 0-1 Cấu trúc của một file XML


1.6.2 Định nghĩa các thành phần trong cấu trúc xml
a Tài liệu XML nên bắt đầu với XML declaration ở dòng đầu tiên
• Cú pháp khai báo
<?xml version=”” encoding=”” standalone=”” ?>
• Thuộc tính version trong cú pháp xml trên thể hiện các thành phần XML
được viết phải tuân theo qui định trong version. Thuộc tính này bắt buộc
phải sử dụng khi có khai báo xml ở trên. Hiện tại có 2 version của XML,
đầu tiên (XML 1.0) được định nghĩa đầu tiên vào năm 1998, kể từ đó nó
trải qua nhiều lần sửa đổi nhỏ nhưng vẫn giữ nguyên version tên là 1.0 và
đến 2008 thì đã là phiên bản thứ 5 của XML 1.0, nó được dùng rộng rãi và

luôn được khuyên là nên sử dụng. Phiên bản thứ 2 là XML 1.1 được công
bố ngày 4/2/2004, bản thứ 2 của XML 1.1 được công bố ngày 16/8/2006,
những thay đổi chính của bản 1.1 là cho phép có khả năng sử dụng các ký
tự kết thúc dòng dựa trên nền tảng EBCDIC và Unicode 3.2 nhưng nó
không được dùng rộng rãi, và chỉ dùng khi ta muốn sử dụng các tính năng
khác biệt đó.
• Thuộc tính encoding thể hiện nội dung chuyển đổi ký tự trong tài liệu xml
để parser chuyển đổi nội dung văn bản đúng định dạng chữ để chuyển đến
client. Thuộc tính này là có hay không có cũng được. Khi không có mặc
định là UTF-8
• Thuộc tính standalone thông báo cho parser biết là tài liệu có tham chiếu
hay không tham chiếu đến các entity được định nghĩa ở bên ngoài tài liệu
hay mặc định được khai báo bởi parser
1. Giá trị yes : tài liệu không tham chiếu đến các external entity
2. Giá trị no: giá trị mặc định nếu thuộc tính encoding không được
khai báo để thể hiện tài liệu sẽ tham chiếu đến external entity
d. Processing Instructions
• Các lệnh thực thi được yêu cầu đến bộ parser
• Cú pháp: bắt đầu với <? Và kết thúc với ?> nhưng không phải là ?>


e. Comments


Cho phép ghi chú, giảng giải nội dung thực hiện và sẽ được parser bỏ
qua khi parsing.




Cú pháp: <!– nội dung chú thích –>.



Không được phép có comment lồng trong comment.



Được xuất hiện bất kỳ trong đâu ngoại trừ trước XML declaration,
không được nằm trong phần tên tag.



Không được phép có ký tự “–” ở giữa comment.

f. Marked-up tag


Được dùng trong phần thân của tài liệu.



Bao gồm tag bắt đầu, tag kết thúc, tag cho thân rỗng, tham chiếu đến
các entity, tham chiếu đến các ký tự, comments, …



Là tất cả các chữ và ký tự không nằm trong các tag markup. Hay là ký
tự bất kỳ trong văn bản nằm trong thân tag hay bất kỳ đâu ngoài tag.




Có thể kết hợp với các whitespace.



Được parsing bởi parser (PCDATA) và có thể không được parse bởi
parser và để nguyên giá trị để gửi tới ứng dụng (CDATA).



Cú pháp để chữ không được parse <![CDATA[…]]>

 Lưu ý: CDATA không thể lồng thêm CDATA và cú pháp của nó phải
chính xác giữa các dấu hiệu, nghĩa là không được có thêm bất kỳ khoảng
trắng nào cả.


×