Tải bản đầy đủ (.pdf) (65 trang)

luận văn công nghệ thông tin xây dựng chương trình ứng dụng quản lý hoạt động của fafilm tphcm

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 (805.11 KB, 65 trang )

LUẬN VĂN TỐT NGHIỆP GVHD : NGUYỄN ANH TUẤN
SVTH : NGUYỄN THỊ NGỌC
LOAN

1

PHẦN I
GIỚI THIỆU NGÔN NGỮ


CHƯƠNG I
GIỚI THIỆU CHUNG VỀ VISUAL BASIC.NET

I.GIỚI THIỆU CÔNG NGHỆ .NET
:

1. .Net là gì?
.Net không chỉ là một cái tên gọi mà nó còn đại diện cho toàn bộ các
công nghệ và các khái niệm cấu thành một nền tảng để người lập trình xây
dựng các ứng dụng trên đó. Visual Basic .Net có một số phiên bản thực sự là
7.0 nhưng số này ít được sử dụng.
Có thể hiểu .Net là một lớp tồn tại bên dưới các ứng dụng và cung cấp
một tập các chức năng và các dòch vụ cơ bản. Lớp này chứa một tập các ứng
dụng và các hệ điều hành gọi là các .Net server, một tập các đối tượng gọi là
.Net Framework và một tập các dòch vụ hỗ trợ cho tất cả các ngôn ngữ .Net gọi
là Commom Language Runtime (CLR). Các phần này được tách biệt như trong
hình vẽ sau:













Ghi chú: .Net không chỉ có một thứ mà nó là một tập hợp các phần mềm và các
khái niệm kết hợp với nhau để cho phép tạo các giải pháp thương mại.
2. .Net server
:
Mục đích lớn của .Net là thuận tiện trong xây dựng các hệ thống phân
tán. Phần lớn các hệ thống kiểu này thực hiện công việc của chúng ở phần hậu
User Application


.NET Framework


.Net Servers
Windows,BigTalk,Exchange,SQL,App Center…
.Net Devices


Hardware Components
LUẬN VĂN TỐT NGHIỆP GVHD : NGUYỄN ANH TUẤN
SVTH : NGUYỄN THỊ NGỌC
LOAN


2

(back end), ở cấp độ server. Microsoft cung cấp một tập hợp các sản phẩm
phần mềm mà chúng được biết như là .Net Enterprise Servers. Chúng được
thiết kế để hỗ trợ các tính năng xử lý phần hậu (back end) cần thiết của một hệ
thống phân tán. Các sản phẩm này bao gồm:
 Hệ điều hành server, Microsoft Windows(Server,Advanced
Server, và Datacerter Servser).
 Các phần mềm như là Microsoft App Center và Microsoft Cluster
Server.
 Một hệ thống lưu trữ thư điện tử, thông tin tự do,…,Microsoft
Exchange Server.
 Một động cơ chuyển đổi dạng dữ liệu dựa trên XML gọi là
Microsoft BizTalk Server.
 ….

3. .Net Framework
:
Khi chuyển qua Visual Basic .Net, nhiều thứ đã được thay đổi một cách
triệt để; một trong chúng là sự phát triển của một nền tảng mới cho tất cả các
công cụ phát triển của .Net. Nền tảng cơ sở này gọi là .Net Framework, cung
cấp hai thứ chính: môi trường thực thi cơ sở (base runtime environment) và một
tập các lớp nền tảng (foundation class). Base runtime environment cung cấp
một lớp nằm giữa các chương trình và phần còn lại của hệ thống, thực hiện các
dòch vụ cho các ứng dụng của người lập trình và đơn giản hóa việc xử lý đến
chức năng của lớp thấp hơn. Các lớp nền tảng cung cấp một tập lớn các chức
năng xây dựng sẵn, như xử lý tập tin, thao tác với XML,
.Net Framework cũng cung cấp một tập các hàm API của riêng nó để
giúp cho người lập trình tận dụng được hết các khả năng của nó. Hình sau cho
thấy mối quan hệ của Framework và mã nguồn của chương trình và các dòch vụ

của hệ điều hành.









Ghi chú : .Net Framework cung cấp một lớp trừu tượng trên hệ điều hành giống
như hệ điều hành làm việc với phần cứng máy tính.
User Application

.Net Framework

Operating System
Device Drivers Device Drivers

Hardware Components
LUẬN VĂN TỐT NGHIỆP GVHD : NGUYỄN ANH TUẤN
SVTH : NGUYỄN THỊ NGỌC
LOAN

3

4. .Net service
:
.Net có các khái niệm mà vượt xa hơn chi tiết của lập trình để mô tả
cách các hệ thống được xây dựng và cách chúng có thể tương tác. Một trong

các khái niệm trên là ý tưởng Web Service, chức năng được phân theo một quy
luật nhất quán thông qua Internet. Các dòch vụ này cho phép một công ty hay
tổ chức cung cấp chức năng mà chức năng này được thực hiện hoàn toàn bên
trong môi trường của họ. Một ví dụ của các dòch vụ này là dòch vụ thanh toán
hóa đơn, một công ty có các server và các ứng dụng trong chính công ty của họ
mà có thể thực hiện và quản lý được việc thanh toán hóa đơn. Công ty này
cung cấp dòch vụ đó cho các công ty khác thông qua dòch vụ Web. Dòch vụ này
khác với việc cung cấp một trang Web thông thường; đây là một giao tiếp mà
các ứng dụng hay các trang web khác có thể sử dụng chức năng được cung cấp.

5. .Net Device
:
Ngày nay có rất nhiều hệ thống có thể truy xuất Internet, như là máy
tính cá nhân, các đầu cuối TV-Based Internet… Tất cả các thiết bò này có thể là
công cụ để người sử dụng truy xuất các ứng dụng .Net. Các thiết bò này có thể
được phân vào lớp .Net Devices – một sự kết hợp phần cứng và các tính năng
phần mềm được thiết kế để làm với các dòch vụ và các ứng dụng xây dựng trên
.Net. Các thiết bò .Net bao gồm các máy tính chạy trên Windows và các thiết
bò chạy trên Windows CE.
II. NHỮNG NÉT MỚI TRONG VISUAL BASIC .NET:
Visual Basic .Net là phiên bản mới tiếp của Visual Basic. Microsoft đã
thiết kế lại các sản phẩm nhằm tạo sự dễ dàng hơn trước đây trong việc viết
các ứng dụng phân tán, như Web. Visual Basic .Net có hai phần hỗ trợ cho việc
tạo form (Windows Forms và Web form) và một phiên bản mới của ADO về
truy cập nguồn dữ liệu. Hơn nữa, nó thể hiện đa ngôn ngữ lập trình, loại bỏ
những cái cũ, vô hiệu hóa các từ khóa không hữu ích cùng với rất nhiều những
thay đổi khác.
Các thuộc tính mới này sẽ cho phép bạn tạo cả ứng dụng Client/Server
và ứng dụng Internet. Với Web Form và ADO.NET bây giờ bạn có thể nhanh
chóng pháp triển các Web Site. Với việc thêm vào các khả năng thừa kế, ngôn

ngữ Visual Basic giờ đây là một môi trường lập trình hướng đối tượng: Các giao
diện trên Windows hỗ trợ các khả năng truy cập và thừa kế hiệu quả. Cuối
cùng, việc cài đặt và thực thi ứng dụng đơn giản chỉ là copy chương trình qua
các nơi khác chạy, không cần thiết phải đăng ký với Registry gì cả.
Visual Basic .Net tích hợp đầy đủ với những ngôn ngữ Microsoft Visual
Studio .Net. Bạn không chỉ có thể phát triển các thành phần của ứng dụng bằng
LUẬN VĂN TỐT NGHIỆP GVHD : NGUYỄN ANH TUẤN
SVTH : NGUYỄN THỊ NGỌC
LOAN

4

