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

xử lý dữ liệu với ADO.NET

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 (7.03 MB, 70 trang )


1
LHU
LHU
L
L
Â
Â
P T
P T
RI
RI
NH
NH
WEB ASP.NET
WEB ASP.NET
Tr
Tr


ng 
ng 
a
a
i H
i H
o
o
c L
c L
a


a
c H
c H
ô
ô
ng 2009
ng 2009
-
-
2010
2010
Ts. V
Ts. V
u 
u 
c Lung
c Lung
Ks. H
Ks. H
uy
uy
nh Cao Tu
nh Cao Tu
â
â
n
n
Ks. P
Ks. P
han H

han H


u Ti
u Ti
ê
ê
p
p
X
X


Lý D
Lý D


Li
Li


u V
u V


i ADO.NET
i ADO.NET
Chng
Chng
4:

4:
http:// lhu.edu.vn
http:// lhu.edu.vn
2
Ts. V
Ts. V
u 
u 
c Lung
c Lung


Ks
Ks
. H
. H
uy
uy
nh Cao Tu
nh Cao Tu
â
â
n
n
-
-
Ks
Ks
. P
. P

han H
han H


u Ti
u Ti
ê
ê
p
p
N
N


i dung ch
i dung ch
í
í
nh
nh
 Gii thiu v ADO.NET
 Các đi tng trong ADO.NET
 iu khin liên kt d liu
http:// lhu.edu.vn
http:// lhu.edu.vn
3
Ts. V
Ts. V
u 
u 

c Lung
c Lung


Ks
Ks
. H
. H
uy
uy
nh Cao Tu
nh Cao Tu
â
â
n
n
-
-
Ks
Ks
. P
. P
han H
han H


u Ti
u Ti
ê
ê

p
p
Gi
Gi


i thi
i thi


u v
u v


ADO.NET
ADO.NET
 ADO.NET (Active Data Object) là mt phn ca .NET
Framework, cung cp các dch v x lý d liu
 Làm vic vi d liu không kt ni
 D liu đc lu tr trong mt CSDL thu nh gi là DataSet
=>tng tc đ tính toán, gim s dng tài nguyên trên
Database server.
 Kh nng x lý d liu dng chun XML =>làm vic vi nhiu
ng dng khác
http:// lhu.edu.vn
http:// lhu.edu.vn
4
Ts. V
Ts. V
u 

u 
c Lung
c Lung


Ks
Ks
. H
. H
uy
uy
nh Cao Tu
nh Cao Tu
â
â
n
n
-
-
Ks
Ks
. P
. P
han H
han H


u Ti
u Ti
ê

ê
p
p
Gi
Gi


i thi
i thi


u v
u v


ADO.NET
ADO.NET
http:// lhu.edu.vn
http:// lhu.edu.vn
5
Ts. V
Ts. V
u 
u 
c Lung
c Lung


Ks
Ks

. H
. H
uy
uy
nh Cao Tu
nh Cao Tu
â
â
n
n
-
-
Ks
Ks
. P
. P
han H
han H


u Ti
u Ti
ê
ê
p
p
Gi
Gi



i thi
i thi


u v
u v


ADO.NET
ADO.NET
 Kin trúc ADO.NET có hai đ i tng chính: Dataset (data
table) v à .NET data provider (Data Adapter, DataReader,
Command, Connection)
 Dataset lu data t Database
  nhn data t CSDL, DataAdapter dùng câu lnh SELECT
trong Command, đ cp nht data dùng INSERT, UPDATE,
DELETE
http:// lhu.edu.vn
http:// lhu.edu.vn
6
Ts. V
Ts. V
u 
u 
c Lung
c Lung


Ks
Ks

. H
. H
uy
uy
nh Cao Tu
nh Cao Tu
â
â
n
n
-
-
Ks
Ks
. P
. P
han H
han H


u Ti
u Ti
ê
ê
p
p
Gi
Gi



i thi
i thi


u v
u v


ADO.NET
ADO.NET
 Các thành phn trong ADO.NET
 DataSet
 DataTable
 DataView
 DataRow
 DataColumn
 DataRelation
