Bài 7: Thiết kê và lập trình web với ASP.NET - Thao tác CSDL với ADO.NET - Pdf 13

Lp trình và Thit k Web 2
Bài 7
ThaoThao táctác CSDL CSDL vivi ADO .NETADO .NET
Ths. TrnTh Bích Hnh
Khoa CNTT Khoa CNTT –– H.KHTNH.KHTN
© 2009 Khoa Công ngh thông tin
Lp trình và Thitk Web 2 – Bài 7: Thao tác CSDL vi ADO .NET
NiNi
dungdung
NiNi
dungdung
 GiithiuADO .NET
 KintrúcADO .NET
 Mô hình s dng ADO .NET
 .NET Data Provider
© 2009 Khoa CNTT - HKHTN
2
Lp trình và Thitk Web 2 – Bài 7: Thao tác CSDL vi ADO .NET
Ni dungNi dung
Ni

dungNi

dung
 GiithiuADO .NET
 Kin trúc ADO.NET
 Mô hình s dng ADO .NET
 .NET Data Provider
© 2009 Khoa CNTT - HKHTN
3
Lp trình và Thitk Web 2 – Bài 7: Thao tác CSDL vi ADO .NET

t
.
NET
– Công ngh caMicrosoft
Phát
ti
t
ADO

Phát
t
r
i
n
t
ADO
– Cung cpcácđitng và hàm th vin dùng đ kt
nivàx l
ý
trên CSDL
ý
© 2009 Khoa CNTT - HKHTN
4
Lp trình và Thitk Web 2 – Bài 7: Thao tác CSDL vi ADO .NET
SS
lclc
lchlch
ss
phátphát
trintrin

5
Lp trình và Thitk Web 2 – Bài 7: Thao tác CSDL vi ADO .NET
SS
lclc
lchlch
ss
phátphát
trintrin
((
tttt
))
SS
lclc
lchlch
ss
phátphát
trintrin
((
tttt
))
 OLEDB và ADO
Provider
Provider
ADO
OLE DB
Non-Relational Data
Pr
o
vi
de

.NET Data Provider
 ADO.NET
Oracle
SQL Server
Relational Data
OLE DB
Oracle
OLE DB
A
DO.NET
Application
ODBC
Non-Relational Data
ODBC
© 2009 Khoa CNTT - HKHTN
7
Lp trình và Thitk Web 2 – Bài 7: Thao tác CSDL vi ADO .NET
Ni dungNi dung
Ni

dungNi

dung
 Giithiu ADO.NET
 KintrúcADO .NET
 Mô hình s dng ADO .NET
 .NET Data Provider
© 2009 Khoa CNTT - HKHTN
8
Lp trình và Thitk Web 2 – Bài 7: Thao tác CSDL vi ADO .NET

cho
ng
dng
namespace

ADO
.
NET

tng
ng
vi
d
liu
cho
ng
dng

i
vi
d
liu
OLE

i
vi
d
liu
OLE
– using System.Data;

– using System.Data.SqlClient;
© 2009 Khoa CNTT - HKHTN
10
Lp trình và Thitk Web 2 – Bài 7: Thao tác CSDL vi ADO .NET
Ni dungNi dung
Ni

dungNi

dung
 Giithiu ADO.NET
 KintrúcADO .NET
 Mô hình s dng ADO .NET
 .NET Data Provider
© 2009 Khoa CNTT - HKHTN
11
Lp trình và Thitk Web 2 – Bài 7: Thao tác CSDL vi ADO .NET
Mô hình s dng ADO NET viPhnmmMô hình s dng ADO NET viPhnmm


hình

s

dng

ADO
.
NET


SqlCommand
SQL
qp
© 2009 Khoa CNTT - HKHTN
12
12
Lp trình và Thitk Web 2 – Bài 7: Thao tác CSDL vi ADO .NET
Mô hình s dng ADO NET viPhnmmMô hình s dng ADO NET viPhnmm


hình

s

dng

ADO
.
NET

vi

Phn

mmMô

hình

s


Mô hình s dng ADO NET viPhnmmMô hình s dng ADO NET viPhnmm


hình

s

