xử lý dữ liệu với ADO.NET xử lý dữ liệu với ADO.NET xử lý dữ liệu với ADO.NET xử lý dữ liệu với ADO.NET xử lý dữ liệu với ADO.NET xử lý dữ liệu với ADO.NET xử lý dữ liệu với ADO.NET xử lý dữ liệu với ADO.NET xử lý dữ liệu với ADO.NET xử lý dữ liệu với ADO.NET xử lý dữ liệu với ADO.NET xử lý dữ liệu với ADO.NET xử lý dữ liệu với ADO.NET xử lý dữ liệu với ADO.NET xử lý dữ liệu với ADO.NET xử lý dữ liệu với ADO.NET xử lý dữ liệu với ADO.NET xử lý dữ liệu với ADO.NET xử lý dữ liệu với ADO.NET xử lý dữ liệu với ADO.NET xử lý dữ liệu với ADO.NET xử lý dữ liệu với ADO.NET xử lý dữ liệu với ADO.NET xử lý dữ liệu với ADO.NET xử lý dữ liệu với ADO.NET xử lý dữ liệu với ADO.NET xử lý dữ liệu với ADO.NET xử lý dữ liệu với ADO.NET xử lý dữ liệu với ADO.NET xử lý dữ liệu với ADO.NET
Trang 1LÂP TRINH WEB ASP.NET
Trang 2N i dung chí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
Trang 3Gi i thi u v 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
Trang 4Gi i thi u v ADO.NET
Trang 5Gi i thi u v 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
Trang 7Các thành ph 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ó
Trang 8Các thành ph n trong ADO.NET
Trang 9Các thành ph n trong ADO.NET
Trang 10Các thành ph n trong ADO.NET
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
Trang 11Các thành ph 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)
Trang 12Các thành ph n trong ADO.NET
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
Trang 13• 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
Trang 14Các thành ph n trong ADO.NET
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
Trang 15Các thành ph n trong ADO.NET
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 Ph ng ph ng ph áp m i: Ch c n l y d li u 01 l n duy nh t
nh ng d li u v n n m trong các b ng, d dàng thao tác x lý
Trang 16 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
Trang 17Các thành ph n trong ADO.NET
aDataView g n gi ng v i khái ni m RecordSet c a ADO Trên a
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
Trang 19Các c đ đ i t ng trong ADO.NET
<%@ 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
Trang 20 C OleDBConnection và SQLConnection đ u có các thu c tính
và ph ng th c gi ng nhau 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
Trang 21i t 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:
Trang 22i t ng Connection
Ví d 1: T o connection đ n CSDL Microsoft Access
Ví d 2: T o connection đ n CSDL SQL Server
Trang 23i t ng Connection
Trang 24i t ng Connection
Ví d 3: T o connection đ n CSDL SQL Server
Trang 25i t ng Connection
Ví d 4: T o connection đ n CSDL SQL Server
Trang 26Microsoft OLEDB Provider for SQL Server
Trong Tab Provider
Trang 28Provider=SQLOLEDB.1;Persist Security Info=False;User
ID=etest;Initial Catalog=ETEST;Data Source=GOATM
Trang 29Security=SSPI;Persist Security Info=False;Initial
Catalog=ETEST;Data Source=GOATM”
Dim cnn as new SqlConnection(strconnection)
Trang 30i t ng Connection
Các ph ng th c c n chú ý trong Connection
Close: đ óng k t n i v i ngu n d li u S d ng ph ng
th c này đ đóng Connection đang m
Open: Th c hi n k t n i v i các thông tin đã khai báo trong ConnectionString
Dispose: Xóa m i tài nguyên liên quan đ n Connection trên vùng nh
CreateCommand: T o và tr v 01 Command d a vào Connection hi n hành
Ví d :
ConnDB.Open()
ConnDB.Close()
ConnDB.Dispose()
Trang 31i t ng Connection
M t s đ c tính quan tr ng khác c a OleDbConnection
Tr v version c a ngu n CSDLString
ServerVersi
Tr v tên CSDL đã k t n iString
Database
kho ng th i gian c g ng t o liên
k tVD: ConnString= "Provider….;
Trang 32i t ng Command
Sau khi t o k t n i đ n ngu n d li u, m i thao tác trên ngu n
d li u đó đ u đ c th c hi n thông qua Command Tùy theo
lo i Connection, đ i t ng Command thu c tên mi n sau:
Trang 33i t ng Command
Khai báo và s d ng đ i t ng Command:
đ i v i SqlConnection:
• Dim MyCom As SqlCommand
• MyCom = New SqlCommand(ConnString, ConnDB)
đ i v i OleDbConnection
• Dim MyCom As OleDbCommand
• MyCom = New OleDbCommand(ConnString,ConnDB)
Trang 34i t ng Command
II.COMMAND:
Các thu c tính c a Command:
CommandText: l nh SQL hay tên Procedure mu n th c hi n
trên ngu n d li u (đ c ghi)
CommandType:giá tr cho bi t n i dung CommandText là gì
v i các giá tr nh sau:
Text: (m c đ nh)m t câu l nh SQL
StoreProcedure: tên 01 th t c n i
TableDirect: khi CommandType có giá tr này, CommandText là
tên c a 01 b ng Khi Command th c hi n s tr v đ các dòng
và c t ( ch dùng cho OleDbCommand)
Connection: i t ng Connection s d ng cho Command
Parameters: T p h p các tham s dùng trong Command
Trang 35i t ng Command
Các ph ng th c th c hi n Command
c p nh t INSERT, UPDATE, DELETE mà không quan tâm
đ n d li n tr v
Trang 36i t ng Command
li u m i l n m t dòng v i method Read() DataReader đ c d
li u tr c ti p t Database => duy trì k t n i cho đ n khi đ c xong
ExecuteScalar: ph ng th c này th c hi n l nh c a Command và ch tr v giá tr c a c t đ u tiên hay dòng đ u tiên Chúng ta th ng g i ph ng th c này khi mu n Command th c hi n các l nh tính toán Sum, COUNT, AVG…trên ngu n d li u ngay lúc th c thi Cú pháp nh sau:
Trang 37i t ng Command
II.Paramater:
- L nh SQL trong CommandText có th s d ng các d u ? thay
th cho tr không xác đ nh và khi th c hi n s dùng đ i t ng Parameter đ truy n giá tr vào các d u ? Tùy theo Command, Paramater s khai báo t l p OleDBParameter hay SQLParameter Cú pháp khai báo:
Dim <tên parameter> as new OleDbParameter | SqlParameter
Dim <tên parameter> as new OleDbParameter | SqlParameter(<tên>
Trang 38i t ng Command
Paramater:
Các thu c tính c a Parameter:
Direction: giá tr cho bi t lo i tham s v i các giá tr sau: (đ c ghi)
input(m c đ nh): lo i tham s đ u vào
InputOutput: lo i tham s vào và ra
ParameterName: tên tham s (đ c ghhi)
Value: giá tr c a tham s (đ c ghi)
Trang 39i t ng Command
Paramater:
Ví d 1:
cmd.CommandText=“select * from CTNHAP where sopn=@sp”
Dim par as SqlParameter=cmd.CreateParameter()
Par.Parametername=“@sp”
Par.Value=“PN01”
cmd.Parameter.Add(Par)
Trang 40i t ng Command
Paramater:
Ví d 2:
cmd.CommandText=“select * from CTNHAP where sopn=@sp and mavtu=@vt”
Ts1.Value=“S001”
Dim ts2 as SqlClient.Sqlparameter=cmd.parameters.Add(“@sp”,sqlDbType.Char,4) Ts2.Value=“PN01”
Trang 41Quy trình s n xu t 01 CSDL SDL đ n gi đ n gi n
trong ASP.NET
Trang 42Ví d : Create a Database Connection
Trang 43Ví d : Create a Database Command
Trang 44Ví d : Create a DataReader
Trang 45Bind to a Repeater Control and
Close the Database Connection
Trang 46Repeater Control
Trang 48DataSet
Trang 49Ví d : T o o đ đ i t ng DataSet
Trang 50 Các thu c tính c a DataSet:
DataSetName: Tên c a DataSet ( đ c ghi)
HasErrors: giá tr cho bi t l i x y ra trên 01 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)
Trang 51Các ph c ph ng th ng th c c a Dataset
Thêm m t b ng vào Dataset
Mu n đ a 01 b ng DataTable vào Dataset, chúng ta dùng
ph ng th c Add c a t p h p Tables:
Cú pháp:
• Tables.Add(): b ng đ c t o có tên table1, table2,…
• Tables.Add(<tên b ng>): 01 b ng m i đ c t o thành trong Dataset có tên là <tên b ng>
Chú ý: tên b ng có phân bi t ch hoa, ch th ng
Trang 52Các ph c ph ng th ng th c c a Dataset
Xóa b ng ra kh i dataset:
Tables.Remove(<b ng>): xóa b ng ra kh i t p h p Table
Xóa b ng có ch s là <ch s > ra kh i t p h p Tables: Tables.RemoveAt(<ch s >)
Xóa t t c các b ng ra kh i danh sách: Tables.Clear()
L nh ki m tra B ng có th xóa hay không? :
Tables.CanRemove(<b ng>):
• Tr v True: có th xóa
• False: không th xóa vì đang x d ng
Trang 54Các ph c ph ng th ng th c c a Dataset
t o 01 quan h gi a hai b ng trong DataSet:
Chúng ta s d ng cú pháp Add c a t p h p Relation trong Dataset
v i các cú pháp sau:
Relations.Add(<tên quan h >,<m ng DataColumn trên b ng cha>,
<m ng DataColumn trên b ng con>)
Relations.Add(<tên quan h >,< DataColumn trên b ng cha>,<
DataColumn trên b ng con>, < t o ràng bu c>)
Trang 55Các ph c ph ng th ng th c c a Dataset
Xóa quan h kh i DataSet: ta dùng ph ng th c sau:
Relations.Remove(<quan h >)
Xóa quan h ra kh i t p h p Relations c a Dataset
Relations.Remove(< tên quan h >)
Xóa quan h < tên quan h > ra kh i t p h p Relations c a
Dataset
Ki m tra quan h có xóa đ c hay không ?
Relations.CanRemove(<quan h >)
Trang 56 L y c u trúc và d li u c a các b ng trong ngu n d li u vcho DataSet và c p nh t các thay đ i v ngu n d li u g c
Trang 57 DataAdapter là m t b g m b n đ i t ng Command:
SelectCommand: cho phép l y thông tin t ngu n d li u v
InsertCommand: cho phép chèn thêm d li u vào b ng trong ngu n
d li u
UpdateCommand: cho phép s a đ i d li u trog ngu n d li u ngu n
DeleteCommand: cho phép h y b d li u trên b ng trong ngu n d
Trang 58DataAdapter
Trang 59 TableMappings
Trang 60 TableMappings
Trang 61T o DataAdapter
Trang 62Các ch c n ng c a DataAdapter
L y d li u t ngu n v cho DataSet, DataTable qua method Fill
Trang 63Các ch c n ng c a DataAdapter
L y c u trúc d li u t ngu n
Trang 64Các ch c n ng c a DataAdapter
T o b l nh c p nh t cho DataAdapter
Trang 65 D li u các b ng trong ngu n d li u đ c l y v và đ a vào các DataTable DataTable thu c tên mi n:
System.Data.DataTable
Cách khác: Dim Bang_x as New DataTable
Cách khác: Dim bang_x as New DataTable(<tên b ng)
Trang 66DataTable – T p h p Rows
Rows là t p h p các dòng d li u c a b ng vì v y m i tham chi u
đ n dòng đ u thông qua t p h p này
Trang 69Các thu c tính c a DataView
Tr ng thái dòng d li u trên DataView + Added: dòng m i thêm nh ng ch a c p nh t +CurrentRows: t t c các dòng không thay đ i, m i và
Tr v dòng d li u trên b ng theo tham s truy n vào Item
S m u tin trên DataView Count
Cho phép thao tác thêm m i b ng AddNew AllowNew
Cho phép thao tác s a đ i trên DataView
AllowEdit
cho phép thao tác xóa dòng trên DataView AllowDelete