Bài giảng Lập trình ứng dụng quản lý 1 - Chương 5: ADO.NET (Tiếp theo) - Trương Phước Lộc
01/10/2010
Khoa CNTT-ĐH.KHTN
1. MICROSOFT .NET FRAMEWORK
VB
C++
C#
J#
…
Lập Trình Ứng Dụng Quản Lý 1
Chương 5:
CommonLanguageSpecification
Windows®
Forms
ASP.NET
Web Forms Web Services
ADO.NET (tt)
ADO.NETand XML
Base Class Library
GV. Trương Phước Lộc
CommonLanguageRuntime
OperatingSystem
GV. Trương Phước Lộc
ThS. Nguyễn Tấn Trần MinhKhang
2
Khoa CNTT-ĐH.KHTN
Khoa CNTT-ĐH.KHTN
3. VAI TRÒ CỦAADO.NET
2. THE MICROSOFT PLATFORM
Windows
Applications
Web
Applications
DBMS
ADO.NET
DB
O
n
worker
infrastructure
infrastruinfrastructure
XML Web
Services
GV. Trương Phước Lộc
ThS. Nguyễn Tấn Trần MinhKhang
GV. Trương Phước Lộc
ThS. Nguyễn Tấn Trần MinhKhang
3
4
Khoa CNTT-ĐH.KHTN
Khoa CNTT-ĐH.KHTN
5. CÁC BƯỚC KHI
TRUY XUẤT DỮ LIỆU
4. ADO.NET DATA PROVIDER
Web
Form
ADO.NET Data Provider
Data
Adapter
Data
Source
DBMS
DB
Connection
Command
Connection
Dataset
Win
Form
Data
Reader
Data
Adaptor
Specific file
OleDbConnection Object
Handles data transfer and provides data for dataset; uses SQL
Data
Set
Application
5
Application
Actual data, can contain multiple tables
Bound controls display data
ThS. Nguyễn Tấn Trần MinhKhang
GV. Trương Phước Lộc
ThS. Nguyễn Tấn Trần MinhKhang
GV. Trương Phước Lộc
6
1
01/10/2010
Khoa CNTT-ĐH.KHTN
Khoa CNTT-ĐH.KHTN
5. CÁC BƯỚC KHI
TRUY XUẤT DỮ LIỆU
6. MỘT KIẾN TRÚC
THAM KHẢO
GV. Trương Phước Lộc
ThS. Nguyễn Tấn Trần MinhKhang
GV. Trương Phước Lộc
ThS. Nguyễn Tấn Trần MinhKhang
7
8
Khoa CNTT-ĐH.KHTN
Khoa CNTT-ĐH.KHTN
6. MỘT KIẾN TRÚC
THAM KHẢO
6. MỘT KIẾN TRÚC
THAM KHẢO
• 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
giao diện người sử dụng. Lớp n
các dịch vụ do lớp Business Lo
• Trong .NET thì ta có thể dùng W
ASP.NET hay Mobile Forms để
này.
Presentation Tier
Business Tier
Data Tier
Data Object
(Class)
Dataset
Windows
Forms
XML
Dataset
Data
Source
XML
Web
XML
XML
Forms
Data
Adapter
Dataset
GV. Trương Phước Lộc
ThS. Nguyễn Tấn Trần MinhKhang
GV. Trương Phước Lộc
ThS. Nguyễn Tấn Trần MinhKhang
9
10
Khoa CNTT-ĐH.KHTN
Khoa CNTT-ĐH.KHTN
6. MỘT KIẾN TRÚC
THAM KHẢO
• Trong lớp Presentation Layer có 2 thành phần
chính là User Interface Components và User
Interface Process Components
6. MỘT KIẾN TRÚC
THAM KHẢO
• 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 Compone
• User Interface Components là
chịu trách nhiệm thu thập và h
cho người dùng cuối. Trong VB
thành phần này có thể là cá
Button, DataGrid…
• Ví dụ User Interface Process C
trách nhiệm quản lý các màn hì
trong một loạt các thao tác định
bước trong một Wizard…
GV. Trương Phước Lộc
ThS. Nguyễn Tấn Trần MinhKhang
GV. Trương Phước Lộc
ThS. Nguyễn Tấn Trần MinhKhang
11
12
2
01/10/2010
Khoa CNTT-ĐH.KHTN
Khoa CNTT-ĐH.KHTN
6. MỘT KIẾN TRÚC
THAM KHẢO
• 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
của lớp Business Logic vì khi bạ
tiếp như vậy, bạn có thể bỏ qua
các logic nghiệp vụ mà ứng dụng
6. MỘT KIẾN TRÚC
THAM KHẢO
• Lớp Business Logic Layer (BLL) thực hiện các
nghiệp vụ chính của hệ thống, sử
vụ do lớp Data Access cung cấp,
các dịch vụ cho lớp Presentation.
• Lớp BLL cũng có thể sử dụng cá
các nhà cung cấp thứ 3 (3rd pa
hiện công việc của mình (ví dụ
dịch vụ thanh tóan trực tuyến
Paypal).
GV. Trương Phước Lộc
ThS. Nguyễn Tấn Trần MinhKhang
GV. Trương Phước Lộc
ThS. Nguyễn Tấn Trần MinhKhang
13
14
Khoa CNTT-ĐH.KHTN
Khoa CNTT-ĐH.KHTN
6. MỘT KIẾN TRÚC
THAM KHẢO
• Trong lớp này có các thành phần chính là
Business Components, Business
Service Interface.
• Service Interface là giao diện lập
này cung cấp cho lớp Presentation
• Lớp Presentation chỉ cần biết các
qua giao diện này mà không cần p
đến bên trong lớp này được hiện
nào.
6. MỘT KIẾN TRÚC
THAM KHẢO
• Business Entities là những thực thể mô tả
những đối tượng thông tin mà hệ t
• Trong ứng dụng các đối tượng
chuyên mục (Category) và bản tin(
• Các business entities này cũng đ
trao đổi thông tin giữa lớp Prese
Data Access.
GV. Trương Phước Lộc
ThS. Nguyễn Tấn Trần MinhKhang
GV. Trương Phước Lộc
ThS. Nguyễn Tấn Trần MinhKhang
15
16
Khoa CNTT-ĐH.KHTN
Khoa CNTT-ĐH.KHTN
6. MỘT KIẾN TRÚC
THAM KHẢO
• Business Components là những thành phần
chính thực hiện các dịch vụ
Interface cung cấp.
• Business Components chịu trác
tra các ràng buộc logic (constraint
nghiệp vụ (business rules).
6. MỘT KIẾN TRÚC
THAM KHẢO
• Trong ứng dụng lớp Business Components sẽ
chứa các thành phần là Categ
NewsService làm nhiệm vụ cung
vụ quản lý chuyên mục và xử l
(thêm, xóa, sửa, xem chi tiết, lấy d
• Business Components ngoài ra
các dịch vụ bên ngoài khác để t
yêu cầu của ứng dụng.
GV. Trương Phước Lộc
ThS. Nguyễn Tấn Trần MinhKhang
GV. Trương Phước Lộc
ThS. Nguyễn Tấn Trần MinhKhang
17
18
3
01/10/2010
Khoa CNTT-ĐH.KHTN
Khoa CNTT-ĐH.KHTN
6. MỘT KIẾN TRÚC
THAM KHẢO
• 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
của các hệ quản trị cơ sở dữ
Server, Oracle,… để thực hiện
mình.
6. MỘT KIẾN TRÚC
THAM KHẢO
• 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ồ
Sources) như RDMBS, XML, File
• Trong .NET Các DALC này thư
thực bằng cách sử dụng thư việ
giao tiếp với các hệ cơ sở dữ liệu
• Trong lớp Data Tier có các thàn
Data Access Logic, Data So
Agents.
GV. Trương Phước Lộc
ThS. Nguyễn Tấn Trần MinhKhang
GV. Trương Phước Lộc
ThS. Nguyễn Tấn Trần MinhKhang
19
20
Khoa CNTT-ĐH.KHTN
Khoa CNTT-ĐH.KHTN
7. ADO.NET
OBJECT MODEL
7. ADO.NET
OBJECT MODEL
DataSet
DataTableCollection
.NET Data Provider
Connection
Transaction
Database
Manages the connection
to a database
DataAdapter
SelectCommand
DataTable
DataRowCollection
Connection
Command
Executes a query command
on the database
InsertCommand
UpdateCommand
DeleteCommand
DataColumnCollection
ConstraintCollection
Command
Parameters
Exchanges data between
the data set and the database
DataReader
DataRelationCollection
DataAdapter
DataReader
Provides efficient access to a
stream of read-only data
XML
Database
GV. Trương Phước Lộc
ThS. Nguyễn Tấn Trần MinhKhang
GV. Trương Phước Lộc
ThS. Nguyễn Tấn Trần MinhKhang
21
22
Khoa CNTT-ĐH.KHTN
Khoa CNTT-ĐH.KHTN
7. ADO.NET
OBJECT MODEL
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”
Fill
DataAdapter
DataSet
Update
(Data Source).
Errors Collection
Fill
DataAdapter
DataSet
Update
Errors Collection
Command
Connection
Data Source
Parameters
Command
Connection
Data Source
Parameters
GV. Trương Phước Lộc
ThS. Nguyễn Tấn Trần MinhKhang
GV. Trương Phước Lộc
ThS. Nguyễn Tấn Trần MinhKhang
23
24
4
01/10/2010
Khoa CNTT-ĐH.KHTN
Khoa CNTT-ĐH.KHTN
8. CONNECTION
8. CONNECTION
• Chúng
ta
có
thể
sử
dụng
mọi
• 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.OleDbConnection cho
“nguồn dữ liệu” (Data Source).
• Ngoà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.OleDb
▫ System.Data.SqlClient
System.Data.OracleClient.dll cho dữ liệu nguồn theo
chuẩn của công ty Oracle.
• Ứng với mỗi Data Provider chúng ta có một lớp
Connection tương ứng.
▫ System.Data.OleDb.OleDbConnection
▫ Microsoft.Data.Odbc
Microsoft.Data.Odbc.dll cho ODBC.
▫ Microsoft.Data.SqlXml qua
qua
tập
tập
tin
tin
Microsoft.Data.SqlXml.dll cho Xml trên SQL server.
▫ System.Data.SqlClient.SqlConnection
GV. Trương Phước Lộc
ThS. Nguyễn Tấn Trần MinhKhang
GV. Trương Phước Lộc
ThS. Nguyễn Tấn Trần MinhKhang
25
26
Khoa CNTT-ĐH.KHTN
Khoa CNTT-ĐH.KHTN
8. CONNECTION
8. CONNECTION
• Connection String: trước khi thực hiện kết nối,
• Tạo ConnectionString và tạo đối tượng kết nối
ta cần khai báo các thông tin cần thiết cho
cho “nguồn dữ liệu” là Access.
1.Imports System.Data.OleDb
Connection
thông
qua
thuộc
tính
2.Dim strConnection As String =
"Provider=Microsoft.Jet.OLEDB.4.0”&_
“;Data Source=“ &
<Đường dẫn>
3.Dim cnn As New OleDbConnection
ConnectionString.
• Cách thức khai báo ConnectionString thay đổi
tùy thuộc vào Data Provider.
(strConnection)
4.…
5.cnn.Close()
GV. Trương Phước Lộc
ThS. Nguyễn Tấn Trần MinhKhang
GV. Trương Phước Lộc
ThS. Nguyễn Tấn Trần MinhKhang
27
28
Khoa CNTT-ĐH.KHTN
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.
• 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
• Cách 01
1.Imports System.Data.SqlClient
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>
2.Dim strConnection As String
=
“DataSource=” &_
<Đị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 OleDbConnection
3.Dim cnn As New SqlConnection
(strConnection)
(strConnection)
4.…
4.…
5.cnn.Close()
5.cnn.Close()
GV. Trương Phước Lộc
ThS. Nguyễn Tấn Trần MinhKhang
GV. Trương Phước Lộc
ThS. Nguyễn Tấn Trần MinhKhang
29
30
5
01/10/2010
Khoa CNTT-ĐH.KHTN
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
• 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).
2.Dim strConnection As String =
<Địa chỉ TCP/IP hay tên máy> &_
“Initial Catalog=“ &_
“DataSource=” &_
<Tên Database> &_
“;Integrated Security = SSPI”
3.Dim cnn As New SqlConnection
(strConnection)
▫ Provider (thuộc tính chỉ đọc): Tương ứng với
Provider.
4.…
5.cnn.Close()
GV. Trương Phước Lộc
ThS. Nguyễn Tấn Trần MinhKhang
GV. Trương Phước Lộc
ThS. Nguyễn Tấn Trần MinhKhang
31
32
Khoa CNTT-ĐH.KHTN
Khoa CNTT-ĐH.KHTN
8. CONNECTION
8. CONNECTION
• Các thuộc tính của 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:
• Các phương thức trên Connection
▫ Phương thức BeginTransaction:
▫ Phương thức ChangeDatabase:
▫ Phương thức Close:
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ở.
▫ Phương thức CreateCommand:
▫ Phương thức Dispose:
▫ Phương thức Open:
GV. Trương Phước Lộc
ThS. Nguyễn Tấn Trần MinhKhang
GV. Trương Phước Lộc
ThS. Nguyễn Tấn Trần MinhKhang
33
34
Khoa CNTT-ĐH.KHTN
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.
• 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
ThS. Nguyễn Tấn Trần MinhKhang
GV. Trương Phước Lộc
ThS. Nguyễn Tấn Trần MinhKhang
35
36
6
01/10/2010
Khoa CNTT-ĐH.KHTN
Khoa CNTT-ĐH.KHTN
8.1 TRANSACTION
8.1 TRANSACTION
• Tạo Transaction với SqlConnection có 4 cách
• Tạo Transaction với SqlConnection có 4 cách
khác nhau.
khác nhau.
• Cách 01 (Tương tự OleDbConnection)
• Cách 03
1. Dim <Transaction> as SqlTransaction
= <connection>.BeginTransaction
1.Dim <Transaction> as OleDbTransaction
= <connection>.BeginTransaction()
(<Tên giao tác>)
• Cách 02 (Tương tự OleDbConnection)
1.Dim <Transaction> as OleDbTransaction
= <connection>.BeginTransaction
(IsolationLevel)
• Cách 04
1. Dim <Transaction> as SqlTransaction
= <connection>.BeginTransaction
(<Tên giao tác>,<IsolationLevel>)
• <IsolationLevel>: định tính chất của Transaction.
GV. Trương Phước Lộc
ThS. Nguyễn Tấn Trần MinhKhang
GV. Trương Phước Lộc
ThS. Nguyễn Tấn Trần MinhKhang
37
38
Khoa CNTT-ĐH.KHTN
Khoa CNTT-ĐH.KHTN
8.1 TRANSACTION
8.1 TRANSACTION
▫ IsolationLevel có các giá trị sau:
Chaos
ReadCommitted
ReadUnCommitted
RepeatableRead
Serializable
• 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.
Unspecified
. 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
ThS. Nguyễn Tấn Trần MinhKhang
GV. Trương Phước Lộc
ThS. Nguyễn Tấn Trần MinhKhang
39
40
Khoa CNTT-ĐH.KHTN
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.
• Sử dụng ToolBox để tạo đối tượng
OleDbConnection.
GV. Trương Phước Lộc
ThS. Nguyễn Tấn Trần MinhKhang
GV. Trương Phước Lộc
ThS. Nguyễn Tấn Trần MinhKhang
41
42
7
01/10/2010
Khoa CNTT-ĐH.KHTN
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.
Fill
• 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:
DataAdapter
DataSet
Update
Errors Collection
▫ Sytem.Data.OleDb.OleDbCommand.
▫ Sytem.Data.SqlClient.SqlCommand.
Command
Connection
Data Source
Parameters
GV. Trương Phước Lộc
ThS. Nguyễn Tấn Trần MinhKhang
GV. Trương Phước Lộc
ThS. Nguyễn Tấn Trần MinhKhang
43
44
Khoa CNTT-ĐH.KHTN
Khoa CNTT-ĐH.KHTN
9. COMMAND
9. COMMAND
• Tạo đối tượng Command ta có thể thực hiện
• 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:
theo một trong những cách thức như sau:
▫ Cách 1:
1.Dim <Biến Command> As New
<Loại>Command()
▫ Cách 3:
1.Dim <Biến Command> As New
<Loại>Command(<Lệnh>,<Biến Connection>)
2.<Biến Command>.Connection =
<Biến Connection>
3.<Biến Command>.CommandText=<Lệnh>
▫ 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
ThS. Nguyễn Tấn Trần MinhKhang
GV. Trương Phước Lộc
ThS. Nguyễn Tấn Trần MinhKhang
45
46
Khoa CNTT-ĐH.KHTN
Khoa CNTT-ĐH.KHTN
9. COMMAND
9. COMMAND
• Các thuộc tính của đối tượng Command
• 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.
▫ 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:
▫ Transaction: Giao tác mà trên đó command thực
hiện.
▫ 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 MinhKhang
GV. Trương Phước Lộc
ThS. Nguyễn Tấn Trần MinhKhang
47
48
8
01/10/2010
Khoa CNTT-ĐH.KHTN
Khoa CNTT-ĐH.KHTN
9. COMMAND
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.
• Cú pháp khai báo đối tượng
OledbParameter
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
thuộc lớp
• Tùy theo đối tượng Command, Parameter sẽ
khai báo từ 1 trong 2 lớp sau:
OledbParameter(<Tên>,<Giá Trị>)
▫ OledbParameter
▫ SqlParameter
GV. Trương Phước Lộc
ThS. Nguyễn Tấn Trần MinhKhang
GV. Trương Phước Lộc
ThS. Nguyễn Tấn Trần MinhKhang
49
50
Khoa CNTT-ĐH.KHTN
Khoa CNTT-ĐH.KHTN
9. COMMAND
9. COMMAND
• Các thuộc tính của Parameter
▫ Direction (thuộc tính đọc ghi): Giá trị cho biết loại
• Cú pháp khai báo đối tượng SqlParameter
1.Dim <Biến Parameter> As New
SqlParameter
2.Dim <Biến Parameter> As New
SqlParameter(<Tên>)
tham số với các giá trị sau:
Input
InputOutput
Output
3.Dim <Biến Parameter> As New
SqlParameter(<Tên>,<Giá Trị>)
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
ThS. Nguyễn Tấn Trần MinhKhang
GV. Trương Phước Lộc
ThS. Nguyễn Tấn Trần MinhKhang
51
52
Khoa CNTT-ĐH.KHTN
Khoa CNTT-ĐH.KHTN
9. COMMAND
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
ThS. Nguyễn Tấn Trần MinhKhang
GV. Trương Phước Lộc
ThS. Nguyễn Tấn Trần MinhKhang
53
54
9
01/10/2010
Khoa CNTT-ĐH.KHTN
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>)
• 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
ThS. Nguyễn Tấn Trần MinhKhang
GV. Trương Phước Lộc
ThS. Nguyễn Tấn Trần MinhKhang
55
56
Khoa CNTT-ĐH.KHTN
Khoa CNTT-ĐH.KHTN
9. COMMAND
9. COMMAND
• 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 quá trình đọc dữ liệu.
• DataReader thuộc tên miền
▫ System.Data.OledbDataReader
• 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
toán thống kê SUM, COUNT, AVG, MAX, MIN
…trên “nguồn dữ liệu” ngay lúc thực thi.
▫ 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.
• Cú pháp:
1. …<Biến Command>.ExecuteScalar()
GV. Trương Phước Lộc
ThS. Nguyễn Tấn Trần MinhKhang
GV. Trương Phước Lộc
ThS. Nguyễn Tấn Trần MinhKhang
57
58
Khoa CNTT-ĐH.KHTN
Khoa CNTT-ĐH.KHTN
9. COMMAND
9. COMMAND
• 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.
• 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 MinhKhang
GV. Trương Phước Lộc
ThS. Nguyễn Tấn Trần MinhKhang
59
60
10
01/10/2010
Khoa CNTT-ĐH.KHTN
Khoa CNTT-ĐH.KHTN
10. DATA ADAPTER
10. DATA ADAPTER
• DataAdapter dùng để lấy dữ liệu từ “nguồn dữ
liệu” (DataSource) về cho ứng dụng.
• Đố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”.
Fill
Fill
DataAdapter
DataSet
DataAdapter
DataSet
Update
Update
Errors Collection
Errors Collection
Command
Connection
Data Source
Command
Connection
Data Source
Parameters
Parameters
GV. Trương Phước Lộc
ThS. Nguyễn Tấn Trần MinhKhang
GV. Trương Phước Lộc
ThS. Nguyễn Tấn Trần MinhKhang
61
62
Khoa CNTT-ĐH.KHTN
Khoa CNTT-ĐH.KHTN
10. DATA ADAPTER
10. DATA ADAPTER
• DataAdapter là một bộ gồm 4 đối tượng
command:
• Thông thường ta chỉ cần khai báo nội dung lệnh
cho SelectCommand.
▫ SelectCommand: cho phép lấy thông tin từ
“nguồn dữ liệu” về.
• Các nội dung của các command còn lại có thể
được
phát
sinh
nhờ
đối
tượng
▫ 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”.
CommandBuilder dựa vào nội dung của
SelectCommand.
▫ DeleteCommand: cho phép hủy bỏ dữ liệu trên
bảng trong “nguồn dữ liệu”.
GV. Trương Phước Lộc
ThS. Nguyễn Tấn Trần MinhKhang
GV. Trương Phước Lộc
ThS. Nguyễn Tấn Trần MinhKhang
63
64
Khoa CNTT-ĐH.KHTN
Khoa CNTT-ĐH.KHTN
10. DATA ADAPTER
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ử
• Cú pháp tạo DataAdapter:
▫ Cách 3:
New <loại>DataAdapter(<lệnh>,
<Đối Tượng Connection>)
▫ Cách 4:
dụng
theo
Data
Provider
nào:
SqlDataAdapter or OledbDataAdapter.
• Cú pháp tạo DataAdapter:
▫ Cách 1:
New <loại>DataAdapter(<lệnh>,
<chuỗi Connection>)
New <loại> DataAdapter()
▫ Cách 2:
•
•
•
<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 đó
DataAdapterthao tác với nguồn dữ liệu.
<chuỗi Connection>: Chuỗi ConnectionString để tạo đối tượng
Connection.
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.
GV. Trương Phước Lộc
ThS. Nguyễn Tấn Trần MinhKhang
GV. Trương Phước Lộc
ThS. Nguyễn Tấn Trần MinhKhang
65
66
11
01/10/2010
Khoa CNTT-ĐH.KHTN
Khoa CNTT-ĐH.KHTN
10. DATA ADAPTER
10. DATA ADAPTER
• Các thuộc tính chính của DataAdapter
▫ Thuộc tính ContinueUpdatedOnError: Chỉ định cách
• 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.
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
ThS. Nguyễn Tấn Trần MinhKhang
GV. Trương Phước Lộc
ThS. Nguyễn Tấn Trần MinhKhang
67
68
Khoa CNTT-ĐH.KHTN
Khoa CNTT-ĐH.KHTN
10. DATA ADAPTER
10. DATA ADAPTER
• Các thuộc tính chính của DataAdapter
• 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.
▫ 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.
GV. Trương Phước Lộc
ThS. Nguyễn Tấn Trần MinhKhang
GV. Trương Phước Lộc
ThS. Nguyễn Tấn Trần MinhKhang
69
70
Khoa CNTT-ĐH.KHTN
Khoa CNTT-ĐH.KHTN
10. DATA ADAPTER
10. DATA ADAPTER
• Các phương thức chính của DataAdaper.
▫ Lấy dữ liệu từ nguồn.
• Tạo đối tượng DataAdapter bằng điều khiể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
ThS. Nguyễn Tấn Trần MinhKhang
GV. Trương Phước Lộc
ThS. Nguyễn Tấn Trần MinhKhang
71
72
12
01/10/2010
Khoa CNTT-ĐH.KHTN
Khoa CNTT-ĐH.KHTN
10. DATA ADAPTER
Client
Server
DataSet
DataAdapter
Fill
Database
Data
Data
Update
DataTable
InsertCommand
UpdateCommand
DeleteCommand
GV. Trương Phước Lộc
ThS. Nguyễn Tấn Trần MinhKhang
GV. Trương Phước Lộc
ThS. Nguyễn Tấn Trần MinhKhang
73
74
Khoa CNTT-ĐH.KHTN
Khoa CNTT-ĐH.KHTN
11. DATASET
11. DATASET
Dataset
Dataset
DataColumn
DataTable
DataTableCollection
DataTable
DataRowCollection
DataRow
DataColumnCollection
ConstraintCollection
DataColumn
DataTable
DataRow
DataRelationsCollection
DataSet Architecture
DataSet Architecture
GV. Trương Phước Lộc
ThS. Nguyễn Tấn Trần MinhKhang
GV. Trương Phước Lộc
ThS. Nguyễn Tấn Trần MinhKhang
75
76
Khoa CNTT-ĐH.KHTN
Khoa CNTT-ĐH.KHTN
11. DATASET
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
Fill
DataAdapter
DataSet
Update
DataTable
Errors Collection
DataRowCollection
DataRow
DataView
ChildRelations
ParentRelations
Constraints
Command
Connection
Data Source
Parameters
DataColumnCollection
DataColumn
ExtendedProperties
PrimaryKey
ExtendedProperties
GV. Trương Phước Lộc
ThS. Nguyễn Tấn Trần MinhKhang
GV. Trương Phước Lộc
ThS. Nguyễn Tấn Trần MinhKhang
77
78
13
01/10/2010
Khoa CNTT-ĐH.KHTN
Khoa CNTT-ĐH.KHTN
11. DATASET
11. DATASET
• DataSet là một mô hình CSDL quan hệ thu nhỏ
đáp ứng nhu cầu của ứng dụng.
• Ta có thể khai báo DataSet bằng một trong
những cách thức sau:
• 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:
• Cách 1:
New System.Data.DataSet()
• Cách 2:
System.Data.DataSet
New System.Data.DataSet(<tên>)
Dataset
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
DataTableCollection
DataTable
DataRowCollection
DataColumnCollection
ConstraintCollection
DataRelationsCollection
GV. Trương Phước Lộc
ThS. Nguyễn Tấn Trần MinhKhang
GV. Trương Phước Lộc
ThS. Nguyễn Tấn Trần MinhKhang
79
80
Khoa CNTT-ĐH.KHTN
Khoa CNTT-ĐH.KHTN
11. DATASET
11. DATASET
Thuộctính
Mô tả
• 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.
DataSetName
Tên của DataSet (đọc ghi)
Các thuộc tính chính của DataSet
HasErrors
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
Tables
Tập hợp các quan hệ (DataRelation) một nhiều của
DataSet (chỉ đọc)
Tập hợp các bảng (DataTable) của DataSet (chỉ đọc)
▫ 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
ThS. Nguyễn Tấn Trần MinhKhang
GV. Trương Phước Lộc
ThS. Nguyễn Tấn Trần MinhKhang
81
82
Khoa CNTT-ĐH.KHTN
Khoa CNTT-ĐH.KHTN
11. DATASET
11. DATASET
• Các phương thức của 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 ngoài vào trong DataSet.
▫ Xóa bỏ 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
ThS. Nguyễn Tấn Trần MinhKhang
GV. Trương Phước Lộc
ThS. Nguyễn Tấn Trần MinhKhang
83
84
14
01/10/2010
Khoa CNTT-ĐH.KHTN
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.
• Cách tạo Typed DataSet.
▫ Chọn Project\Add New Item\DataSet.
▫ Typed DataSet được lưu thành tập tin có đuô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
• 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
ThS. Nguyễn Tấn Trần MinhKhang
GV. Trương Phước Lộc
ThS. Nguyễn Tấn Trần MinhKhang
85
86
Khoa CNTT-ĐH.KHTN
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ơ đồ.
• 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
ThS. Nguyễn Tấn Trần MinhKhang
GV. Trương Phước Lộc
ThS. Nguyễn Tấn Trần MinhKhang
87
88
Khoa CNTT-ĐH.KHTN
Khoa CNTT-ĐH.KHTN
12. TYPED DATASET
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.
• 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
ThS. Nguyễn Tấn Trần MinhKhang
GV. Trương Phước Lộc
ThS. Nguyễn Tấn Trần MinhKhang
89
90
15
01/10/2010
Khoa CNTT-ĐH.KHTN
Khoa CNTT-ĐH.KHTN
12. TYPED DATASET
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
• Ngoà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
ThS. Nguyễn Tấn Trần MinhKhang
GV. Trương Phước Lộc
ThS. Nguyễn Tấn Trần MinhKhang
91
92
16
Bạn đang xem tài liệu "Bài giảng Lập trình ứng dụng quản lý 1 - Chương 5: ADO.NET (Tiếp theo) - Trương Phước Lộc", để tải tài liệu gốc về máy hãy click vào nút Download ở trên
File đính kèm:
bai_giang_lap_trinh_ung_dung_quan_ly_1_chuong_5_ado_net_tiep.pdf