http:// lhu.edu.vn
http:// lhu.edu.vn
7
Ts. V
Ts. V
u 
u 
c Lung
c Lung


Ks
Ks

. H
. H
uy
uy
nh Cao Tu
nh Cao Tu
â
â
n
n
-
-
Ks
Ks
. P
. P
han H
han H


u Ti
u Ti
ê
ê
p
p
C
C
á
á

c th
c th
à
à
nh ph
nh ph


n trong ADO.NET
n trong ADO.NET
 Managed provider component: gm DataAdapter, DataReader
gi nhim v l àm vic trc tip nh tp tin, database,…
 Content component: gm Dataset, DataTable, đi din cho d
liu thc s cn làm vic.
 DataReader là đi tng mi, giúp vic truy xut d liu nhanh
chóng nhng ch đc phép đc và di chuyn ti
 Dataset cng là đi tng mi, không ch là d liu, Dataset còn
có th coi là mt bn sao gn nh ca CSDL trong b nh vi
nhiu bng và có các mi quan h. Dataset h  tr XML thông
qua đi tng XMLDataDocument.
 DataAdapter là đ i tng kt ni gia DataSet và CSDL. Nó
gm Connection v à Commmand , đ cung cp d liu cho
Dataset, cng nh cp nht d liu t DataSet xung CSDL.
http:// lhu.edu.vn
http:// lhu.edu.vn
8
Ts. V
Ts. V
u 
u 

c Lung
c Lung


Ks
Ks
. H
. H
uy
uy
nh Cao Tu
nh Cao Tu
â
â
n
n
-
-
Ks
Ks
. P
. P
han H
han H


u Ti
u Ti
ê
ê

p
p
C
C
á
á
c th
c th
à
à
nh ph
nh ph


n trong ADO.NET
n trong ADO.NET
http:// lhu.edu.vn
http:// lhu.edu.vn
9
Ts. V
Ts. V
u 
u 
c Lung
c Lung


Ks
Ks
. H

. H
uy
uy
nh Cao Tu
nh Cao Tu
â
â
n
n
-
-
Ks
Ks
. P
. P
han H
han H


u Ti
u Ti
ê
ê
p
p
C
C
á
á
c th

c th
à
à
nh ph
nh ph


n trong ADO.NET
n trong ADO.NET
http:// lhu.edu.vn
http:// lhu.edu.vn
10
Ts. V
Ts. V
u 
u 
c Lung
c Lung


Ks
Ks
. H
. H
uy
uy
nh Cao Tu
nh Cao Tu
â
â

n
n
-
-
Ks
Ks
. P
. P
han H
han H


u Ti
u Ti
ê
ê
p
p
C
C
á
á
c th
c th
à
à
nh ph
nh ph



n trong ADO.NET
n trong ADO.NET


DataSet:
DataSet:
 DataSet dùng đ cha d liu ly t CSDL ln ( SQL, Aceess)
sau đó mi thông tin cn thit s đc truy xut t DataSet
 Nói 01 cách khác DataSet là CSDL thu nh t CSDL ln
 Trong Dataset s cha các bng là thông tin mà chúng ta cn
ly.Trong DataSet s có nhiu DataTable v à các mi quan h
gia chúng đi din bi các DataRelation
 Dataset ging nh là hình nh v CSDL trong b nh .
http:// lhu.edu.vn
http:// lhu.edu.vn
11
Ts. V
Ts. V
u 
u 
c Lung
c Lung


Ks
Ks
. H
. H
uy
uy

nh Cao Tu
nh Cao Tu
â
â
n
n
-
-
Ks
Ks
. P
. P
han H
han H


u Ti
u Ti
ê
ê
p
p
C
C
á
á
c th
c th
à
à

nh ph
nh ph


n trong ADO.NET
n trong ADO.NET
 Li ích trong vic s dng DataSet
 Hoàn toàn trong b nh: Mt Table trong Dataset là mt Array of
Rows, nên ta có th dùng thng (direct access) m t record b ng cách
nói đn cái Row cha nó, ch không cn phi dùng MoveNext,
MovePrev,.v.v.
 Làm nh công tác ca Database server. Tt c mi công tác sa đi d