dng

ADO
.
NET

vi

Phn

mmMô

hình

s

dng

ADO
.
NET

vi

 KintrúcADO .NET
 Mô hình s dng ADO .NET
.NET Data Provider
© 2009 Khoa CNTT - HKHTN
15
Lp trình và Thitk Web 2 – Bài 7: Thao tác CSDL vi ADO .NET
NET Data ProviderNET Data Provider
.
NET

Data

Provider
.
NET

Data

Provider
 Connection
 Command & Parameter
 DataReader
 DataSet & DataAdapter
 Transaction
© 2009 Khoa CNTT - HKHTN
16
Lp trình và Thitk Web 2 – Bài 7: Thao tác CSDL vi ADO .NET
NET Data ProviderNET Data Provider

ConnectionConnection

 g
 Phng thc
Open(): thitlpktni đn Data Source.




© 2009 Khoa CNTT - HKHTN
Close(): ng

tk

tn

i đ

n Data Source.
17
Lp trình và Thitk Web 2 – Bài 7: Thao tác CSDL vi ADO .NET
VíVí
dd
VíVí
dd
 using System.Data.SqlClient;
string sConnectionString =
"
Initial Catalog=Northwind;
Data Source=localhost;
user=sa
;

Connection string (Access, SQL Server,…)Connection string (Access, SQL Server,…)

To connection string

To

connection

string
Database ODBC/OLEDB Connection String
Microsoft Access
Provider=Microsoft.Jet.OLEDB.4.0; Data Source=ngDnnFileAccess
Microsoft SQL
Provider=SQLOLEDB;Data Source=ServerName; Initial Catalog=DatabaseName;
UserId=
Username; Password=Password;
String strConn = string.Format(“Provider=Microsoft.Jet.OLEDB.4.0; Data
Source={0}”, HttpContext.Current.Server.MapPath(“database/mydb.mdb”));
© 2009 Khoa CNTT - HKHTN
REF: http://www.connectionstrings.com/
19
Lp trình và Thitk Web 2 – Bài 7: Thao tác CSDL vi ADO .NET
ng dntitp tin Accessng dntitp tin Access
ng

dn

ti

tp



d
:

Gi
s
tp
tin

aspx
s
dng
hàm
Server
.
MapPath
đcluti D:\MyWebsite
Kt qu
S M P th(

DB db

)
D
\
MWbit
\
DB db
S

© 2009 Khoa CNTT - HKHTN
20
Lp trình và Thitk Web 2 – Bài 7: Thao tác CSDL vi ADO .NET
CuCu
hìnhhình
lulu
ConnectionStringConnectionString
trongtrong
Web ConfigWeb Config
CuCu
hìnhhình
lulu
ConnectionStringConnectionString
trongtrong
Web
.
ConfigWeb
.
Config
// Web.Config
<configuration>
<connectionStrings>
<add name=“
OleDbConnectionString"
connectionString=“
Provider=Microsoft.Jet.OLEDB.4.0; Data
Source=
|DataDirectory|\DatabasePath" />
dd
lii

