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

Ltudql1 05 cac lop doi tuong trong ado

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 (6.89 MB, 16 trang )

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

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



×