liu đu đc thc hin trong Dataset.
 Dataset có th đ c biu din bng mt XML (eXtensible Marked
Language)
http:// lhu.edu.vn
http:// lhu.edu.vn
12
Ts. V
Ts. V
u 
u 
c Lung
c Lung


Ks
Ks
. H
. H

uy
uy
nh Cao Tu
nh Cao Tu
â
â
n
n
-
-
Ks
Ks
. P
. P
han H
han H


u Ti
u Ti
ê
ê
p
p
C
C
á
á
c th
c th

à
à
nh ph
nh ph


n trong ADO.NET
n trong ADO.NET


DataTable:
DataTable:
 DataTable là 01 thành phn trong Dataset
 DataTable cha d liu ca 01 bng trong Dataset và thuc lp
DataTable.Datable bao gm
• Tp hp Columns thuôc lp DataColumnCollectiontrong đó mi ct
là mt đi tng thuc lp DataColumn
• Tp hp Rows thuôc lp DataRowCollectiontrong đó mi ct là mt
đi tng thuc lp DataRow
http:// lhu.edu.vn
http:// lhu.edu.vn
13
Ts. V
Ts. V
u 
u 
c Lung
c Lung



Ks
Ks
. H
. H
uy
uy
nh Cao Tu
nh Cao Tu
â
â
n
n
-
-
Ks
Ks
. P
. P
han H
han H


u Ti
u Ti
ê
ê
p
p
C
C

á
á
c th
c th
à
à
nh ph
nh ph


n trong ADO.NET
n trong ADO.NET


DataRelation:
DataRelation:
 Dataset bao gm tp hp các table đi din bi các đi tng
DataTable và quan h gia các table đó đ i din bi các đi
tng DataRelation
 DataRelation, ngi dùng có th:
• nh ngha mi quan h gia các bng
• Duyt d liu trong các bng theo mi quan h Master – Detail
 aMt đi tng kiu DataRelation bao gm các thông tin:
• Tên ca Parent Table và Child Table
• Các column trong DataRelation đi din cho PrimaryKey trong
Parent và ForeignKey trong Child Table
http:// lhu.edu.vn
http:// lhu.edu.vn
14
Ts. V

Ts. V
u 
u 
c Lung
c Lung


Ks
Ks
. H
. H
uy
uy
nh Cao Tu
nh Cao Tu
â
â
n
n
-
-
Ks
Ks
. P
. P
han H
han H


u Ti

u Ti
ê
ê
p
p
C
C
á
á
c th
c th
à
à
nh ph
nh ph


n trong ADO.NET
n trong ADO.NET


DataRelation:
DataRelation:
 Vi DataRelation, ADO.NET cung c p cho ng i lp tr ình mt
cách thc mi đ x lý d liu. D liu vn nm trong các bng
thay vì b  gom t nhiu bng thành 01 RecordSet nhng v n có
th truy cp d dàng và hiu qu.
 Ví d: trong parent table có 10 dòng, mi dòng trong Parent table
có 10 dòng con trong Child table
 Cách c: dùng 01 truy vn kt hp hai bng đ ly 1 ln 100

mu tin hay dùng 02 RecordSet, mi ln RecordSet Master thay
đi mu tin hin hành thì m li RecordSet Detail
http:// lhu.edu.vn
http:// lhu.edu.vn
15
Ts. V
Ts. V
u 
u 
c Lung
c Lung


Ks
Ks
. H
. H
uy
uy
nh Cao Tu
nh Cao Tu
â
â
n
n
-
-
Ks
Ks
. P

. P
han H
han H


u Ti
u Ti
ê
ê
p
p
C
C
á
á
c th
c th
à
à
nh ph
nh ph


n trong ADO.NET
n trong ADO.NET


DataRelation:
DataRelation:
 Khuyt đim: d liu b ly tha vì không chc ngi dùng s đi

xem ht 100 mu tin đã ly và khó thao tác thêm, sa, xóa, Vi
cách th 2, d liu ch ly va đ nhng ch m hn vì mi ln
thay đi Master li phi truy vn d liu cho Detail