strConn
=
ConfigurationManager.ConnectionStrings[“SqlConnectionString"].ToString();
Lp trình và Thitk Web 2 – Bài 7: Thao tác CSDL vi ADO .NET
Connection PoolingConnection Pooling
Connection

PoolingConnection

Pooling
 SqlConnection conn = new SqlConnection();
conn.ConnectionString =
"Integrated Security=SSPI;Initial Catalog=northwind";
conn.Open(); // Pool A is created.
 SqlConnection conn = new SqlConnection();
conn.ConnectionString =
"Integrated Security=SSPI;Initial Catalog=pubs";
conn.Open();
// Pool B is created because the connection strings differ.
 SqlConnection conn = new SqlConnection();
conn.ConnectionString =
"Integrated Security=SSPI;Initial Catalog=northwind";
()
// h ti t i t h l
© 2009 Khoa CNTT - HKHTN
conn.Open
()
;
//
T

 Command & Parameter
 DataReader
 DataSet & DataAdapter
 Transaction
© 2009 Khoa CNTT - HKHTN
23
Lp trình và Thitk Web 2 – Bài 7: Thao tác CSDL vi ADO .NET
.NET Data Provider .NET Data Provider
––
Command & Paramete
r
Command & Paramete
r
SqlDataReader
3
SqlConnectionSqlCommand
Select
2
1
2
SQL
1
2
2
Insert
SqlParameter
SQL
Delete Update
StoreProcedure
Functions

new ???Command(cmdText)
new ???Command(cmdText, connection)
???C d(
dT t
ti t ti )
new
???C
omman
d(
c
m
dT
ex
t
, connec
ti
on,
t
ransac
ti
on
)
Thuc tính Ý ngha
Connection
Tr
đn đitng ktni
.
Connection
Tr
đn


truyn

vào
25
Lp trình và Thitk Web 2 – Bài 7: Thao tác CSDL vi ADO .NET
CommandCommand

PhngPhng
thcthc
Command

CommandPhngPhng
thcthc
Phng
thc
Ý
ngha
Phng
thc
Ý
ngha
.ExecuteReader()
Tr v mt DataReader
.ExecuteNonQuery()
Tr v s lng dòng b nh hng trên CSDL


( Provider Microsoft.Jet.OLEDB.
4
.
0
;

Data

Source={0}",
Server.MapPath("~/App_Data/QLHS.mdb"));
 OleDbCommand cmd = new OleDbCommand();
d
Cti
c
m
d
.
C
onnec
ti
on
=
cnn;
cmd.CommandText = "INSERT INTO HocSinh(id_hocsinh,
tenhocsinh, dtb)VALUES(5, 'Nguyn Vn A', 8.5)";
cmd.CommandType = CommandType.Text;
 cnn.Open();
cmd
ExecuteNonQuery
();


Catalog
Northwind
;
Data Source=localhost; user=sa; password=sa;”;
 SqlCommand cmd = new SqlCommand();
d
Cti
cm
d
.
C
onnec
ti
on = cnn;
cmd.
CommandText = "SELECT COUNT(*) FROM Orders";
cmd.CommandT
yp
e = CommandT
yp
e.Text;
yp
yp
 cnn.Open();
int count = (int)cmd.ExecuteScalar();
© 2009 Khoa CNTT - HKHTN
cnn.Close();
28
Lp trình và Thitk Web 2 – Bài 7: Thao tác CSDL vi ADO .NET

ngha
tham
s
tr
uy
n
v
ào
cho
đi
t

ng
Command
 Có các thuc tính sau :
Thuc tính Ý ngha
ParameterName
Tên tham s
SqlDbType
Kiud liuca tham s tng ng vikiud liuca SqlServer
Direction
Input, Output, InputOutput, ReturenValue, …
Size
Kích thc ti đa ca d li

u

Value
Giá tr ca tham s (input / Output)
© 2009 Khoa CNTT - HKHTN

truy
vn
:
?
hoc
@[
tên
tham
s
]

Tham
s
hóa
câu
truy
vn
:

?
hoc
@[
tên
tham
s
]
.
To các parameters tng ng cho command.
tgiátr cho các parameter mi khi dùng command thchin
câu

CommandTe
x
t
=
“SELECT * FROM HocSinh WHERE tenhocsinh =
@ten”;
cmd.CommandText =

INSERT INTO
HocSinh
(
id hocsinh
,
tenhocsinh
,
dtb
)

+
INSERT

INTO