các ngôn ngữ lập trình khác, các lớp của bạn cũng có thể thừa hưởng từ các lớp
được viết bằng các ngôn ngữ khác sử dụng tính năng kế thừa đa ngôn ngữ. Với
trình bắt lỗi, bạn có thể bắt lỗi nhiều ứng dụng với các ngôn ngữ khác nhau
cho chương trình đang thực thi cục bộ hoặc từ các máy truy cập ở xa. Bất cứ
ngôn ngữ nào bạn sử dụng, cơ cấu Microsoft .Net cũng cung cấp một tập hợp
API cho việc sử dụng trên Windows và cả trên Internet.

1.Những thay đổi với bản thân ngôn ngữ Visual Basic
:
Những phiên bản trước đây của Visual Basic hướng đến những ứng dụng
Client chuẩn, trọng tâm của Visual Basic .Net với việc tạo các ứng dụng dòch
vụ Web cũng tốt như các ứng dụng Client chuẩn trên Windows. Việc này được
thực hiện bởi các chương trình quản lý mã chung cho cơ cấu .Net Framework
và bộ diễn dòch ngôn ngữ thông dụng –Common Language Runtime. Đương
nhiên, nó yêu cầu phải có những thay đổi lớn đối với ngôn ngữ Visual Basic.
Với những thay đổi chính đòi hỏi phải tạo ra một bộ khung .Net
Framework và thư viện Runtime mới, Microsoft nghó rằng đây cũng chính là cơ
hội tốt để xóa sạch những khía cạnh lỗi để thực hiện những điều sau đây:


Đơn giản hóa ngôn ngữ và làm cho chúng phù hợp hơn.

Thêm vào những tính năng mới theo yêu cầu.

Tạo ra những chương trình nguồn dễ đọc và bảo vệ dễ dàng hơn.

Phát triển tiến trình xử lý lỗi.

Tạo các ứng dụng dễ bắt và gỡ lỗi.

2. Giao diện Windows Forms mới
:
Windows Forms là một phần của cơ cấu .Net Framework với nhiều kỹ
thuật mới bao gồm một cơ cấu ứng dụng thường, quản lý môi trường thực thi,
bảo mật và hướng đối tượng. Windows Forms cũng đưa ra đầy đủ những hỗ trợ
cho việc nhanh chóng và dễ dàng để kết nối với dòch vụ Web XML, xây dựng
nên những ứng dụng nhận biết dữ liệu được tạo cơ bản trên ADO.NET. Với
môi trường phát triển chia xẻ mới trong Visual Studio, các nhà phát triển có thể
tạo ra các ứng dụng Windows Forms bằng bất cứ ngôn ngữ nào có hỗ trợ nền
.NET
Bạn có thể tạo một ứng dụng Windows Forms như cách bạn đã làm trong
phiên bản trước của Visual Basic: Đặt các điều khiển ơ û một vò trí trên form,
thay đổi thuộc tính cho chúng và nhấp đúp vào điều khiển để mở Source
Editor.

3. Visual Inheritance
:
Visual Inheritance là một tính năng mới của Windows Forms sẽ thúc đẩy
các nhà phát triển hoàn thành sản phẩm và dễ dàng sử dụng lại các chương

LUẬN VĂN TỐT NGHIỆP GVHD : NGUYỄN ANH TUẤN
SVTH : NGUYỄN THỊ NGỌC
LOAN

5

trình nguồn cũ. Chẳng hạn, bạn có thể đònh nghóa một giao diện chuẩn có chứa
các phần tử như trình đơn (menu) hay là thanh công cụ (toolbar). Bạn có thể sử
dụng form này trong những ứng dụng khác thông qua kế thừa và mở rộng nó
đáp ứng các yêu cầu của những ứng dụng đặc biệt, hãy chú trọng đến giao diện
cho người dùng thông thường và giảm bớt công việc không phải tạo lại các
form tương tự.

4. Giao diện một form chính xác:
Với Windows Forms mới, những tính năng như Menu Designer,
Anchoring, Docking, và nhiều điều khiển khác có thể mạnh hơn và hợp cho các
nhà phát triển xây dựng giao diện người dùng trên Windows hơn.
Windows Forms cung cấp cho bạn tập hợp các kỹ thuật xây dựng ứng
dụng cơ bản trên Windows. Có những điều khiển và thuộc tính mới tốt cho việc
hòa hợp các giao diện người dùng; Windows Forms cũng cung cấp thuộc tính
bảo mật.

5. Giao diện Web
:
Web Form được tạo để chỉ đònh sự khác biệt giữa những kỹ thuật được
sử dụng để xây dựng một ứng dụng trên Windows và chúng được sử dụng để
tạo một ứng dụng trên Web. Với Visual Basic .Net, bạn có thể nhanh chóng
phát triển ứng dụng để chạy được trên Internet bằng những kỹ thuật tương tự
mà bạn đã học ở Visual Basic. Để tạo một ứng dụng trên Web, bạn thêm một
Web form vào dự án, kéo thả các điều khiển cần thiết vào trang. Dấu mã

chương trình tách biệt khỏi mã HTML.
Các phiên bản trước đây của công cụ Visual Studio đã cố gắng đơn giản
hóa công việc phát triển trên Web. Ví dụ, Visual Basic đã cung cấp hỗ trợ cho
DHTML Client và WebClasses; Visual InterDev phục vụ trong cho phát triển
bằng ASP. Web Form đưa ra những giải pháp làm việc hữu dụng hơn để xây
dựng Web với Visual Basic .Net. Web Form mô tả sự biến đổi của ASP và Web
Classes, cung cấp cách tốt nhất cho cả hai mô hình.

6.Chuyển biến từ VB6
:
Microsoft xem xét hai yếu tố khi thiết kế Visual Basic .Net: Sử dụng lại
mã đã có của các ứng dụng trước đây đặt cơ sở cho phép chạy trên cùng cơ cấu
.Net hoặc xây dựng lại nền tảng từ đầu tận dụng tối ưu các tính năng mới
của.Net và hệ điều hành. Phục vụ hầu hết những tính năng yêu cầu bởi khách
hàng và bảo đảm rằng Visual Basic chuyển sang thế hệ của ứng dụng Web.
Microsoft quyết đònh xây dựng VB.Net từ đầu, hoàn toàn mới, không phụ thuộc
bất kỳ mô hình nào trước đây cả.
LUẬN VĂN TỐT NGHIỆP GVHD : NGUYỄN ANH TUẤN
SVTH : NGUYỄN THỊ NGỌC
LOAN

6

Visual Basic .Net là nền tảng cơ bản, từ việc phát triển ứng dụng
Windows đến việc xây dựng ứng dụng trên Web. Vì lý do này, chương trình
của bạn cần phải được nâng cấp để khai thác hết những thuận lợi của VB.Net.
Microsoft cung cấp công cụ Update Wizard (nâng cấp theo sự hướng dẫn từng
bước) để giúp bạn thi hành tác vụ này. Khi bạn mở một dự án của VB6 trong
VB.Net, Upgrade Wizard sẽ chạy tự động và tạo ra một dự án mới của VB.Net
được lấy từ dự án đang có của bạn.

Khi dự án của bạn đã nâng cấp, ngôn ngữ được chỉnh sửa lại vì những
thay đổi cú pháp và các form VB6 được chuyển thành Windows forms. Trong
hầu hết các trường hợp, bạn sẽ phải tự làm một số thay đổi trong mã của bạn
mỗi khi nâng cấp vì các đối tượng và các thuộc tính ngôn ngữ hoặc không có sự
tương đương trong VB.Net. Sau khi nâng cấp, có thể bạn cũng muốn hiệu chỉnh
ứng dụng của mình để khai thác các mặt thuận lợi của một số tính năng mới
hơn trong VB.Net.
Upgrade Wizard bắt đầu khi bạn mở một ứng dụng VB6. Nó sẽ hỏi bạn
về kiểu của dự án và tập hợp các chọn lựa cho ứng dụng.
Bước tiếp theo là chỉ ra nơi bạn muốn lưu dự án .Net mới. Nên nhớ rằng
dự án mới sẽ không được hiệu chỉnh. Mỗi lần hoàn thành, dự án mới sẽ được
mở lại trong cửa sổ Solution Explorer. Bạn có thể cho hiển thò Upgrade Report
để xem những gì hữu dụng mà bạn cần trong quá trình nâng cấp dự án. Lưu ý
hai phần sau:
 Preparing Your VB 6 Application for the Upgrade to VB.Net (chuẩn bò
ứng dụng VB6 để nâng cấp thành VB.Net).
 The Transistor from VB6 to VB.net (Chuyển tiếp từ VB6 sang VB.net).
