01/10/2010
Khoa CNTT-ĐH.KHTN
1. MICROSOFT .NET FRAMEWORK
Lập Trình Ứng Dụng Quản Lý 1
Chương 5:
ADO.NET (tt)
VB
C++
C#
J#
…
Common Language Specification
Windows®
Forms
ASP.NET
Web Forms Web Services
ADO.NET and XML
GV. Trương Phước Lộc
Base Class Library
Common Language Runtime
Operating System
GV. Trương Phước Lộc
ThS. Nguyễn Tấn Trần Minh Khang
2
Khoa CNTT-ĐH.KHTN
2. THE MICROSOFT PLATFORM
3. VAI TRÒ CỦA ADO.NET
Windows
Applications
devices
Operations
infrastructure
Khoa CNTT-ĐH.KHTN
Application
infrastructure
Web
Applications
Information
worker
infrastructure
ADO.NET
DBMS
DB
XML Web
Services
GV. Trương Phước Lộc
3
ThS. Nguyễn Tấn Trần Minh Khang
Khoa CNTT-ĐH.KHTN
4. ADO.NET DATA PROVIDER
GV. Trương Phước Lộc
ThS. Nguyễn Tấn Trần Minh Khang
4
5. CÁC BƯỚC KHI
TRUY XUẤT DỮ LIỆU
Khoa CNTT-ĐH.KHTN
ADO.NET Data Provider
DBMS
Data
Source
Connection
Command
Data
Reader
Data
Adaptor
Connection
Data
Adapter
Dataset
Web
Form
Win
Form
Specific file
OleDbConnection Object
DB
Application
Data
Set
Application
Handles data transfer and provides data for dataset; uses SQL
Actual data, can contain multiple tables
Bound controls display data
GV. Trương Phước Lộc
5
ThS. Nguyễn Tấn Trần Minh Khang
GV. Trương Phước Lộc
6
ThS. Nguyễn Tấn Trần Minh Khang
1
01/10/2010
Khoa CNTT-ĐH.KHTN
5. CÁC BƯỚC KHI
TRUY XUẤT DỮ LIỆU
GV. Trương Phước Lộc
ThS. Nguyễn Tấn Trần Minh Khang
7
Khoa CNTT-ĐH.KHTN
6. MỘT KIẾN TRÚC
THAM KHẢO
Presentation Tier
Windows
Forms
Dataset
Web
Forms
Dataset
GV. Trương Phước Lộc
Business Tier
XML
Data Tier
Data Object
(Class)
Dataset
XML
XML
XML
Data
Source
Data
Adapter
9
6. MỘT KIẾN TRÚC
THAM KHẢO
ThS. Nguyễn Tấn Trần Minh Khang
Khoa CNTT-ĐH.KHTN
• Trong lớp Presentation Layer có 2 thành phần
chính là User Interface Components và User
Interface Process Components.
• User Interface 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 VB.NET thì những
thành phần này có thể là các TextBox, các
Button, DataGrid…
GV. Trương Phước Lộc
11
ThS. Nguyễn Tấn Trần Minh Khang
6. MỘT KIẾN TRÚC
THAM KHẢO
GV. Trương Phước Lộc
8
6. MỘT KIẾN TRÚC
THAM KHẢO
Khoa CNTT-ĐH.KHTN
ThS. Nguyễn Tấn Trần Minh Khang
Khoa CNTT-ĐH.KHTN
• Presentation Layer: làm nhiệm vụ giao tiếp 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 cấp.
• Trong .NET thì ta có thể dùng Windows Forms,
ASP.NET hay Mobile Forms để hiện thực lớp
này.
GV. Trương Phước Lộc
10
6. MỘT KIẾN TRÚC
THAM KHẢO
ThS. Nguyễn Tấn Trần Minh Khang
Khoa CNTT-ĐH.KHTN
• User Interface 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ụ User Interface Process Components 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…
GV. Trương Phước Lộc
12
ThS. Nguyễn Tấn Trần Minh Khang
2
01/10/2010
6. MỘT KIẾN TRÚC
THAM KHẢO
Khoa CNTT-ĐH.KHTN
• Lưu ý: trong lớp Presentation Layer 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ó.
GV. Trương Phước Lộc
13
6. MỘT KIẾN TRÚC
THAM KHẢO
ThS. Nguyễn Tấn Trần Minh Khang
Khoa CNTT-ĐH.KHTN
• 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.
GV. Trương Phước Lộc
15
6. MỘT KIẾN TRÚC
THAM KHẢO
ThS. Nguyễn Tấn Trần Minh Khang
Khoa CNTT-ĐH.KHTN
• 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.
• Business Components 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).
• Business Components ngồi ra cịn 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.
GV. Trương Phước Lộc
17
ThS. Nguyễn Tấn Trần Minh Khang
6. MỘT KIẾN TRÚC
THAM KHẢO
Khoa CNTT-ĐH.KHTN
• Lớp Business Logic Layer (BLL) 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 BLL 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ụ thanh tóan trực tuyến như VeriSign,
Paypal).
GV. Trương Phước Lộc
14
6. MỘT KIẾN TRÚC
THAM KHẢO
ThS. Nguyễn Tấn Trần Minh Khang
Khoa CNTT-ĐH.KHTN
• 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 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.
GV. Trương Phước Lộc
16
6. MỘT KIẾN TRÚC
THAM KHẢO
ThS. Nguyễn Tấn Trần Minh Khang
Khoa CNTT-ĐH.KHTN
• Trong ứng dụng lớp Business Components sẽ
chứa các thành phần là CategoryService và
NewsService làm nhiệm vụ cung cấp các dịch
vụ quản lý chuyên mục và xử lý các bản tin
(thêm, xóa, sửa, xem chi tiết, lấy danh sách…).
GV. Trương Phước Lộc
18
ThS. Nguyễn Tấn Trần Minh Khang
3
01/10/2010
6. MỘT KIẾN TRÚC
THAM KHẢO
Khoa CNTT-ĐH.KHTN
• Lớp Data Tier 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 thường Data Tier 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 Data Tier có các thành phần chính là
Data Access Logic, Data Sources, Servive
Agents.
GV. Trương Phước Lộc
19
Khoa CNTT-ĐH.KHTN
7. ADO.NET
OBJECT MODEL
DataSet
DataTableCollection
DataTable
.NET Data Provider
Connection
DataAdapter
Transaction
ThS. Nguyễn Tấn Trần Minh Khang
SelectCommand
InsertCommand
DataColumnCollection
UpdateCommand
ConstraintCollection
DataReader
DeleteCommand
GV. Trương Phước Lộc
20
Database
Manages the connection
to a database
Connection
Executes a query command
on the database
Command
Exchanges data between
the data set and the database
DataRelationCollection
Provides efficient access to a
stream of read-only data
XML
Database
DataReader
21
22
ThS. Nguyễn Tấn Trần Minh Khang
Khoa CNTT-ĐH.KHTN
8. CONNECTION
Fill
DataSet
Update
Errors Collection
• Vai trị của Connection trong ADO.NET là tạo
kết nối giữa ứng dụng và “nguồn dữ liệu”
(Data Source).
Parameters
Data Source
DeleteCo
mmand
Command
Connection
InsertCo
mmand
UpdateCo
mmand
DataAdapter
SelectCo
mmand
DeleteCo
mmand
InsertCo
mmand
UpdateCo
mmand
SelectCo
mmand
GV. Trương Phước Lộc
Khoa CNTT-ĐH.KHTN
7. ADO.NET
OBJECT MODEL
DataAdapter
ThS. Nguyễn Tấn Trần Minh Khang
ThS. Nguyễn Tấn Trần Minh Khang
Khoa CNTT-ĐH.KHTN
7. ADO.NET
OBJECT MODEL
DataAdapter
GV. Trương Phước Lộc
Khoa CNTT-ĐH.KHTN
• 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.
DataRowCollection
Parameters
Command
6. MỘT KIẾN TRÚC
THAM KHẢO
Fill
DataSet
Update
Errors Collection
Command
Connection
Parameters
Data Source
GV. Trương Phước Lộc
23
ThS. Nguyễn Tấn Trần Minh Khang
GV. Trương Phước Lộc
24
ThS. Nguyễn Tấn Trần Minh Khang
4
01/10/2010
Khoa CNTT-ĐH.KHTN
8. CONNECTION
8. CONNECTION
• Vai trị của Connection trong ADO.NET là tạo
kết nối giữa ứng dụng và “nguồn dữ liệu”
(Data Source).
• Data Provider: Các Data Provider có sẵn trong
ADO.NET là:
▫ System.Data.OleDb
▫ System.Data.SqlClient
• Ứng với mỗi Data Provider chúng ta có một lớp
Connection tương ứng.
▫ System.Data.OleDb.OleDbConnection
▫ System.Data.SqlClient.SqlConnection
GV. Trương Phước Lộc
Khoa CNTT-ĐH.KHTN
25
ThS. Nguyễn Tấn Trần Minh Khang
• Chúng
ta
có
thể
sử
dụng
System.Data.OleDb.OleDbConnection cho
mọi
“nguồn dữ liệu” (Data Source).
• Ngồi SQL Server Provider, ADO.NET cịn hỗ trợ
một số Data Provider khác:
▫ System.Data.OracleClient
qua
tập
tin
System.Data.OracleClient.dll cho dữ liệu nguồn theo
chuẩn của công ty Oracle.
▫ Microsoft.Data.Odbc
qua
tập
tin
Microsoft.Data.Odbc.dll cho ODBC.
▫ Microsoft.Data.SqlXml
qua
tập
tin
Microsoft.Data.SqlXml.dll cho Xml trên SQL server.
GV. Trương Phước Lộc
26
ThS. Nguyễn Tấn Trần Minh Khang
Khoa CNTT-ĐH.KHTN
8. CONNECTION
8. CONNECTION
• Connection String: trước khi thực hiện kết nối,
ta cần khai báo các thơng tin cần thiết cho
Connection
thơng
qua
thuộc
tính
ConnectionString.
• Cách thức khai báo ConnectionString thay đổi
tùy thuộc vào Data Provider.
GV. Trương Phước Lộc
Khoa CNTT-ĐH.KHTN
27
ThS. Nguyễn Tấn Trần Minh Khang
• Tạo ConnectionString và tạo đối tượng kết nối
cho “nguồn dữ liệu” là Access.
1.Imports System.Data.OleDb
2.Dim strConnection As String =
"Provider=Microsoft.Jet.OLEDB.4.0”&_
“;Data Source=“ &
<Đường dẫn>
3.Dim cnn As New OleDbConnection
(strConnection)
4.…
5.cnn.Close()
GV. Trương Phước Lộc
28
ThS. Nguyễn Tấn Trần Minh Khang
Khoa CNTT-ĐH.KHTN
8. CONNECTION
8. CONNECTION
• Tạo ConnectionString và tạo đối tượng kết nối
cho “nguồn dữ liệu” là Oracle.
1.Imports System.Data.OleDb
2.Dim strConnection As String =
"Provider=MSDAORA.1” &_
“; UserID” &_
<Tên người dùng> &_
“;Password=“ &_
<Mật khẩu> &_
“;Data Source=“ &_
<Đường dẫn>
3.Dim cnn As New OleDbConnection
(strConnection)
4.…
5.cnn.Close()
GV. Trương Phước Lộc
Khoa CNTT-ĐH.KHTN
29
ThS. Nguyễn Tấn Trần Minh Khang
• Tạo ConnectionString và tạo đối tượng kết nối cho
“nguồn dữ liệu” là SQL Server.
• Cách 01
1.Imports System.Data.SqlClient
2.Dim strConnection As String =
<Địa chỉ TCP/IP hay tên máy> &_
“Initial Catalog=“ &_
<Tên Database> &_
“;User ID=“ &_
<Tên người dùng> &_
“;Password =“ &_
<Mật khẩu>
3.Dim cnn As New SqlConnection
(strConnection)
4.…
5.cnn.Close()
GV. Trương Phước Lộc
30
“DataSource=” &_
ThS. Nguyễn Tấn Trần Minh Khang
5
01/10/2010
Khoa CNTT-ĐH.KHTN
8. CONNECTION
8. CONNECTION
• Tạo ConnectionString và tạo đối tượng kết nối
cho “nguồn dữ liệu” là SQL Server.
• Cách 02
1.Imports System.Data.SqlClient
2.Dim strConnection As String =
“DataSource=” &_
<Địa chỉ TCP/IP hay tên máy> &_
“Initial Catalog=“ &_
<Tên Database> &_
“;Integrated Security = SSPI”
3.Dim cnn As New SqlConnection
(strConnection)
4.…
5.cnn.Close()
GV. Trương Phước Lộc
Khoa CNTT-ĐH.KHTN
31
ThS. Nguyễn Tấn Trần Minh Khang
• Các thuộc tính của Connection
▫ Database (thuộc tính chỉ đọc): Tương ứng với
Initial Catalog (SQL) hay tên database muốn làm
việc (OLEDB).
▫ DataSource (thuộc tính chỉ đọc): Tương ứng với
DataSource (OLEDB và SQL).
▫ Provider (thuộc tính chỉ đọc): Tương ứng với
Provider.
GV. Trương Phước Lộc
32
ThS. Nguyễn Tấn Trần Minh Khang
Khoa CNTT-ĐH.KHTN
8. CONNECTION
8. CONNECTION
• Các thuộc tính của Connection
• Các phương thức trên Connection
▫ State: Thuộc tính State thể hiện tình trạng kết nối
của Connection. Thuộc tính này sẽ nhận một
trong các giá trị sau:
Broken: Kết nối với nguồn dữ liệu đã bị ngắt.
Closed: Kết nối đã đóng.
Connecting: Đang kết nối với nguồn dữ liệu.
Executing: Kết nối đang thực hiện một lệnh.
Fetching: Kết nối đang truy xuất dữ liệu.
Open: Kết nối đang mở.
GV. Trương Phước Lộc
Khoa CNTT-ĐH.KHTN
33
ThS. Nguyễn Tấn Trần Minh Khang
▫
▫
▫
▫
▫
▫
Phương thức
Phương thức
Phương thức
Phương thức
Phương thức
Phương thức
GV. Trương Phước Lộc
BeginTransaction:
ChangeDatabase:
Close:
CreateCommand:
Dispose:
Open:
34
ThS. Nguyễn Tấn Trần Minh Khang
Khoa CNTT-ĐH.KHTN
8.1 TRANSACTION
8.1 TRANSACTION
• Transaction: Giao tác là quá trình cập nhật tạm
thời các sửa đổi trên nguồn dữ liệu và chỉ cập
nhật thật sự khi phương thức Commit của giao
tác được gọi hoặc phục hồi lại những gì đã thực
hiện trên dữ liệu qua phương thức Rollback.
• Transaction được tạo ra bằng cách gọi thực
hiện phương thức BeginTransaction.
• Tùy theo loại Connection tương ứng mà
phương thức BeginTransaction sẽ trả về một
OleDbTransaction hay SqlTransaction.
GV. Trương Phước Lộc
35
Khoa CNTT-ĐH.KHTN
ThS. Nguyễn Tấn Trần Minh Khang
• Tạo Transaction với OleDbConnection có 2
cách khác nhau.
• Cách 01
1.Dim <Transaction> as OleDbTransaction
= <connection>.BeginTransaction()
• Cách 02
1.Dim <Transaction> as OleDbTransaction
= <connection>.BeginTransaction
(IsolationLevel)
• <IsolationLevel>: định tính chất của Transaction.
GV. Trương Phước Lộc
36
ThS. Nguyễn Tấn Trần Minh Khang
6
01/10/2010
Khoa CNTT-ĐH.KHTN
8.1 TRANSACTION
8.1 TRANSACTION
• Tạo Transaction với SqlConnection có 4 cách
khác nhau.
• Cách 01 (Tương tự OleDbConnection)
1.Dim <Transaction> as OleDbTransaction
= <connection>.BeginTransaction()
• Cách 02 (Tương tự OleDbConnection)
1.Dim <Transaction> as OleDbTransaction
= <connection>.BeginTransaction
(IsolationLevel)
• <IsolationLevel>: định tính chất của Transaction.
GV. Trương Phước Lộc
37
Khoa CNTT-ĐH.KHTN
ThS. Nguyễn Tấn Trần Minh Khang
• Tạo Transaction với SqlConnection có 4 cách
khác nhau.
• Cách 03
1. Dim <Transaction> as SqlTransaction
= <connection>.BeginTransaction
(<Tên giao tác>)
• Cách 04
1. Dim <Transaction> as SqlTransaction
= <connection>.BeginTransaction
(<Tên giao tác>,<IsolationLevel>)
GV. Trương Phước Lộc
ThS. Nguyễn Tấn Trần Minh Khang
38
Khoa CNTT-ĐH.KHTN
8.1 TRANSACTION
8.1 TRANSACTION
▫ IsolationLevel có các giá trị sau:
• Các thuộc tính của Transaction
▫ Connection: Thuộc tính này xác định Connection
kết hợp với giao tác.
▫ IsolationLevel: Thuộc tính này cho biết giá trị của
IsolationLevel (mức độ cô lập).
Trong .NET data provider sử dụng giá trị này để thực hiện giao
tác.
IsolationLevel có hiệu lực cho đến khi được thay đổi giá trị và
có thể thay đổi tại bất cứ thời điểm nào.
. Giá trị mới sẽ được dùng trong thời gian thực hiện giao tác.
. Nếu việc thay đổi xảy ra trong khi giao tác đang diễn biến, giá
trị có hiệu lực cho các lệnh còn lại trong giao tác.
GV. Trương Phước Lộc
39
Khoa CNTT-ĐH.KHTN
ThS. Nguyễn Tấn Trần Minh Khang
Chaos
ReadCommitted
ReadUnCommitted
RepeatableRead
Serializable
Unspecified
GV. Trương Phước Lộc
ThS. Nguyễn Tấn Trần Minh Khang
40
Khoa CNTT-ĐH.KHTN
8.1 TRANSACTION
8.1 TRANSACTION
• Các phương thức của Transaction
▫ Begin: Bắt đầu một giao tác lồng.
▫ Commit: Cập nhật giao tác đang xảy ra.
▫ Rollback: Phục hồi những thay đổi giao tác đã
thực hiện.
GV. Trương Phước Lộc
41
Khoa CNTT-ĐH.KHTN
ThS. Nguyễn Tấn Trần Minh Khang
• Sử dụng ToolBox
OleDbConnection.
GV. Trương Phước Lộc
để
42
tạo
đối
tượng
ThS. Nguyễn Tấn Trần Minh Khang
7
01/10/2010
Khoa CNTT-ĐH.KHTN
9. COMMAND
9. COMMAND
• Sau khi tạo kết nối với “nguồn dữ liệu”, mọi thao
tác trên “nguồn dữ liệu” được kết nối đều được
thực hiện thơng qua Command.
DeleteCo
mmand
InsertCo
mmand
UpdateCo
mmand
SelectCo
mmand
DataAdapter
Khoa CNTT-ĐH.KHTN
Fill
DataSet
Update
Errors Collection
• Sau khi tạo kết nối với “nguồn dữ liệu”, mọi thao
tác trên “nguồn dữ liệu” được kết nối đều được
thực hiện thơng qua Command.
• Tùy theo loại đối tượng Connection, đối tượng
Command thuộc tên miền như sau:
▫ Sytem.Data.OleDb.OleDbCommand.
▫ Sytem.Data.SqlClient.SqlCommand.
Command
Connection
Parameters
Data Source
GV. Trương Phước Lộc
43
ThS. Nguyễn Tấn Trần Minh Khang
GV. Trương Phước Lộc
44
ThS. Nguyễn Tấn Trần Minh Khang
Khoa CNTT-ĐH.KHTN
9. COMMAND
9. COMMAND
• Tạo đối tượng Command ta có thể thực hiện
theo một trong những cách thức như sau:
▫ Cách 1:
• Tạo đối tượng Command ta có thể thực hiện
theo một trong những cách thức như sau:
▫ Cách 3:
1.Dim <Biến Command> As New
<Loại>Command()
2.<Biến Command>.Connection =
<Biến Connection>
3.<Biến Command>.CommandText=<Lệnh>
1.Dim <Biến Command> As New
<Loại>Command(<Lệnh>,<Biến Connection>)
▫ Cách 4:
2.Dim <Biến Command> As
<Loại>Command =
<Biến Connection>.CreateCommand()
3.<Biến Command>.CommandText=<Lệnh>
▫ Cách 2:
4.Dim <Biến Command> As New
<Loại>Command(<Lệnh>)
5.<Biến Command>.Connection =
<Biến Connection>
GV. Trương Phước Lộc
Khoa CNTT-ĐH.KHTN
45
ThS. Nguyễn Tấn Trần Minh Khang
GV. Trương Phước Lộc
46
Khoa CNTT-ĐH.KHTN
9. COMMAND
Khoa CNTT-ĐH.KHTN
9. COMMAND
• Các thuộc tính của đối tượng Command
▫ CommandText (thuộc tính đọc ghi): Lệnh SQL
hoặc tên stored procedure muốn thực hiện trên
nguồn dữ liệu.
▫ CommandType: Thuộc tính cho biết nội dung
CommandText là gì với các giá trị sau:
▫ Text (mặc định): Một câu lệnh SQL.
▫ Storeprocedure: Tên một thủ tục nội.
▫ TableDirect: Tên của bảng. Khi CommandType
có giá trị này, CommandText là tên của một bảng.
Khi command thực hiện sẽ trả về đủ các dòng và
các cột (OleDbCommand)
GV. Trương Phước Lộc
ThS. Nguyễn Tấn Trần Minh Khang
47
ThS. Nguyễn Tấn Trần Minh Khang
• Các thuộc tính của đối tượng Command
▫ Connection: Đối tượng Connection sử dụng cho
command.
▫ Parameters: Tập hợp các tham số dùng trong
command.
▫ Transaction: Giao tác mà trên đó command thực
hiện.
GV. Trương Phước Lộc
48
ThS. Nguyễn Tấn Trần Minh Khang
8
01/10/2010
Khoa CNTT-ĐH.KHTN
9. COMMAND
Khoa CNTT-ĐH.KHTN
9. COMMAND
• Lớp đối tượng Parameter: Lệnh SQL trong
CommandText có thể sử dụng các dấu hỏi (?)
thay thế cho trị chưa xác định và khi thực hiện
sẽ dùng đối tượng Parameter để truyền giá trị
vào chỗ các dấu hỏi.
• Tùy theo đối tượng Command, Parameter sẽ
khai báo từ 1 trong 2 lớp sau:
• Cú pháp khai báo đối tượng
OledbParameter
thuộc lớp
1.Dim <Biến Parameter> As New
OledbParameter
2.Dim <Biến Parameter> As New
OledbParameter(<Tên>)
3.Dim <Biến Parameter> As New
OledbParameter(<Tên>,<Giá Trị>)
▫ OledbParameter
▫ SqlParameter
GV. Trương Phước Lộc
49
ThS. Nguyễn Tấn Trần Minh Khang
GV. Trương Phước Lộc
50
ThS. Nguyễn Tấn Trần Minh Khang
Khoa CNTT-ĐH.KHTN
9. COMMAND
Khoa CNTT-ĐH.KHTN
9. COMMAND
• Cú pháp khai báo đối tượng SqlParameter
• Các thuộc tính của Parameter
▫ Direction (thuộc tính đọc ghi): Giá trị cho biết loại
tham số với các giá trị sau:
1.Dim <Biến Parameter> As New
SqlParameter
2.Dim <Biến Parameter> As New
SqlParameter(<Tên>)
3.Dim <Biến Parameter> As New
SqlParameter(<Tên>,<Giá Trị>)
Input
InputOutput
Output
ReturnValue
▫ OledbType hoặc SqlType (thuộc tính đọc ghi):
Kiểu dữ liệu OleDb hoặc SqlDb của tham số.
▫ ParameterName (thuộc tính đọc ghi): Tên tham
số.
▫ Value (thuộc tính đọc ghi): Giá trị tham số.
GV. Trương Phước Lộc
51
ThS. Nguyễn Tấn Trần Minh Khang
GV. Trương Phước Lộc
52
ThS. Nguyễn Tấn Trần Minh Khang
Khoa CNTT-ĐH.KHTN
9. COMMAND
Khoa CNTT-ĐH.KHTN
9. COMMAND
• Thực hiện Command: Command có nhiều
phương thức thực hiện khác nhau như sau:
▫ ExecuteNonquery
▫ ExecuteReader
▫ ExecuteScalar
• ExecuteNonquery: Để gọi thực hiện các câu
truy vấn cập nhật INSERT, UPDATE,
DELETE,…hay thủ tục nội không trả về dữ liệu
hoặc khi chúng ta không quan tâm đến kiểu dữ
liệu trả về.
• Với các lệnh INSERT, UPDATE, DELETE
phương thức trên trả về số dòng bị ảnh hưởng
của câu lệnh command, ngược lại phương thức
trả về giá trị -1.
• Cú pháp
1.<Biến Command>.ExecuteNonQuery()
GV. Trương Phước Lộc
53
ThS. Nguyễn Tấn Trần Minh Khang
GV. Trương Phước Lộc
54
ThS. Nguyễn Tấn Trần Minh Khang
9
01/10/2010
Khoa CNTT-ĐH.KHTN
9. COMMAND
9. COMMAND
• ExecuteReader: Phương thức này trả về một
đối tượng DataReader để đọc dữ liệu mỗi lần
một dòng với phương thức Read().
• DataReader đọc dữ liệu trực tiếp từ nguồn dữ
liệu nên phải duy trì kết nối cho đến khi dữ liệu
được đọc xong.
• Cú pháp
1.…<Biến Command>.ExecuteReader()
2.…<Biến Command>.ExecuteReader
(<Behavior>)
GV. Trương Phước Lộc
Khoa CNTT-ĐH.KHTN
55
ThS. Nguyễn Tấn Trần Minh Khang
• Cú pháp
1.…<Biến Command>.ExecuteReader
(<Behavior>)
• Các giá trị của Behavior
▫ CloseConnection: Khi đối tượng DataReader
đóng lại, Connection tự động đóng theo.
▫ Default: Tương tự như khi gọi phương thức
ExcuteReader() khơng có tham số.
▫ SchemaOnly: Truy vấn chỉ trả về cấu trúc các cột
và không làm ảnh hưởng đến các thao tác khác.
GV. Trương Phước Lộc
56
ThS. Nguyễn Tấn Trần Minh Khang
Khoa CNTT-ĐH.KHTN
9. COMMAND
9. COMMAND
• ExecuteScalar: Phương thức ExecuteScalar
thực hiện lệnh của Command và chỉ trả về giá trị
của cột đầu tiên và dòng đầu tiên.
• Phương thức ExecuteScalar thường được gọi
khi muốn Command thực hiện các hàm tính
tốn thống kê SUM, COUNT, AVG, MAX, MIN
…trên “nguồn dữ liệu” ngay lúc thực thi.
• Cú pháp:
1. …<Biến Command>.ExecuteScalar()
GV. Trương Phước Lộc
Khoa CNTT-ĐH.KHTN
57
ThS. Nguyễn Tấn Trần Minh Khang
• DataReader: là đối tượng truy cập “nguồn dữ
liệu” trực tiếp.
• DataReader sử dụng cursor phía Server trong
suốt q trình đọc dữ liệu.
• DataReader thuộc tên miền
▫ System.Data.OledbDataReader
▫ System.Data.SqlDataReader
• Trong khi DataReader đang mở, các thao tác
khác trên “nguồn dữ liệu” đều khơng thể thực
hiện cho đến khi DataReader đóng lại bằng
phương thức Close.
GV. Trương Phước Lộc
58
Khoa CNTT-ĐH.KHTN
9. COMMAND
Khoa CNTT-ĐH.KHTN
9. COMMAND
• Các thuộc tính của DataReader
▫ FieldCount: Trả về số cột trên dòng hiện hành
của DataReader.
▫ IsClosed: Cho biết DataReader đã được đóng
chưa.
▫ Item: Trị của cột truyền vào. Tham số truyền có
thể là tên cột hoặc chỉ số của cột (chỉ số được
đánh số từ 0).
GV. Trương Phước Lộc
ThS. Nguyễn Tấn Trần Minh Khang
59
ThS. Nguyễn Tấn Trần Minh Khang
• Các phương thức của DataReader
▫ Close: Đóng DataReader.
▫ GetFieldType: Trả về kiểu dữ liệu của cột truyền
vào.
▫ GetName: Trả về tên của cột truyền vào.
▫ GetOrdinal: Trả về số thứ tự của cột truyền vào.
▫ GetSchema Table: Trả về bảng chứa thông tin
mô tả cột của DataReader.
▫ GetValue: Trả về giá trị trên cột tuyền vào.
▫ Read: Di chuyển đến dòng kế tiếp và trả về True
nếu còn dòng để di chuyển, ngược lại trả về
False.
GV. Trương Phước Lộc
60
ThS. Nguyễn Tấn Trần Minh Khang
10
01/10/2010
Khoa CNTT-ĐH.KHTN
10. DATA ADAPTER
Fill
DataSet
Update
Errors Collection
Command
Fill
Connection
Errors Collection
Parameters
Connection
Parameters
Data Source
61
ThS. Nguyễn Tấn Trần Minh Khang
GV. Trương Phước Lộc
62
Khoa CNTT-ĐH.KHTN
10. DATA ADAPTER
▫ SelectCommand: cho phép lấy thông tin từ
“nguồn dữ liệu” về.
▫ InsertCommand: cho phép thêm dữ liệu vào
bảng trong “nguồn dữ liệu”.
▫ UpdatedCommand: cho phép sửa đổi dữ liệu
trên bảng trong “nguồn dữ liệu”.
▫ DeleteCommand: cho phép hủy bỏ dữ liệu trên
bảng trong “nguồn dữ liệu”.
63
Khoa CNTT-ĐH.KHTN
ThS. Nguyễn Tấn Trần Minh Khang
• Thơng thường ta chỉ cần khai báo nội dung lệnh
cho SelectCommand.
• Các nội dung của các command cịn lại có thể
được
phát
sinh
nhờ
đối
tượng
CommandBuilder dựa vào nội dung của
SelectCommand.
GV. Trương Phước Lộc
64
Khoa CNTT-ĐH.KHTN
10. DATA ADAPTER
▫ Cách 1:
New <loại> DataAdapter()
▫ Cách 2:
New <loại> DataAdapter(<ĐTSC>)
Trong đó: ĐTSC tương ứng là “Đối tượng
SelectCommand”. Đối tượng này có sẵn với nội dung
lệnh truy xuất.
65
ThS. Nguyễn Tấn Trần Minh Khang
Khoa CNTT-ĐH.KHTN
10. DATA ADAPTER
• Tạo DataAdapter: Tương ứng với đối tượng
Command chúng ta cần khai báo rõ DataAdapter sử
dụng
theo
Data
Provider
nào:
SqlDataAdapter or OledbDataAdapter.
• Cú pháp tạo DataAdapter:
GV. Trương Phước Lộc
ThS. Nguyễn Tấn Trần Minh Khang
10. DATA ADAPTER
• DataAdapter là một bộ gồm 4 đối tượng
command:
GV. Trương Phước Lộc
DataSet
Update
Command
Data Source
GV. Trương Phước Lộc
DataAdapter
SelectCo
mmand
DeleteCo
mmand
InsertCo
mmand
UpdateCo
mmand
SelectCo
mmand
DataAdapter
• Đối tượng DataAdapter cho phép chúng ta lấy
cấu trúc và dữ liệu của các bảng trong “nguồn
dữ liệu”.
DeleteCo
mmand
• DataAdapter dùng để lấy dữ liệu từ “nguồn dữ
liệu” (DataSource) về cho ứng dụng.
InsertCo
mmand
UpdateCo
mmand
10. DATA ADAPTER
Khoa CNTT-ĐH.KHTN
ThS. Nguyễn Tấn Trần Minh Khang
• Cú pháp tạo DataAdapter:
▫ Cách 3:
New <loại>DataAdapter(<lệnh>,
<Đối Tượng Connection>)
▫ Cách 4:
New <loại>DataAdapter(<lệnh>,
<chuỗi Connection>)
• <lệnh>: Câu lệnh SQL, tên storedprocedure.. để thực hiện truy xuất
từ nguồn dữ liệu.
• <Đối tượng Connection>: Đối tượng Connection trên đó
DataAdapter thao tác với nguồn dữ liệu.
• <chuỗi Connection>: Chuỗi ConnectionString để tạo đối tượng
Connection.
GV. Trương Phước Lộc
66
ThS. Nguyễn Tấn Trần Minh Khang
11
01/10/2010
Khoa CNTT-ĐH.KHTN
10. DATA ADAPTER
Khoa CNTT-ĐH.KHTN
10. DATA ADAPTER
• DataAdapter chỉ thao tác được với nguồn dữ
liệu qua một đối tượng Connection đang kết nối.
• Đặt biệt khi Connection chưa mở, DataAdapter
sẽ tự động mở kết nối khi cần và tự động đóng
lại.
• Ngược lại khi một Connection đã mở sẵn, chúng
ta phải tự đóng kết nối, DataAdapter khơng thực
hiện tự động.
• Các thuộc tính chính của DataAdapter
▫ Thuộc tính ContinueUpdatedOnError: Chỉ định cách
thức xử lý khi DataAdapter cập nhật dữ liệu về
nguồn
dữ
liệu
bị
lỗi.
Nếu thuộc tính này nhận giá trị là True
DataAdapter sẽ bỏ qua dòng bị lỗi và tiếp tục cập
nhật các dịng kế tiếp. Lỗi phát sinh sẽ đưa vào
thuộc tính RowError của dịng bị lỗi.
Ngược lại nếu thuộc tính nhận giá trị là False sẽ
phát sinh Exception khi dòng bị lỗi.
GV. Trương Phước Lộc
67
ThS. Nguyễn Tấn Trần Minh Khang
GV. Trương Phước Lộc
68
Khoa CNTT-ĐH.KHTN
10. DATA ADAPTER
▫ Thuộc tính DeleteCommand: Đối tượng Command
chứa nội dung lệnh hủy các mẩu tin trên nguồn dữ
liệu.
▫ Thuộc tính InsertCommand: Đối tượng Command
chứa nội dung lệnh chèn các mẩu tin mới vào nguồn
dữ liệu.
▫ Thuộc tính SelectCommand: Đối tượng Command
chứa nội dung lệnh truy xuất các mẩu tin từ nguồn dữ
liệu.
▫ Thuộc tính UpdateCommand: Đối tượng Command
chứa nội dung lệnh cập nhật các mẩu tin vào nguồn
dữ liệu.
69
Khoa CNTT-ĐH.KHTN
10. DATA ADAPTER
• Các thuộc tính chính của DataAdapter
GV. Trương Phước Lộc
ThS. Nguyễn Tấn Trần Minh Khang
• Các thuộc tính chính của DataAdapter
▫ Thuộc tính TableMappings: Tập hợp các ánh xạ
tên bảng khi DataAdapter đỗ dữ liệu hay cấu trúc
vào đối tượng chứa.
GV. Trương Phước Lộc
70
Khoa CNTT-ĐH.KHTN
10. DATA ADAPTER
ThS. Nguyễn Tấn Trần Minh Khang
Khoa CNTT-ĐH.KHTN
10. DATA ADAPTER
• Các phương thức chính của DataAdaper.
▫
▫
▫
▫
ThS. Nguyễn Tấn Trần Minh Khang
• Tạo đối tượng DataAdapter bằng điều khiển
Lấy dữ liệu từ nguồn.
Lấy cấu trúc dữ liệu từ nguồn.
Tạo bộ lệnh cập nhật cho DataAdapter.
Cập nhật dữ liệu về nguồn
GV. Trương Phước Lộc
71
ThS. Nguyễn Tấn Trần Minh Khang
GV. Trương Phước Lộc
72
ThS. Nguyễn Tấn Trần Minh Khang
12
01/10/2010
Khoa CNTT-ĐH.KHTN
Khoa CNTT-ĐH.KHTN
10. DATA ADAPTER
Client
Server
DataSet
Fill
Data
DataAdapter
Database
Data
Update
DataTable
InsertCommand
UpdateCommand
DeleteCommand
GV. Trương Phước Lộc
73
ThS. Nguyễn Tấn Trần Minh Khang
GV. Trương Phước Lộc
74
ThS. Nguyễn Tấn Trần Minh Khang
Khoa CNTT-ĐH.KHTN
11. DATASET
Khoa CNTT-ĐH.KHTN
11. DATASET
Dataset
Dataset
DataRow
DataColumnCollection
ConstraintCollection
DataRow
DataSet Architecture
75
DataColumn
DataTable
DataRelationsCollection
GV. Trương Phước Lộc
DataColumn
DataTable
DataTableCollection
DataTable
DataRowCollection
ThS. Nguyễn Tấn Trần Minh Khang
DataSet Architecture
GV. Trương Phước Lộc
76
Khoa CNTT-ĐH.KHTN
11. DATASET
Khoa CNTT-ĐH.KHTN
11. DATASET
• DataSet là một mơ hình CSDL quan hệ thu nhỏ
đáp ứng nhu cầu của ứng dụng.
DataSet
DataRelationCollection
ExtendedPropeties
DataTableCollection
DataTable
ExtendedProperties
PrimaryKey
77
DeleteCo
mmand
InsertCo
mmand
UpdateCo
mmand
DataRowCollection
DataRow
SelectCo
mmand
DataAdapter
DataView
ChildRelations
ParentRelations
Constraints
GV. Trương Phước Lộc
ThS. Nguyễn Tấn Trần Minh Khang
Fill
DataSet
Update
Errors Collection
Command
DataColumnCollection
DataColumn
ExtendedProperties
ThS. Nguyễn Tấn Trần Minh Khang
Connection
Parameters
Data Source
GV. Trương Phước Lộc
78
ThS. Nguyễn Tấn Trần Minh Khang
13
01/10/2010
Khoa CNTT-ĐH.KHTN
11. DATASET
Khoa CNTT-ĐH.KHTN
11. DATASET
• DataSet là một mơ hình CSDL quan hệ thu nhỏ
đáp ứng nhu cầu của ứng dụng.
• DataSet chứa các bảng (DataTable), các quan
hệ (DataRelation) và các ràng buộc (Constraint).
• DataSet thuộc tên miền như sau:
System.Data.DataSet
Dataset
DataTableCollection
DataTable
DataRowCollection
DataColumnCollection
ConstraintCollection
• Ta có thể khai báo DataSet bằng một trong
những cách thức sau:
• Cách 1:
New System.Data.DataSet()
• Cách 2:
New System.Data.DataSet(<tên>)
trong đó <tên>: tên của DataSet
• Cách 3: Tạo DataSet bằng điều khiển trong
nhóm Data của ToolBox
DataRelationsCollection
GV. Trương Phước Lộc
79
ThS. Nguyễn Tấn Trần Minh Khang
GV. Trương Phước Lộc
80
ThS. Nguyễn Tấn Trần Minh Khang
Khoa CNTT-ĐH.KHTN
11. DATASET
11. DATASET
Thuộc tính
DataSetName
HasErrors
Mơ tả
Tên của DataSet (đọc ghi)
Giá trị cho biết có lỗi xảy ra trên một trong các bảng
của DataSet: True/False (chỉ đọc)
Relations
Tập hợp các quan hệ (DataRelation) một nhiều của
DataSet (chỉ đọc)
Tables
Tập hợp các bảng (DataTable) của DataSet (chỉ đọc)
Các thuộc tính chính của DataSet
GV. Trương Phước Lộc
Khoa CNTT-ĐH.KHTN
81
ThS. Nguyễn Tấn Trần Minh Khang
• Các phương thức của DataSet
▫
▫
▫
▫
▫
▫
▫
Thêm một bảng vào DataSet.
Thêm nhiều bảng vào DataSet.
Xóa một bảng khỏi DataSet
Kiểm tra một bảng có thuộc về DataSet.
Lấy chỉ số của bảng.
Lấy số lượng bảng chứa trong DataSet.
Lấy ra một bảng chứa trong DataSet.
GV. Trương Phước Lộc
82
ThS. Nguyễn Tấn Trần Minh Khang
Khoa CNTT-ĐH.KHTN
11. DATASET
11. DATASET
• Các phương thức của DataSet
▫
▫
▫
▫
▫
▫
▫
▫
▫
…
Kiểm tra dữ liệu của DataSet có thay đổi.
Lấy dòng dữ liệu đã thay đổi trong DataSet.
Cập nhật các thay đổi trên DataSet.
Hủy bỏ các thay đổi trên DataSet.
Xóa bỏ mọi dữ liệu trên DataSet.
Tạo một bản sao của DataSet.
Trộn dữ liệu bên ngồi vào trong DataSet.
Xóa bỏ DataSet.
GV. Trương Phước Lộc
Khoa CNTT-ĐH.KHTN
83
ThS. Nguyễn Tấn Trần Minh Khang
• Các phương thức của DataSet
▫
▫
▫
▫
▫
▫
▫
▫
…
Tạo một quan hệ giữa hai bảng trong DataSet.
Thêm nhiều quan hệ vào DataSet.
Xóa quan hệ khỏi DataSet.
Kiểm tra quan hệ có thuộc về DataSet.
Lấy chỉ số của quan hệ.
Lấy số lượng quan hệ trong DataSet.
Lấy ra một quan hệ trong DataSet
GV. Trương Phước Lộc
84
ThS. Nguyễn Tấn Trần Minh Khang
14
01/10/2010
Khoa CNTT-ĐH.KHTN
12. TYPED DATASET
12. TYPED DATASET
• Typed DataSet là một DataSet đã được định
sẵn cấu trúc của các bảng, các quan hệ, các
ràng buộc nhưng chưa có dữ liệu.
• Chúng ta có thể tham chiếu đến các bảng, các
cột bằng tên của chúng thay vì phải thơng qua
tập hợp.
• Do đã có cấu trúc, nên kiểu của các cột sẽ được
kiểm tra ngay khi biên dịch chứ không phải lúc
thực thi như DataSet thường.
GV. Trương Phước Lộc
85
Khoa CNTT-ĐH.KHTN
ThS. Nguyễn Tấn Trần Minh Khang
• Cách tạo Typed DataSet.
▫ Chọn Project\Add New Item\DataSet.
▫ Typed DataSet được lưu thành tập tin có đi là
.XSD
▫ Nhấn phải trên cửa sổ tiếp theo, chọn mục New
Element.
▫ Lần lượt đặt tên bảng, tên cột, kiểu dữ liệu
▫ Tiếp tục cho các bảng khác
GV. Trương Phước Lộc
86
ThS. Nguyễn Tấn Trần Minh Khang
Khoa CNTT-ĐH.KHTN
12. TYPED DATASET
12. TYPED DATASET
• Trong trường hợp ta tạo Typed DataSet nếu cấu
trúc các bảng giống cấu trúc có sẵn trong
CSDL, chúng ta có thể kéo cấu trúc các bảng
trong CSDL vào sơ đồ.
GV. Trương Phước Lộc
87
Khoa CNTT-ĐH.KHTN
ThS. Nguyễn Tấn Trần Minh Khang
• Tạo quan hệ giữa các bảng trong Typed
DataSet có thể thực hiện bằng một trong những
cách như sau:
▫ Cách 1: Chọn field trên bảng cha muốn thiết lập
quan hệ và thả treeb bảng con.
▫ Cách 2: Nhấn chuột phải trên bảng cha vào chọn
mục Add\New Relation.
▫ Cách 3: Kéo điều khiển Relation trong nhóm XML
Schema của Toolbox thả trên bảng muốn tạo
quan hệ.
GV. Trương Phước Lộc
88
ThS. Nguyễn Tấn Trần Minh Khang
Khoa CNTT-ĐH.KHTN
12. TYPED DATASET
• Lấy dữ liệu vào Typed DataSet: Khi chương
trình thực thi, dữ liệu khơng tự động lấy về
nhưng chúng ta phải sử dụng DataAdapter để
lấy dữ liệu nguồn vào DataSet.
GV. Trương Phước Lộc
89
ThS. Nguyễn Tấn Trần Minh Khang
Khoa CNTT-ĐH.KHTN
12. TYPED DATASET
• Hiển thị dữ liệu theo quan hệ: Nếu các bảng có
quan hệ, khi di chuyển trên bảng cha sẽ dẫn
đến việc di chuyển trên bảng con đến các dịng
tương ứng với mẫu tin trên bảng cha thơng qua
tên quan hệ.
GV. Trương Phước Lộc
90
ThS. Nguyễn Tấn Trần Minh Khang
15
01/10/2010
Khoa CNTT-ĐH.KHTN
12. TYPED DATASET
Khoa CNTT-ĐH.KHTN
Câu hỏi
• Chúng ta có thể sử dụng Typed DataSet thông
qua việc khai báo một biến từ lớp DataSet đã
tạo như sau:
Dim ds New <Tên lớp Typed DataSet>
• Các bảng và các cột trong Typed DataSet được
liệt kê trong danh sách thành phần của đối
tượng
• Ngồi các thuộc tính, phương thức, sự kiện mặc
nhiên kế thừa từ DataSet, những đối tượng này
cịn có những thuộc tính các bảng trong
DataSet, các cột trong bảng với tên và kiểu cụ
thể.
GV. Trương Phước Lộc
91
ThS. Nguyễn Tấn Trần Minh Khang
GV. Trương Phước Lộc
92
ThS. Nguyễn Tấn Trần Minh Khang
16