HocSinh
(
id
_
hocsinh
,


© 2009 Khoa CNTT - HKHTN
31
Lp trình và Thitk Web 2 – Bài 7: Thao tác CSDL vi ADO .NET
ParameterParameter
––
ToTo
cáccác
thamtham
ss
chocho
CommandCommand
Parameter

Parameter

––
ToTo
cáccác
thamtham
ss
chocho
CommandCommand
 Sql Data Provider:
ddd
(“
id

lb
)
cm

(
id
,
OleDbType
.
Integer
);
cmd.Parameters.Add(“ten”, OleDbType.VarWChar);
cmd.Parameters.Add(“
dtb”, OleDbType.Numeric);
© 2009 Khoa CNTT - HKHTN
32
Lp trình và Thitk Web 2 – Bài 7: Thao tác CSDL vi ADO .NET
ParameterParameter
––
tt
giágiá
trtr
chocho
cáccác
thamtham
ss
vàvà
thcthc
thithi
Parameter

Parameter

––

dd

GiGi
StoredProcedureStoredProcedure
VíVí
dd

GiGi
StoredProcedureStoredProcedure
© 2009 Khoa CNTT - HKHTN
34
34
Lp trình và Thitk Web 2 – Bài 7: Thao tác CSDL vi ADO .NET
NET Data ProviderNET Data Provider
.
NET

Data

Provider
.
NET

Data

Provider
 Connection
 Command & Parameter
 DataReader
 DataSet & DataAdapter

Select
1
2
SQ
T
t
t 
t
à
khô
li
Select
BookIDBookID BookNameBookName AuthorAuthor
ii Book iBook i Author Author ii

T
ruy xu
t
t
u

n
t
 v
à
khô
ng quay
l
u
i

u
c
tính
&

ph

ng
thc
:
Thuc tính Ý ngha
HasRows
Tr v xem DataReader có đc đc d liu nào không.
FieldCount
Tr v s lng thuc tính trong dòng hin ti (đang đc)
[
int
/string]
Tr
v
giá
tr
ca
thuc
tính
đang
yêu
cu
[
int

IsDBNull(i)
Kim tra xem giá tr ct i có b null không
Close()
óng DataReader
© 2009 Khoa CNTT - HKHTN
37
Lp trình và Thitk Web 2 – Bài 7: Thao tác CSDL vi ADO .NET
VíVí
dd
: Load: Load
dd
liuliu
vàovào
ListList
VíVí
dd
:

Load

:

Load

dd
liuliu
vàovào
ListList
© 2009 Khoa CNTT - HKHTN
38

vàvà
DataAdapterDataAdapter
DataSet
Data source
DataAdapter
DataTable
Fill
Fill
Update
DataTable
DataAdapter
Fill
Update
Fill
© 2009 Khoa CNTT - HKHTN
40
Lp trình và Thitk Web 2 – Bài 7: Thao tác CSDL vi ADO .NET
ii
tngtng
DataSetDataSet
vàvà
DataAdapterDataAdapter
ii
tngtng
DataSetDataSet
vàvà
DataAdapterDataAdapter
 DataSet

c


database)
– Mi thao tác thay đid liu đcthchintrênDataSet,
khô

 h
h 
đ
CSDL
khô
ng

m

n
h
h


ng
đ
n
CSDL
 DataAdapte
r
– Fill: Lyd liut CSDL đ vào DataSet



Update: Theo v

SqlDataReader
SqlCommand SqlCommand SqlCommand SqlCommand
SELECT
SqlConnection
UPDATE
INSERT
DELETE
© 2009 Khoa CNTT - HKHTN
sp_
SELECT
sp_
UPDATE
sp_
INSERT
sp_
DELETE
42
Lp trình và Thitk Web 2 – Bài 7: Thao tác CSDL vi ADO .NET
itng SqlDataAdapteritng SqlDataAdapter
i

tng

SqlDataAdapteri

tng

SqlDataAdapter
 Mt s thuc tính và phng thc
Thuc tính Ý ngha


tng

DataSeti

tng

DataSet
 Mt s thuc tính và phng thc
Thuc tính Ý ngha
DataSetName
Relations
Tables
Danh sách các table có trong Dataset
Phng thc Ý ngha
GetChange()
Tr v DataSet cha các thay đi trên DataSet đang xét
RejectChanges()
AcceptChanges()
GetXML(), ReadXML(), WriteXML()
© 2009 Khoa CNTT - HKHTN
44
Lp trình và Thitk Web 2 – Bài 7: Thao tác CSDL vi ADO .NET
VíVí
dd
VíVí
dd
© 2009 Khoa CNTT - HKHTN
45
45

đngđng
thithi
MtMt
ss
vnvn
đđ
truytruy
xutxut
dd
liuliu
đngđng
thithi
 Lost Update
 Dirty Reads
 Non-repeatable Reads
 Phantoms
Accounts
N
umber int
Name nvarchar(50)
Balance double
© 2009 Khoa CNTT - HKHTN
47
Lp trình và Thitk Web 2 – Bài 7: Thao tác CSDL vi ADO .NET
Lost UpdateLost Update
Lost

UpdateLost

Update

 UPDATE Accounts
SET balance = balance - 100
WHERE number = 123;
WHERE number = 123;
 SELECT balance

ROLLBACK
FROM Accounts
WHERE number = 123
© 2009 Khoa CNTT - HKHTN

ROLLBACK
49
Lp trình và Thitk Web 2 – Bài 7: Thao tác CSDL vi ADO .NET
NonNon

repeatable Readsrepeatable Reads
NonNon
repeatable

Readsrepeatable

Reads
Transaction 1 Transaction 2
 SELECT balance
FROM Accounts
 UPDATE Accounts
SET balance=balance - 100
WHERE number = 123;
WHERE number = 123;

Lp trình và Thitk Web 2 – Bài 7: Thao tác CSDL vi ADO .NET
McMc
đđ
côcô
lplp

IsolationLevelIsolationLevel
McMc
đđ
côcô
lplp

IsolationLevelIsolationLevel
IltiL l
Di t R d
N
RtblRd
Ph t
I
so
l
a
ti
on
L
eve
l
Di
r
t

Thc

hin

giao

tác

vi

ng

dng

CSDLThc

hin

giao

tác

vi

ng

dng

CSDL
 Có 2 cách đ thc hin 1 giao tác (nhiu lnh T-SQL) cho

53
Lp trình và Thitk Web 2 – Bài 7: Thao tác CSDL vi ADO .NET
Thchingiaotácvi ng dng CSDLThchingiaotácvi ng dng CSDL
Thc

hin

giao

tác

vi

ng

dng

CSDLThc

hin

giao

tác

vi

ng

dng


hin

giao

tác

vi

ng

dng

CSDLThc

hin

giao

tác

vi

ng

dng

CSDL
Cách 2Cách 2


SQL

:

Update
2
T-SQL : Select 2
55
Lp trình và Thitk Web 2 – Bài 7: Thao tác CSDL vi ADO .NET
Thchingiaotácvi ng dng CSDLThchingiaotácvi ng dng CSDL
Thc

hin

giao

tác

vi

ng

dng

CSDLThc

hin

giao


T-SQL : Select 1T-SQL : Insert 1T-SQL : Update2T-SQL : Select 2
© 2009 Khoa CNTT - HKHTN
T
-
SQL

:

Update
2
T-SQL : Select 2
56
Lp trình và Thitk Web 2 – Bài 7: Thao tác CSDL vi ADO .NET
itng SqlTransactionitng SqlTransaction
i

tng

SqlTransactioni

tng

SqlTransaction
 Mt s thuc tính và phng thc
Thuc tính Ý ngha
Connection
Trđn đi tng SqlConnection cn to transaction
IsolationLevel
Enum Thitlpmccôlp cho Transaction
Phng thc Ý ngha

dd
VíVí
dd
// Create the connection and transaction objects.
SqlConnection cnn = new SqlConnection( strConnectString );
SqlTransaction
trans = null;
SqlTransaction
trans

=

null;

try {
cnn.Open();
trans = cnn.BeginTransaction();
// Do some stuff here
SqlCommand cmd = new SqlCommand( strQuery, cnn, trans );
cmd.ExecuteNonQuery();
// Commit the transaction.
//

Commit

the

transaction.

trans.Commit();

lplp
IsolationLevelIsolationLevel
VíVí
dd

ThitThit
lplp
IsolationLevelIsolationLevel
© 2009 Khoa CNTT - HKHTN
59
Lp trình và Thitk Web 2 – Bài 7: Thao tác CSDL vi ADO .NET
TngTng
ktkt
TngTng
ktkt
 Phân bit ODBC, OLEDB, ADO, ADO.NET
 Mô hình s dng ADO .NET
– Connection
– Command & Parameter
– DataReader

DataAdapte
r
& DataSet
– Transaction


đ
t
t


Nhờ tải bản gốc
Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status