III. GIAO DIỆN CỦA CỬA SỔ ỨNG DỤNG:
Trước khi bạn bắt tay vào thiết kế giao diện cho ứng dụng, bạn cần phải
biết rõ mục đích của ứng dụng từ đó chọn lựa các kiểu ứng dụng mà Windows
hỗ trợ để xây dựng giao diện. Có ba kiểu ứng dụng Windows được dùng phổ
biến nhất đó là kiểu ứng dụng xử lý mỗi lần chỉ một tài liệu (Single Document
interface – SDI), kiểu xử lý cùng một lúc nhiều tài liệu ( Multiple Document
interface –MDI), kiểu hiển thò xử lý phân cấp Explorer. Kiểu SDI và MDI đã
có từ các phiên bản Windows 3.1, tuy nhiên kiểu Explorer hiện đang dùng rất
phổ biến trong các ứng dụng Windows hiện đại.

1.Giao diện kiểu SDI
:
SDI là loại chương trình bình thường và đơn giản nhất, nó không yêu cầu

chương trình chạy phải mở cùng lúc nhiều của sổ. Tài liệu chỉ xử lý trong cùng
một cửa sổ form của chương trình. Nhiều thể hiện của chương trình có thể chạy
đồng thời để xử lý cùng lúc nhiều tài liệu. Hoặc ngay trong chương trình bạn có
LUẬN VĂN TỐT NGHIỆP GVHD : NGUYỄN ANH TUẤN
SVTH : NGUYỄN THỊ NGỌC
LOAN

7

thể tạo độc lập các form đơn xử lý tách biệt nhau. Mặc dù, chương trình theo
giao diện SDI khá đơn giản và dễ xử lý nhưng đôi khi ứng dụng của bạn lại cần
một giao diện kiểu đa tài liệu (MDI) cho phép làm việc đồng thời với nhiều
cửa sổ tài liệu khác nhau.
2. Giao diện kiểu MDI:
Giao diện MDI thường bao gồm một form cha chứa cùng một lúc nhiều
cửa sổ form con với các chức năng khác nhau.
Giới thiệu về Form Cha:
Trong những phiên bản trước của VB, form cha được xem là khung chứa
tất cả những form con trong ứng dụng, form cha có một số đặc điểm hạn chế
sau:
 Một ứng dụng chỉ có thể có một form MDI cha.
 Chỉ có điều khiển mang thuộc tính Align mới được đặt trực tiếp vào form
MDI.
 Bạn không thể dùng phương thức Print hoặc bất kỳ các phương thức đồ
hoạ nào để hiển thò dữ liệu trong form MDI.
Tuy nhiên trong Visual Basic .Net, hầu hết những giới hạn trên đã được
loại bỏ. Các đặc điểm nổi bậc của form cha giờ đây bao gồm:
 Khi bạn thu nhỏ form cha, form này và tất cả những cửa sổ con
của nó được hiển thò gom lại như một biểu tượng đơn trên thanh
công cụ. Khi form cha được khôi phục lại kích thước, tất cả cửa sổ

form con đều trở về kích thước và vò trí nguyên thuỷ của nó.
 Nếu form con có một menu, bạn có thể thiết đặt thuộc tính để xác
đònh các menu con được hiển thò trên form chính như thế nào.
Một đặc điểm mới đối với một form MDI là ứng dụng có thể đònh
nghóa nhiều hơn một form MDI cha. Điều này cho phép bạn tạo một
ứng dụng hoàn chỉnh bao gồm một hoặc nhiều cửa sổ form cha gồm
một hoặc nhiều form con. Form con cũng có những đặc điểm ảnh
hưởng tới hoạt động của nó:
 Cửa sổ con không thể được di chuyển ra ngoài giới hạn của cửa
sổ cha.
 Khi một form con được thu nhỏ, hình tượng của nó được hiển thò
trong cửa sổ cha chứ không nằm trên thanh công cụ Taskbar.
 Một cửa sổ con được phóng lớn che lấp hoàn toàn vùng làm việc
của cửa sổ cha. Tiêu đề của cửa sổ con cũng được kết hợp với
tiêu đề của cửa sổ cha và hiển thò trên thanh tiêu đề của cửa sổ
cha.
LUẬN VĂN TỐT NGHIỆP GVHD : NGUYỄN ANH TUẤN
SVTH : NGUYỄN THỊ NGỌC
LOAN

8

Phiên bản .Net của VB không yêu cầu bạn phải đònh nghóa một form
con. Bất kỳ một form nào không phải form cha đều có thể được sử
dụng một cách đơn giản như một form con bằng cách đặt thuộc tính
MDIParent ở thời điểm chạy ứng dụng.

3. Giao diện kiểu Explorer
:
Kiểu Explorer được xem như một giao diện chuẩn trong những năm gần

đây, nó là một kiến trúc sử dụng cùng một lúc nhiều thành phần điều khiển
trên một giao diện SDI. Các điều khiển mà bạn dùng trong việc tạo giao diện
Explorer này là:
 TreeView
 ListView
 ImageList
 PictureBox
Đặt những điều khiển này làm việc cùng nhau sẽ tạo nên giao diện
Explorer. Explorer thường dùng để hiển thò và trình bày theo kiểu dữ liệu phân
cấp và cấu trúc.
IV. LẬP TRÌNH TRONG MÔI TRONG .NET:
.NET Framework cung cấp một mô hình lập trình chung (Common
Programming Model), là mô hình bao gồm ngôn ngữ lập trình và rất nhiều các
tính năng. Nếu bạn biết về các ngôn ngữ khác như C++ thì cơ cấu này sẽ giúp
cho bạn thấy được các khả năng tham chiếu mã lệnh của bạn đến những ngôn
ngữ khác. Điều này hoàn toàn có thể thực hiện được dựa vào không gian tên
(namespace), phương thức và các lớp tương thích với tất cả các ngôn ngữ được
.Net hỗ trợ. Nghóa là khi sử dụng Visual Basic.Net, bạn có thể viết một chuỗi
hiển thò sử dụng phương thức WriteLine() của đối tượng. Mỗi ngôn ngữ .Net sẽ
sử dụng phương thức giống nhau từ đối tượng giống nhau.

1. Đònh nghóa các namespace chính:
Namespace được dùng để nhận dạng một nhóm các đối tượng, chẳng hạn
như điều khiển ListBox, TextBox, những điều khiển là các thành phần của hệ
thống.
Microsoft tạo namespace để ngăn cản sự nhập nhằng về tên và các tham
chiếu trở nên đơn giản khi sử dụng các nhóm đối tượng lớn như lớp thư viện.
Hầu hết các lớp và phương thức mà bạn sẽ sử dụng khi lập trình trong
VB.Net là các thành phần của một namespace. Bảng sau là một danh sách các
namespace và các lớp quan trọng trong .Net Framework. Các namespace này

là những gì bạn sẽ tìm để dùng khi học phát triển ứng dụng với .Net.
LUẬN VĂN TỐT NGHIỆP GVHD : NGUYỄN ANH TUẤN
SVTH : NGUYỄN THỊ NGỌC
LOAN

9








