Phng ph
Phng ph
á
á
p m
p m


i: Ch
i: Ch


c
c


n l
n l


y d
y d


li

li


u 01 l
u 01 l


n duy nh
n duy nh


t
t
nhng d
nhng d


li
li


u v
u v


n n
n n


m trong c

m trong c
á
á
c b
c b


ng, d
ng, d


d
d
à
à
ng thao t
ng thao t
á
á
c x
c x




http:// lhu.edu.vn
http:// lhu.edu.vn
16
Ts. V
Ts. V

u 
u 
c Lung
c Lung


Ks
Ks
. H
. H
uy
uy
nh Cao Tu
nh Cao Tu
â
â
n
n
-
-
Ks
Ks
. P
. P
han H
han H


u Ti
u Ti

ê
ê
p
p
C
C
á
á
c th
c th
à
à
nh ph
nh ph


n trong ADO.NET
n trong ADO.NET


R
R
à
à
ng Bu
ng Bu


c Trên Quan H
c Trên Quan H



:
: ADO.NET ch cho phép xác đnh 02
loi ràng buc
 UniqueConstraint: đm bo tính duy nht v giá tr ca mt ct trong
table
 ForeignKeyContraint: ch ra cách ng dng s thc hin khi cp nht
hay xóa d liu trên bng có quan h vi bng khác
 Các giá tr ca ForeignKeyContraint là:
 None: không làm gì c
 Cascade: ph thuc vào dòng trên parent table s b cp nht hay
xóa
 SetDefault:giá tr ca ct khóa ngoi trên detail table đc đt v giá
tr mc đnh khi dòng trên parent table b xóa
 SetNull: ging SetDefault , giá tr đc đt là NULL
http:// lhu.edu.vn
http:// lhu.edu.vn
17
Ts. V
Ts. V
u 
u 
c Lung
c Lung


Ks
Ks
. H

. H
uy
uy
nh Cao Tu
nh Cao Tu
â
â
n
n
-
-
Ks
Ks
. P
. P
han H
han H


u Ti
u Ti
ê
ê
p
p
C
C
á
á
c th

c th
à
à
nh ph
nh ph


n trong ADO.NET
n trong ADO.NET


DataView:
DataView:


a
aDataView gn ging vi khái nim RecordSet ca ADO. Trên
mt DataTable có th to nhiu DataView vi các điu kin lc,
sp xp d liu khác nhau. Trên DataView ta có th xem hay
thay đi giá tr các mu tin
 DataView ca ADO.NET có nhim v kt ni vi các control ca
WinForm và Web Form
http:// lhu.edu.vn
http:// lhu.edu.vn
18
Ts. V
Ts. V
u 
u 
c Lung

c Lung


Ks
Ks
. H
. H
uy
uy
nh Cao Tu
nh Cao Tu
â
â
n
n
-
-
Ks
Ks
. P
. P
han H
han H


u Ti
u Ti
ê
ê
p

p
i
i


m n
m n


i b
i b


t trong ADO.NET
t trong ADO.NET
 Tng tác gia nhiu h thng khác nhau (Interoperability)
 H tr nhiu ngi dùng (Scanlability)
 M  rng kh nng làm vic vi CSDL (Productivity)
 Hiu qu cao trong x l ý d liu (Performance)
 C  ch làm vic  ADO.NET:
 X dng d liu  dng disconnect data
 Client to kt ni vi server đ ly d liu
 Server gi d liu v cho Client
 Client ngt kt ni vi Server
 Khi cn cp nht d liu, kt ni gia Client và Server đ c
phc hi
 Thi gian kt ni gia Client và Server không còn lâu nh trc
http:// lhu.edu.vn
http:// lhu.edu.vn
19

Ts. V
Ts. V
u 
u 
c Lung
c Lung


Ks
Ks
. H
. H
uy
uy
nh Cao Tu
nh Cao Tu
â
â
n
n
-
-
Ks
Ks
. P
. P
han H
han H



u Ti
u Ti
ê
ê
p
p
C
C
á
á
c đ
c đ


i t
i t


ng trong ADO.NET
ng trong ADO.NET
 Khai báo và s dng không gian tên (namespace)
