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:
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
.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
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.
để 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:
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
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
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ụ
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
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.
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
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
đượ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.
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
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
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
đầ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
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
' 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 =