Namespace Diễn Giải
System Bao gồm các lớp cơ bản mà các chương
trình đều sử dụng, như Object, Char,
String
System.IO Cung cấp các lớp cho phép đồng thời
và không đồng thời viết và đọc trên
dòng dữ liệu và tập tin
System.Drawing Cung cấp cơ chế truy cập đến lớp đồ
hoạ cơ bản GDI
System.Collection Chứa các lớp đònh nghóa các tập hợp
đối tượng khác nhau, như danh sách ,
hàng đợi, và mảng
System.Threading Cung cấp các lớp và các giao diện có
khả năng lập trình đa tuyến hay đa tiểu
trình.

System.Reflection Chứa các tập hợp của các lớp và các
giao diện cung cấp chủ yếu về kiểu,
phương thức và các trường.
System.Security Chứa tập hợp của các lớp và
namespace cung cấp sự hỗ trợ bảo mật
đối với một ứng dụng, như Permission
and Policy.
System.Net Cung cấp các lớp và các namespace về
lập trình mạng, như Connection and IP
Address.
System.Data Chứa các lớp và các namespace cấu
tạo nên kiến trúc của ADO.NET.
System.Data.OleDb Cung cấp các lớp về hệ quản trò CSDL,
cho phép truy cập đến nguồn dữ liệu
OLE DB.
System.Data.SqlClient Cung cấp các lớp về hệ quản trò CSDL,
cho phép truy cập đến nguồn dữ liệu
của SQL Server.
System.Web.Services Cung cấp các lớp hỗ trợ sự phát triển
của dòch vụ Web XML.
System.Web.UI Cung cấp các lớp và các namespace hỗ
trợ sự phát triển trong môi trường Web.
System.Windows.Forms Cung cấp các lớp và namespace hỗ trợ
sự phát triển trong môi trường Windows

LUẬN VĂN TỐT NGHIỆP GVHD : NGUYỄN ANH TUẤN
SVTH : NGUYỄN THỊ NGỌC
LOAN

10


Nên nhớ rằng bạn sẽ sử dụng hầu hết các namespace thậm chí bạn không thể
nhận ra là mình đang sử dụng nó. Ví dụ, khi bạn khởi động một ứng dụng và
bắt đầu thêm các điều khiển vào form tức là bạn đang sử dụng namespace
System.Windows.Forms.
2. Các thủ tục (hàm) tự viết
:
Có hai loại chính trong Visual Basic.Net. Loại thứ nhất gọi là các thủ
tục, nó thực hiện công việc nào đó và không trả về giá trò nào, loại này được
gọi là subroutine( viết tắt là Sub). Loại thứ hai là các hàm, cũng thực hiện công
việc nào đó, nhưng có trả về một giá trò, loại này có tên là function. Các thủ
tục và hàm có tên gọi chung là routine.

a. Thủ tục
:
Thủ tục là một khối code VB.Net thực hiện một số công việc, ví dụ như
phương thức Console.WriteLine thực hiện công việc in văn bản ra màn hình,
nhưng không trả về giá trò nào. Ta sử dụng các thủ tục để thực hiện các tác vụ
giống nhau trong các chương trình.
Thông thường, nếu chương trình có một phần code được thực hiện nhiều
lần, nên cho chúng vào các thủ tục. Sau đó, để sử dụng chúng chỉ cần dùng tên
ta đặt cho đoạn code đó. Để tạo một thủ tục ta cần sử dụng từ khoá Sub. Ví du ï:
Sub LoadCmbLP()
cmbMaLP.BeginUpdate()
cmbMaLP.DataSource = objDataView
cmbMaLP.DisplayMember = "malp"
cmbMaLP.ValueMember = "malp"
cmbMaLP.EndUpdate()
End Sub


b. Hàm
:
Tạo các hàm riêng cho phép người lập trình tạo các khả năng mới trong
chương trình. Tạo một hàm tương tự như tạo các thủ tục, nhưng đònh nghóa thêm
kiểu của dữ liệu trả về. Bên trong hàm, phải xác đònh giá trò trả về, như bên
dưới:
Function TênFunction (giátrò1 As Type,…)As Kiểutrảvề
Code thực hiện công việc
Return Giátròtrảvề
End Function

c. Scope –Tầm ảnh hưởng
:
Scope là khả năng nhìn thấy được của các biến trong chương trình, nghóa
là các hàm hay thủ tục nào đó có thể sử dụng một biến đã cho. Nếu tất cả các
LUẬN VĂN TỐT NGHIỆP GVHD : NGUYỄN ANH TUẤN
SVTH : NGUYỄN THỊ NGỌC
LOAN

11

hàm và thủ tục có thể xử lý tất cả các biến của chương trình sẽ gây lỗi rất khó
bắt lỗi.
Ta có thể khai báo biến ở ngoài các thủ tục để các biến này có thể được
sử dụng cho nhiều thủ tục khác nhau. Nếu khai báo kiểu này, có thể dùng các
từ khoá khác, Public và Private:

Public: Các biến public được sử dụng trong toàn ứng dụng. Chúng được
gọi là biến toàn cục. Nên ít sử dụng các biến kiểu này, nhưng nó hữu
dụng khi cần một vài giá trò được sử dụng tại nhiều nơi trong chương

trình, ví dụ như biến kết nối đến cơ sở dữ liệu, hay đường dẫn đến một
file.

Private: các biến Private chỉ sử dụng được trong module hay class, nơi
mà chúng được khai báo. Các biến Private thường được sử dụng trong
các ứng dụng khi cần một giá trò chỉ có thể sử dụng trong nhiều thủ tục.
Tạo một biến với từ khoá Private cho phép các thủ tục hay hàm trong
module hay class đó xử lý biến đó.

d. Tầm ảnh hưởng và các thủ tục
:
Cũng như các biến, các thủ tục và các hàm cũng có tầm ảnh hưởng. Tầm
ảnh hưởng của các thủ tục và các hàm cũng có ý nghóa như tầm ảnh hưởng của
các biến: nó cho biết những vò trí nào trong chương trình có thể sử dụng các thủ
tục và hàm.
Các từ khoá để đònh nghóa tầm ảnh hưởng của các thủ tục và hàm cũng
giống như với các biến.

Public : các thủ tục và hàm public có thể được gọi từ bất kỳ phần nào
trong chương trình. Đây là giá trò mặc nhiên nếu như không đặt bất kỳ
từ khoá nào.
 Private: các thủ tục và hàm Private chỉ có thể được gọi từ các hàm và
thủ tục ở trong cùng một module hay class, nơi có đònh nghóa chúng.
V.TRUY CẬP DỮ LIỆU VỚI .NET:
1. ADO.NET:
ADO.NET là kỹ thuật truy xuất dữ liệu và là một phần của .NET
Framework. Nó sẽ là công cụ của người lập trình để truy xuất dữ liệu khi lập
trình trong VB.Net và là bước phát triển kế tiếp của ADO/OLEDB. Công nghệ
OLEDB bên dưới vẫn tồn tại, và OLEDB provider vẫn là phương pháp chính
để ADO.NET trao đổi với các hệ cơ sở dữ liệu cụ thể, nhưng bên trên lớp này

thì tương đồng rất ít với các đối tượng ADO cũ.


LUẬN VĂN TỐT NGHIỆP GVHD : NGUYỄN ANH TUẤN
SVTH : NGUYỄN THỊ NGỌC
LOAN

12
















Ghi chú: ADO đóng vai trò là một lớp trên OLEDB, chính ADO sử dụng
OLEDB và ODBCdriver để kết nối vào database thựcsự.
Kiến trúc ADO.NET được thiết kế là một kiến trúc không kết nối
(disconnected architecture). Điều này có nghóa là các ứng dụng chỉ được kết
nối đủ lâu để nhận và cập nhật dữ liệu và sau đó được đóng kết nối. Nếu bạn
nhận dữ liệu, bạn có thể lưu trữ nó vào một trong các đối tượng dữ liệu của