<%@ Import Namespace="System.Data.OleDb" %>
-Các đi tng và kiu c bn phc
v ADO.NET
-Các l p đc thit k đ làm vi c
vi bt k ngun d liu nào
- Thit k ti u cho CSDL SQL
server
-System.Data
-System.Data.OleDb

-System.Data.SqlClient
Mc đíchNamespace
http:// lhu.edu.vn
http:// lhu.edu.vn
20
Ts. V
Ts. V
u 
u 
c Lung
c Lung


Ks
Ks
. H
. H
uy
uy
nh Cao Tu
nh Cao Tu
â
â
n
n
-
-
Ks
Ks
. P

. P
han H
han H


u Ti
u Ti
ê
ê
p
p




i t
i t


ng Connection
ng Connection
 Data Provider:
 Data Provider có sn trong ADO.NET
• System.Data.OleDb
• System.Data.SqlClient
 ng vi mi tên min có mt connection tng ng
 System.Data.OleDb.OleDbConnection
 System.Data.SqlClient.SqlConnection
 C OleDBConnection và SQLConnection đu có các thuc tính
và phng th c ging nha u nh ConnectionString , State hay

Open
- Các Provider mà OLEDB và SQL có th kt ni d liu:
 SQLOLEDB: OLEDB Provider ca Microsoft cho SQL Server
 MSDAORA: OLEDB Provider ca Microsoft cho Oracle
 JOLT: OLEDB Provider cho Jet
http:// lhu.edu.vn
http:// lhu.edu.vn
21
Ts. V
Ts. V
u 
u 
c Lung
c Lung


Ks
Ks
. H
. H
uy
uy
nh Cao Tu
nh Cao Tu
â
â
n
n
-
-

Ks
Ks
. P
. P
han H
han H


u Ti
u Ti
ê
ê
p
p




i t
i t


ng Connection
ng Connection
 Connection String:Cung cp thông tin cn thit cho kt ni.
 Trc khi thc hin kt ni cn thông báo các thông tin cn
thit cho Connection thông qua thuc tính Connection String.
Cách khai báo thay đi tùy thuc vào Data Provider.
 Ph thuc vào Data Provider
 OleDB Provider có th gm các thành phn:

http:// lhu.edu.vn
http:// lhu.edu.vn
22
Ts. V
Ts. V
u 
u 
c Lung
c Lung


Ks
Ks
. H
. H
uy
uy
nh Cao Tu
nh Cao Tu
â
â
n
n
-
-
Ks
Ks
. P
. P
han H

han H


u Ti
u Ti
ê
ê
p
p




i t
i t


ng Connection
ng Connection
 Ví d 1: To connection đn CSDL Microsoft Access
 Ví d 2: To connection đn CSDL SQL Server
http:// lhu.edu.vn
http:// lhu.edu.vn
23
Ts. V
Ts. V
u 
u 
c Lung
c Lung



Ks
Ks
. H
. H
uy
uy
nh Cao Tu
nh Cao Tu
â
â
n
n
-
-
Ks
Ks
. P
. P
han H
han H


u Ti
u Ti
ê
ê
p
p





i t
i t


ng Connection
ng Connection
http:// lhu.edu.vn
http:// lhu.edu.vn
24
Ts. V
Ts. V
u 
u 
c Lung
c Lung


Ks
Ks
. H
. H
uy
uy
nh Cao Tu
nh Cao Tu
â

â
n
n
-
-
Ks
Ks
. P
. P
han H
han H


u Ti
u Ti
ê
ê
p
p




i t
i t


ng Connection
ng Connection
 Ví d 3: To connection đn CSDL SQL Server

http:// lhu.edu.vn
http:// lhu.edu.vn
25
Ts. V
Ts. V
u 
u 
c Lung
c Lung


Ks
Ks
. H
. H
uy
uy
nh Cao Tu
nh Cao Tu
â
â
n
n
-
-
Ks
Ks
. P
. P
han H

han H


u Ti
u Ti
ê
ê
p
p




i t
i t


ng Connection
ng Connection
 Ví d 4: To connection đn CSDL SQL Server

×