ADO.Net, ví dụ như DataSet hoặc DataView.
Việc sử dụng một kiến trúc không kết nối cung cấp nhiều lợi ích, lợi ích
quan trọng nhất là nó cho phép các ứng dụng của bạn chạy nhanh hơn. Điều
này có nghóa là cơ sở dữ liệu của bạn sẽ thực hiện tốt việc hỗ trợ cho hàng trăm
người sử dụng mà tương đương như việc hỗ trợ cho mười người sử dụng. Điều
này có thể thực hiện được bởi vì ứng dụng chỉ kết nối đến cơ sở dữ liệu đủ lâu
để nhận và cập nhật dữ liệu, bằng cách ấy việc giải phóng các kết nối cơ sơ dữ
liệu có sẳn cho các instance khác của ứng dụng của bạn.

2. Không gian tên System.Data và OLEDB:
Trong .Net truy cập dữ liệu được thực hiện thông qua các lớp trong
namespace System.Data. Namespace này được chi thành hai phần: tập các lớp
thuộc System.Data.OleDB và tập các lớp thuộc System.Data.SQLClient. Tập
các lớp đầu tiên, System.Data.OleDB được thiết kế để cho phép kết nối với
bất kỳ hệ cơ sở dữ liệu nào nếu như có OLEDB provider hoặc một ODBC
driver của nó, và tương đương với lớp ADO gốc về mặt kỹ thuật. Tập thứ hai,
System.Data.SQLClient, được thiết kế chỉ làm việc với Microsoft SQL Server,
nhưng cung cấp tính năng rộng rãi hơn chức năng của các lớp OLEDB. Kiến
Các ứng dụng Visual Basic
ActiveX Data Object (ADO)

OLEDB providers

SQL

Oracle

Sysbase

data

data
data
LUẬN VĂN TỐT NGHIỆP GVHD : NGUYỄN ANH TUẤN
SVTH : NGUYỄN THỊ NGỌC
LOAN

13

trúc tổng quát của các lớp truy xuất dữ liệu trong .Net được mô tả trong hình
sau gồm hai hệ thống chính.



















3. Giới thiệu về OleDbConnection:

Lớp OleDbConnection là trái tim của các lớp. Nó cung cấp một kết nối từ
nguồn dữ liệu của chúng ta, mà nguồn dữ liệu đó có thể là SQL Server.
Constructor cho lớp này nhận thông số lựa chọn là connection string.
Connection string:
Connection string được tạo ra bởi nhiều thông số được biểu diễn ở hình
sau. Constructor khởi tạo một instance mới của lớp với connection string xác
đònh. Bạn cũng có thể gọi constructor mà không có connection string khởi tạo
một instance mới của lớp. Sau đó, bạn sẽ cần phải đặt một vài thuộc tính của
lớp OleDbConnection trước khi bạn có thể sử dụng kết nối. Vì thế, thật là
thuận lợi để khởi tạo lớp này với một connection string, cũng như chúng ta sử
dụng ít code hơn bởi vì không phải đặt một vài các thuộc tính của lớp sau khi
chúng ta khởi tạo nó.
Connection string mà bạn sử dụng phụ thuộc vào dữ liệu lưu trữ (data
store) mà bạn truy cập. Tuy nhiên, có một vài thuộc tính cơ bản của một
connection string ứng dụng đến hầu hết các dữ liệu lưu trữ. Bảng sau là danh
sách các thuộc tính tiêu biểu để có thể đặt trong một connection string:

System.data
(chứa các đối tượng xử lý dữ liệu
chung)
System.data.SqlClient
(chứa các đối tượng cụ thể kềt nối
vào Microsoft SQL Server)
System.data.OLEDB
(chứa các đối tượng xử chỉ dùng để
kết nối thông qua các OLEBD
Provider)
LUẬN VĂN TỐT NGHIỆP GVHD : NGUYỄN ANH TUẤN
SVTH : NGUYỄN THỊ NGỌC
LOAN


14


Thông số Diễn giải
Provider Xác đònh trình cung cấp OLEDB được sử
dụng.
Data Source Xác đònh tên máy nơi dữ liệu lưu trữ được lưu
trữ.
Initial catalog Xác đònh tên cơ sở dữ liệu được sử dụng.
User ID Xác đònh userID của người sử dụng đăng
nhập vào hệ thống.
Password Xác đònh mật khẩu của người sử dụng đăng
nhập.
Integrate Security Xác đònh trình cung cấp sẽ gọi trình cung cấp
bảo mật dành riêng trong hệ điều hành để
nhận truy cập đến tên đăng nhập của chúng
ta và sau đó sử dụng tên đăng nhập này cho
phép data store phải có giá trò hợp lệ với sự
truy cập của chúng ta. Một giá trò SSPI (
Security Support Provider Interface) thường
xuyên được xác đònh với thông số này.
Ví dụ:
Dim objConnection As OleDbConnection = New _
OleDbConnection("Provider=SQLOLEDB.1;Integrated
Security=SSPI;Persist Security Info=False;Initial " & _
"Catalog=fafilm;Use Procedure for Prepare=1;Auto
Translate=True;Packet Size=4096;" & _
"Workstation ID=DHKTCN;Use Encryption for
Data=False;Tag with column collation wh" & _

"en possible=False")
Mỗi khi chúng ta khởi tạo một đối tượng kết nối với một connection string
như đã biểu diển ở trên, chúng ta có thể gọi bất kỳ các phương thức của đối
tượng OleDbConnection như Open và Close, một cách thực sự mở và đóng một
kết nối đến cơ sở dữ liệu được xác đònh trong connection string.
Ví dụ:
‘ mở kết nối cơ sở dữ liệu
objConnection.Open()
‘đóng kết nối cơ sở dữ liệu
objConnection.Close()
LUẬN VĂN TỐT NGHIỆP GVHD : NGUYỄN ANH TUẤN
SVTH : NGUYỄN THỊ NGỌC
LOAN

15

4 . Giới thiệu OleDbDataAdapter:
Lớp OleDbDataAdapter được sử dụng để đọc và ghi dữ liệu từ bất kỳ
OLEDB data source và có thể được đặt để chứa các câu lệnh SQL hoặc các
stored procedure được thực thi. Lớp OleDbDataAdapter thực sự không lưu trữ
bất kỳ dữ liệu nào nhưng được sử dụng như cầu nối giữa lớp DataSet và dữ liệu
lưu trữ. Hình sau sẽ cho ta nhìn thấy một cách ngắn gọn lớp DataSet:











a.Thuộc Tính SelectCommand
:
Khi chúng ta muốn đọc dữ liệu từ dữ liệu lưu trữ, đầu tiên chúng ta phải đặt
thuộc tính Select Command của lớp OleDbDataAdapter. Thuộc tính này được
nhận từ OleDbCommand và được sử dụng để xác đònh dữ liệu gì được chọn và
được chọn như thế nào. Khi chúng ta xác đònh thuộc tính SelectCommand
chúng ta phải đặt các thuộc tính khác để đối tượng OleDbDataAdapter biết
được nhận dữ liệu như thế nào. Sau đây là các thuộc tính chung của
SelectCommand:

Thuộc tính Diễn giải
Connection Đặt đối tượng OleDbconnection
được sử dụng để truy cập dữ liệu
lưu trữ.
CommandText Đặt câu lệnh SQL hoặc tên stored
procedure được sử dụng để lựa
chọn dữ liệu.
CommandType Đặt một giá trò để xác đònh thuộc
tính CommandText như thế nào
được biên dòch.












Data Store
OleDbDataAdapter
SelectCommand
DataSet
Một tập hợp các bảng, các
quan hệ chứa dữ liệu đọc
được từ dữ liệu lưu trữ.
LUẬN VĂN TỐT NGHIỆP GVHD : NGUYỄN ANH TUẤN
SVTH : NGUYỄN THỊ NGỌC
LOAN

16


Ví dụ: Sử dụng SelectCommand để thực thi chuổi SQL
Dim MyDataAdapter As New OleDbDataAdapter()
MyDataAdapter.SelectCommand=new OleDbCommand()
MyDataAdapter.SelectCommand.Connection=objConnection
MyDataAdapter.SelectCommand.CommandText= _
“Select tenphim,maphim from phim”
MyDataAdapter.SelectCommand.CommandType= _
CommandType.Text
Ví dụ: Sử dụng SelectCommand để thực thi Stored Procedure
Dim MyDataAdapter As New OleDbDataAdapter()
MyDataAdapter.SelectCommand=new OleDbCommand()
MyDataAdapter.SelectCommand.Connection=objConnection
MyDataAdapter.SelectCommand.CommandText= _

Tên_storeprocedure
MyDataAdapter.SelectCommand.CommandType= _
CommandType.Text

b. Phương thức ExecuteNonQuery
:
Mỗi khi chúng ta đặt thuộc tính SelectCommand một cách chính xác,
chúng ta cần phải thực thi câu lệnh SQL hoặc Stored Procedure xác đònh trong
thuộc tính CommandText. Chúng ta làm điều này bằng cách gọi phương thức
ExecuteNonQuery. Phương thức này thực thi chuỗi SQL hoặc Stored Procedure
mà chúng ta xác đònh và trả về số các dòng bò tác động bởi câu lệnh SQL hoặc
Stored Procedure. Đối với câu lệnh Select thì phương thức này luôn trả về giá
trò là -1 ,đối với câu lệnh Insert, Update, Delete thì giá trò trả về là số dòng bò
tác động bởi câu lệnh.
Ví dụ:
ObjDataAdapter.SelectCommand.ExecuteNonQuery()

c. Phương thức Fill
:
Mỗi khi chúng ta thực thi phương thức ExecuteNonQuery, chúng ta có
thể thực thi phương thức Fill để điền vào DataSet với dữ liệu mà đối tượng
OleDbDataAdapter nhận được từ dữ liệu lưu trữ. Tuy nhiên trước khi chúng ta
làm điều này chúng ta phải khởi tạo một đối tượng DataSet.
Cú pháp: Fill ( DataSet , string )
Đối số DataSet xác đònh một đối tượng DataSet dùng để chứa dữ liệu được
điền vào. Đối số string xác đònh tên của bảng mà được sử dụng để là bảng
ánh xạ. Trong trường hợp OleDbDataAdapter trả về nhiều bảng, chúng ta phải
LUẬN VĂN TỐT NGHIỆP GVHD : NGUYỄN ANH TUẤN
SVTH : NGUYỄN THỊ NGỌC
LOAN


17

xác đònh bảng gốc cho thông số này. Root table sẽ là bảng chính từ dữ liệu
được chọn. Nói cách khác, điều này có nghóa là bảng được xác đònh trong mệnh
đề from của câu lệnh Select.
Ví dụ:
ObjDataAdapter.Fill (objDataSet, “Phim”)
d. Phương thức Update
:
Phương thức Update của DataAdapter được gọi để giải quyết những
thay đổi từ một DataSet gởi đến dữ liệu nguồn. Khi bạn gọi phương thức
Update, DataAdapter phân tích những thay đổi được tạo ra và thực thi câu
lệnh riêng (INSERT, UPDATE, hoặc DELETE). Khi DataAdapter gặp một
thay đổi đến một DataRow, nó sử dụng InsertCommand, UpdateCommand,
hoặc DeleteCommand để xử lý sự thay đổi. Điều này cho phép bạn tối đa hoá
việc thực thi của ứng dụng ADO.NET của bạn bởi việc xác đònh command
syntax tại thời điểm thiết kế. Bạn phải đặt các câu lệnh trước khi gọi phương
thức Update. Nếu phương thức Update được gọi và command cần thực thi
không tồn tại (ví dụ như không có câu lệnh DeleteCommand để xóa các
dòng), thì một ngoại lệ sẽ bò ném ra. Các thông số có thể được sử dụng để xác
đònh giá trò xuất và nhập cho câu lệnh SQL hoặc stored procedure cho mỗi
dòng bò thay đổi trong một DataSet. Phương thức Update sẽ giải quyết những
thay đổi của bạn và gởi trả về dữ liệu nguồn, tuy nhiên các client khác có thể
được sửa đổi dữ liệu tại dữ liệu nguồn sau khi bạn đã điền vào DataSet. Để
làm tươi DataSet của bạn với dữ liệu tức thời, bạn sử dụng lại phương thức Fill
của DataAdapter để điền vào DataSet. Các dòng mới sẽ được thêm vào bảng
và cập nhật thông tin sẽ được phản hồi vào trong các dòng tồn tại. Để xử lý các
ngoại lệ có thể xuất hiện trong suốt quá trình sử dụng lệnh Update, bạn có thể
sử dụng sự kiện RowUpdated để phản hồi đến các lỗi do cập nhật các dòng.

Ví dụ sau minh họa cho việc thực thi các cập nhật đến các dòng được thay đổi
bằng cách đặt thuộc tính UpdateCommand của DataAdapter.
Dim catDA As SqlDataAdapter = New SqlDataAdapter("SELECT CategoryID,
CategoryName FROM Categories", nwindConn)

catDA.UpdateCommand = New SqlCommand("UPDATE Categories SET
CategoryName = @CategoryName " & _
"WHERE CategoryID = @CategoryID", nwindConn)

catDA.UpdateCommand.Parameters.Add("@CategoryName",
SqlDbType.NVarChar, 15, "CategoryName")
LUẬN VĂN TỐT NGHIỆP GVHD : NGUYỄN ANH TUẤN
SVTH : NGUYỄN THỊ NGỌC
LOAN

18


Dim workParm As SqlParameter =
catDA.UpdateCommand.Parameters.Add("@CategoryID", SqlDbType.Int)
workParm.SourceColumn = "CategoryID"
workParm.SourceVersion = DataRowVersion.Original

Dim catDS As DataSet = New DataSet
catDA.Fill(catDS, "Categories")

Dim cRow As DataRow = catDS.Tables("Categories").Rows(0)
cRow("CategoryName") = "New Category"

catDA.Update(catDS)


5. Giới thiệu DataSet
:
Thành phần chính khác của ADO.NET đó là DataSet. Nó tương ứng
với ADO recordset. Tuy nhiên, nó có hai điểm khác biệt quan trọng. Thứ nhất,
DataSet luôn tách rời, và hậu quả là không quan tâm nơi xuất xứ của dữ liệu –
có thể dùng DataSet theo cách để điều tác dữ liệu từ một nguồn dữ liệu truyền
thống hoặc từ một tư liệu XML. Để nối một DataSet với một nguồn dữ liệu, ta
cần dùng DataAdapter như một yếu tố trung gian giữa DataSet và trình cung
cấp dữ liệu .NET












Lớp DataSet được sử dụng để lưu trữ dữ liệu nhận được từ data store
và lưu trữ các dữ liệu này trong bộ nhớ của Client. Đối tượng DataSet chứa một
tập hợp các bảng, các quan hệ chúng chứa dữ liệu đọc được từ data store.
Dữ liệu trong DataSet thực sự không kết nối từ dữ liệu lưu trữ và bạn
có thể chạy trên dữ liệu một cách độc lập từ dữ liệu lưu trữ. Bạn có thể thao tác
.
NET Data Provider
Connection

Command
DataReader
DataAdapter
Data

Source

DataSet
XML
document

LUẬN VĂN TỐT NGHIỆP GVHD : NGUYỄN ANH TUẤN
SVTH : NGUYỄN THỊ NGỌC
LOAN

19

dữ liệu trên một đối tượng DataSet bằng cách thêm vào, sữa chữa, xoá các
record. Bạn có thể ứng dụng những thay đổi trở lại dữ liệu lưu trữ bằng cách sử
dụng đối tượng OleDbDataAdapter.
Dữ liệu trong đối tượng DataSet được biểu diển như XML, thực hiện
nó rất hiệu quả để chuyển qua lại giữa các đối tượng.
Ví dụ : để điền một DataSet bằng dữ liệu từ bảng Phim trong cơ sở dữ liệu
Fafilm
objDataSet = New DataSet()
objConnection.Open()
objDataAdapter = New OleDbDataAdapter("SELECT
maphim,tenphim,tennsx,namsx,matl,malp,sotap from phim", objConnection)
objDataSet = New DataSet()
objDataAdapter.Fill(objDataSet, "Phim")

objConnection.Close()
Giải thích: Sau khi mở tuyến kết nối như đã làm ở trên, ta có ba bước liên quan
đến việc điền DataSet :
o Lập minh dụ một đối tượng DataAdapter mới. Trước khi điền DataSet,
hiển nhiên ta cần phải chỉ đònh thông tin tuyến nối và dữ liệu muốn điền.
o Tạo DataSet mới.
o Gọi phương thức Fill của DataAdapter. Ta truyền DataSet muốn điền
dưới dạng một tham số cho phương pháp này, cùng với tên của bảng bên
trong DataSet muốn điền. Nếu ta gọi phương thức Fill dựa trên một
tuyến nối đóng, tuyến nối sẽ tự động mở, rồi đóng lại sau khi DataSet đã
được điền.

6. Giới thiệu DataView
:
Lớp DataView được sử dụng để sắp xếp, lọc, tìm kiếm, soạn thảo dữ
liệu từ một DataSet. DataView là binbable , có nghóa là nó có thể bound đến
các điều khiển giống như cách DataSet có thể bound đến các control.
Trong bộ nhớ dữ liệu được sử dụng bởi các đối tượng DataSet và
DataView là đối tượng DataTable. Lớp DataView là một khung nhìn thu nhỏ
của DataTable được nhận từ đối tượng DataSet.
Bạn có thể tạo một DataView từ dữ liệu chứa trong một DataTable nó
chỉ chứa dữ liệu mà bạn hiển thò. Ví dụ, nếu dữ liệu trong DataTable chứa tất
cả các tác giả đã được sắp xếp bởi họ và tên, bạn có thể tạo một DataView để
chứa tất cả các tác giả được sắp xếp bởi tên trước sau đó rồi tới họ. Hoặc bạn
muốn tạo một DataView chỉ chứa tên hoặc họ.
LUẬN VĂN TỐT NGHIỆP GVHD : NGUYỄN ANH TUẤN
SVTH : NGUYỄN THỊ NGỌC
LOAN

20


Dữ liệu trong một DataView là tách rời từ dữ liệu được chứa trong
DataTable của DataSet, vì thế bạn có thể thực thi dữ liệu mà không ảnh hưởng
gì đến dữ liệu trong DataSet.
Constructor cho lớp DataView khởi tạo một instance của lớp DataView
và nhận DataTable như đối số. Đoạn code sau khai báo đối tượng DataView và
khởi tạo nó bằng cách sử dụng bảng authors từ DataSet tên objDataSet. Chú ý,
chúng ta có thể truy cập tập hợp các bảng của đối tượng DataSet bằng cách xác
đònh thuộc tính Tables và tẽn bảng:
Dim objDataView=New DataView(objDataSet.Tables(“authors”))

a. Phương thức Sort:
Mỗi khi một DataView được khởi tạo và chứa dữ liệu, bạn có thể thực thi dữ
liệu. Ví dụ, giả sử chúng ta muốn sắp xếp dữ liệu theo một trật tự khác hơn
so với trong DataSet. Để sắp xếp dữ liệu trong một DataView, chúng ta đặt
phương thức Sort và xác đònh cột hoặc các cột mà chúng ta muốn sắp xếp.
Đoạn code sau sắp xếp dữ liệu trong DataView theo họ và tên tác giả:
ObjDataView.Sort=”au_fname,au_lname”
Các chức năng sắp xếp luôn được thực hiện theo một trật tự tăng dần. Nếu
chúng ta muốn thực hiện sắp xếp theo trật tự giảm dần cần phải thêm từ
khoá DECS.
Ví dụ: ObjDataView.Sort=”au_fname,au_lname DECS”

b. Phương thức Find:
Nếu chúng ta muốn tìm một dòng được chỉ đònh trong DataView, chúng ta
gọi phương thức Find. Phương thức Find tìm dữ liệu trong cột khóa chính của
DataView. Vì thế, trước khi gọi phng thức Find chúng ta cần phải sắp xếp
DataView trong cột chứa dữ liệu mà ta muốn tìm. Cột mà DataView sắp xếp
sẽ trở thành cột khóa chính trong đối tượng DataView.
Nếu tìm thấy dòng dữ liệu thoả điều kiện tìm kiếm phương thức Find trả về

vò trí của record trong DataView, còn ngược lại sẽ trả về giá trò –1. Nếu
phương thức Find tìm thấy giá trò cần tìm, nó sẽ ngừng tìm kiếm và trả về vò
trí mà nó tìm thấy.
Ví dụ:
ObjDataView.Sort=”au_fname”
Intposition=ObjDataView.Find(“anne”)
c. Thuộc tính RowsFilter:
Khi chúng ta khởi tạo DataView, chúng ta có thể lọc các dòng của dữ liệu
mà nó sẽ chứa. Thuộc tính RowFilter xác đònh tiêu chuẩn mà ta muốn ứng
dụng trong DataView và chứa một tên cột theo sau bởi một biểu thức toán học.
LUẬN VĂN TỐT NGHIỆP GVHD : NGUYỄN ANH TUẤN
SVTH : NGUYỄN THỊ NGỌC
LOAN

21

Ví dụ:
Dim objDataView=New DataView(objDataSet.Tables(“authors”))
ObjDataView.RowsFilter=”au_lname = ‘Green’”
7. Giới thiệu các lớp SqlCommand và OleDbCommand
:
Hai lớp này hầu như đồng nhất, điểm khác biệt thực sự duy nhất đó là
lớp Sqlcommand phô diễn một phương pháp thi hành để trả về một luồng
XML mà lớp OleDbCommand không có. Đây là một khả năng được gán cho
lớp SqlCommand dựa vào các khả năng XML của SQL Server 7.0 trở lên.
Lớp OleDbCommand:
Lớp OleDbCommand biểu diễn một query được tạo bởi một data source.
Query này có thể là query Select, Insert, Update hoặc Delete và có thể được
biểu diễn như một chuỗi SQL hoặc một Stored Procedure. Query này được thực
thi có thể chứa các thông số hoặc không có chứa thông số. Chúng ta quan sát

lớp OledbCommand vừa rồi trong OleDbDataAdapter, như thuộc tính
Selectcommand thực sự đã được nhận từ lớp này. Trong phần OleDbcommand
chúng ta sử dụng lớp này để thực thi một câu query được tạo bởi dữ liệu mà
không sử dụng OleDbDataAdapter.
Constructor cho lớp OleDbCommand có một vài biến, nhưng phương thức đơn
giản nhất là khởi tạo một đối tượng OleDbCommand không có tham số. Sau
đó, một khi đối tượng đã được khởi tạo bạn có thể đặt thuộc tính mà bạn cần
thực thi vào. Đoạn code sau biểu diễn công việc khởi tạo một đối tượng
OleDbCommand:
Dim objCommand As OleDbCommand = New OleDbCommand()

a. Thuộc tính Connection:
Giống như đối tượng OleDbDataAdapter, có chứa nhiều thuộc tính mà
chúng ta phải đặt trước khi chúng ta có thể thực thi một câu query. Thuộc tính
đầu tiên là thuộc tính Connection. Thuộc tính này được đặt đến một đối tượng
mà đối tượng này chứa một kết nối hoạt động đến cơ sở dữ liệu lưu trữ như đối
tượng OleDbConnection.
Ví dụ: objCommand.Connection=objConnection

b. Thuộc tính CommandText và CommandType:
Thuộc tính kế tiếp mà ta phải đặt là thuộc tính CommandText. Thuộc
tính này xác đònh chuỗi SQL hoặc stored procedure được thực thi. Theo sau
thuộc tính này là thuộc tính CommandType, thuộc tính này xác đònh thuộc
tính CommandText được biên dòch như thế nào.
Ví dụ:
objCommand.Connection = objConnection
LUẬN VĂN TỐT NGHIỆP GVHD : NGUYỄN ANH TUẤN
SVTH : NGUYỄN THỊ NGỌC
LOAN


22

objCommand.CommandText = "DELETE FROM phim WHERE maphim
= ? "
objCommand.CommandType = CommandType.Text
hoặc:
objCommand.Connection = objConnection
objCommand.CommandText = "Deletephim"
objCommand.CommandType = CommandType.StoredProcedure

c. Thi hành lệnh:
Để thi hành một lệnh và trả về các kết quả, ta triệu gọi một trong các
phương thức sau:
 Phương thứcExecuteNonquery()
 ExecuteReader()
 ExecuteScalar()
 ExecuteXmlReader()
Phương thứcExecuteNonquery()
ExecuteNonquery() được dùng để thi hành các lệnh không trả về một
tệp kết quả, chẳng hạn như các lệnh cập nhật, chèn, hoặc xóa. Phương pháp
ExecuteNonquery() trả về một giá trò số nguyên nêu rõ số lượng các hàng mà
lệnh tác động. Với mọi kiểu lệnh khác, -1 được trả về. Trong mã sau đây,
ExecuteNonquery() trả về số lượng các hàng bò tác động bởi lệnh Delete
objConnection.Open()
objCommand.Connection = objConnection
objCommand.CommandText = "DELETE FROM phim
WHERE maphim =2 "
objCommand.CommandType = CommandType.Text
Try
objCommand.ExecuteNonQuery()

Catch err As OleDbException
MessageBox.Show(err.Message)
End Try
objConnection.Close()
Phương thức ExecuteReader():
ExecuteReader() trả về một đối tượng thực thi giao diện IdataReader, chẳng
hạn như một OleDbReader hoặc một SqlDataReader. Phương pháp
ExecuteReader() có thể chấp nhận một đối số tuỳ chọn, một thành viên của
kiểu điểm danh commandBehavior. Kiểu điểm danh commandBehavior chỉ
LUẬN VĂN TỐT NGHIỆP GVHD : NGUYỄN ANH TUẤN
SVTH : NGUYỄN THỊ NGỌC
LOAN

23

đònh một phần mô tả về kết quả và hiệu ứng trên cơ sở dữ liệu của lệnh truy
vấn; các thành viên của nó gồm:
 CloseConnection – tuyến nối được đóng khi DataReader kết hợp được
đóng.
 KeyInfo – lệnh truy vấn trả về thông tin khoá chính và cột. Lệnh truy vấn
được thi hành mà không khóa trên các hàng đã lựa. Khi dùng KeyInfo,
trình cung cấp dữ liệu SQL Server chắp một mệnh đề FOR BROWSE
vào câu lệnh đang được thi hành.
 SchemaOnly – lệnh chỉ trả về thông tin cột và không tác động gì đến cơ
sở dữ liệu.
 SequetialAccess – các kết quả của lệnh truy vấn được đọc tuần tự đến cấp
cột. Điều này cho phép đọc dữ liệu nhò phân lớn bằng các phương pháp
GetChars hoặc GetBytes.
 SingleResult – trả về một kết quả đơn lẻ.
 SingleRow –trả về một hàng dữ liệu đơn lẻ.

Mã sau đây minh họa cách thực thi phương pháp ExecuteReader():
Public Sub CreateMyOleDbDataReader(mySelectQuery As
String,myConnectionString As String)
Dim myConnection As New
OleDbConnection(myConnectionString)
Dim myCommand As New OleDbCommand(mySelectQuery,
myConnection)
myCommand.Connection.Open()
Dim myReader As OleDbDataReader =
myCommand.ExecuteReader(CommandBehavior.CloseConnection)
While myReader.Read()
Console.WriteLine(myReader.GetString(0))
End While
myReader.Close()
myConnection.Close()
End Sub
Phương thức ExecuteScalar():
ExecuteScalar() trả về cột đầu tiên của hàng đầu tiên trong tệp kết quả; tất
cả các cột và các hàng khác được bỏ qua. Phương pháp này đặc biệt hữu ích để
trả về các giá trò kết tập (aggregate value), chẳng hạn như kết quả của câu lệnh
SQL Select count (*). Dùng ExecuteScalar() ít thiên về mã hơn, và cũng yêu
cầu ít tài nguyên hệ thống hơn so với việc dùng ExecuteReader() rồi triệu gọi
phương pháp ExecuteReader.Read() để có giá trò trả về. Phương pháp
LUẬN VĂN TỐT NGHIỆP GVHD : NGUYỄN ANH TUẤN
SVTH : NGUYỄN THỊ NGỌC
LOAN

24

ExecuteReader() tạo một luồng bộ đọc dữ liệu trên tuyến nối, ngăn cấm mọi

thứ dùng tuyến nối cho đến khi đóng bộ đọc dữ liệu nhưng ExecuteScalar()
không làm như thế. Đoạn mã sau đây minh hoạ cách thực thi phương pháp
ExecuteScalar():
Public Sub CreateMyOleDbCommand(myScalarQuery As String,
myConnection As OleDbConnection)
Dim myCommand As New OleDbCommand(myScalarQuery,
myConnection)
myCommand.Connection.Open()
myCommand.ExecuteScalar()
myConnection.Close()
End Sub 'CreateMyOleDbCommand
Phương thức ExecuteXmlReader():
ExecuteXmlReader() chỉ sẳn có cho đối tượng SqlCommand. Tính chất
CommandText của một lớp SqlCommand đang triệu gọi phương pháp
ExecuteXmlReader() sẽ chứa một lệnh SQL với một mệnh đề FOR XML hợp
lệ hoặc một lệnh trả về dữ liệu ntext theo dạng thức XML hợp lệ.
Ví dụ:
Public Sub CreateMyXmlReader(myXmlQuery As String,
myConnection As SqlConnection)
Dim myCommand As SqlCommand = New
SqlCommand(myXmlQuery, myConnection)
Try
myConnection.Open()
Dim myXmlReader As System.Xml.XmlReader =
myCommand.ExecuteXmlReader()
' Always close the XmlReader when finished.
myXmlReader.Close()
Catch e As Exception
Console.WriteLine(e.ToString())
Finally

myConnection.Close()
End Try
End Sub

d.
Dùng các lớp SqlParameter và OleDbParameter
:
Các trình cung cấp dữ liệu .NET có gộp các lớp để tạo các đối tượng tham
số có thể được bổ sung vào ParametersCollection của một lệnh. Các tham số
được tạo bằng một tên, kiểu dữ liệu, phần chỉ đònh nhập hoặc xuất và một giá
LUẬN VĂN TỐT NGHIỆP GVHD : NGUYỄN ANH TUẤN
SVTH : NGUYỄN THỊ NGỌC
LOAN

25

trò nếu áp dụng được. Cả hai lớp SqlParameter và OleDbParameter vận hành
giống nhau : tuy nhiên, SqlParameter được truyền cho SQL Server dưới dạng
các tham số hữu danh và phải ánh xạ theo các tên tham số trong các stored
procedure.
Để tạo các lệnh truy vấn T-SQL được tham số hoá, ta bổ sung một hoặc
nhiều tham số vào câu lệnh T-SQL và bổ sung cùng các tham số vào sưu tập
Parameters của lệnh. Điều này được minh hoạ trong mã sau đây:
Dim objCommand As OleDbCommand = New OleDbCommand()
objConnection.Open()
objCommand.Connection = objConnection
objCommand.CommandText = "insert into loaiphim" & _
"(tenlp) values(?);"
objCommand.CommandType = CommandType.Text
objCommand.Parameters.Add(New OleDbParameter())

objCommand.Parameters.Item(0).Direction =
ParameterDirection.Input
objCommand.Parameters.Item(0).DbType = DbType.String
objCommand.Parameters.Item(0).Size = 30
objCommand.Parameters.Item(0).Value = txtTenLP.Text
Try
objCommand.ExecuteNonQuery()
Catch err As OleDbException
MessageBox.Show(err.Message)
End Try
objConnection.Close()













×