intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Quản Lý Dữ Liệu - Cơ Sở Dữ Liệu phần 8

Chia sẻ: Qwdqwgferhrt Verbnrtjheth | Ngày: | Loại File: PDF | Số trang:12

89
lượt xem
14
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Tham khảo tài liệu 'quản lý dữ liệu - cơ sở dữ liệu phần 8', công nghệ thông tin, cơ sở dữ liệu phục vụ nhu cầu học tập, nghiên cứu và làm việc hiệu quả

Chủ đề:
Lưu

Nội dung Text: Quản Lý Dữ Liệu - Cơ Sở Dữ Liệu phần 8

  1. 83 Bài gi ng tóm t t H qu n tr cơ s d li u Unlock(A) Lock-S(B) Grant-S(B,T ) 2 Read(B) Unlock(B) Display(A+B) Lock-X(A) Grant-X(A,T ) 1 Read(A) A:=A+50 Write(A) Unlock(A) Th i l ch 12 Bây gi gi s r ng tháo khóa b làm tr n cu i giao d ch. Giao d ch T3 tương ng v i T1 v i tháo khóa b làm tr ư c nh nghĩa như sau: T3 : Lock-X(B); Read(B); B:=B-50; Write(B); Lock-X(A); Read(A); A:=A+50; Write(A); Unlock(B); Unlock(A); Giao d ch T4 tương ng v i T2 v i tháo khóa b làm tr ư c xác nh như sau: T4 : Lock-S(A); Read(A); Lock-S(B); Read(B); Display(A+B); Unlock(A); Unlock(B);
  2. 84 Bài gi ng tóm t t H qu n tr cơ s d li u Các th i l ch có th trên T3 và T4 không cho T4 hi n th tr ng thái không nh t quán. Tuy nhiên, s d ng khóa có th d n n m t tình hu ng không mong i. Ta xét th i l ch 13 g m m t ph n công vi c trên T3 và T4 sau: T3 T4 Lock-X(B) Read(B) B:=B-50 Write(B) Lock-S(A) Read(A) Lock-S(B) Lock-X(A) Th i l ch 13 Do T3 gi m t khóa phương th c Exclusive trên B, nên yêu c u m t khóa phương th c shared c a T4 trên B ph i ch n khi T3 tháo khóa. Cũng v y, T3 yêu c u m t khóa Exclusive trên A trong khi T4 ang gi m t khóa shared trên nó và như v y ph i ch . Ta g p ph i tình hu ng trong ó T3 ch i T4 ng th i T4 ch i T3, m t s ch i vòng tròn, và như v y không giao d ch nào có th ti n tri n. Tình hu ng này ư c g i là deadlock (khóa ch t). Khi tình hu ng khóa ch t x y ra h th ng bu c ph i cu n l i m t trong các giao d ch. M i khi m t giao d ch b cu n l i, các m c d li u b khóa b i giao d ch ph i ư c tháo khóa và nó tr nên s n có cho giao d ch khác, như v y các giao d ch này có th ti p t c ư c s th c hi n c a nó. N u ta không s d ng khóa ho c tháo khóa m c d li u ngay khi có th sau c ho c vi t m c, ta có th rơi vào tr ng thái không nh t quán. M t khác, n u ta không tháo khóa m t m c d li u trư c khi yêu c u m t khóa trên m t m c d li u khác, deadlock có th x y ra. Có các phương pháp tránh deadlock trong m t s tình hu ng, tuy nhiên nói chung deadlock là khó tránh khi s d ng khóa n u ta mu n tránh tr ng thái không nh t quán. Deadlock ư c ưa thích hơn tr ng thái không nh t quán vì chúng có th i u khi n ư c b ng cách cu n l i các giao d ch trong khi ó tr ng thái không nh t quán có th d n n các v n th c t mà h CSDL không th i u khi n. Nghi th c khóa (locking protocol) Xét { T0 , T1 , ..., Tn } m t t p các giao d ch tham gia vào th i l ch S. Ta nói Ti i trư c Tj trong S, và ư c vi t là Ti → Tj , n u t n t i m t m c d li u Q sao cho Ti gi
  3. 85 Bài gi ng tóm t t H qu n tr cơ s d li u khóa phương th c A trên Q , Tj gi khóa phương th c B trên Q mu n hơn và comp(A,B) = false. N u Ti → Tj , thì Ti s xu t hi n trư c Tj trong b t kỳ th i l ch tu n t nào. Ta nói m t th i l ch S là h p l dư i m t nghi th c khóa n u S là m t th i l ch tuân th các quy t c c a nghi th c khóa ó. Ta nói r ng m t nghi th c khóa m b o tính kh tu n t xung t n u và ch n u i v i t t c các th i l ch h p l , quan h → k t h p là phi chu trình. C p khóa Khi m t giao d ch Ti yêu c u m t khóa trên m t m c d li u Q phương th c M, khóa s ư c c p n u các i u ki n sau ư c th a mãn: (i) Không có giao d ch khác ang gi m t khóa trên Q phương th c xung t v i M. (ii) Không có m t giao d ch nào ang ch ư c c p m t khóa trên M và ã ưa ra yêu c u v khóa trư c Ti. Nghi th c khóa hai kỳ (Two-phase locking protocol) Nghi th c khóa hai kỳ là m t nghi th c m b o tính kh tu n t . Nghi th c này yêu c u m i m t giao d ch phát ra yêu c u khóa và tháo khóa qua hai giai o n: 1. Giai o n tăng trư ng (Growing phase): m t giao d ch có th nh n ư c các khóa, nhưng nó không th tháo b t kỳ khóa nào. 2. Giai o n thu h p (Shrinking phase): m t giao d ch có th tháo các khóa nhưng không th nh n ư c m t khóa m i nào. Kh i u, m t giao d ch giai o n tăng trư ng. Giao d ch ư c c p các khóa c n thi t. M i khi giao d ch tháo m t khóa, nó i vào giai o n thu h p và nó không th phát ra b t kỳ m t yêu c u khóa nào n a. Các giao d ch T3 và T4 là hai kỳ. Các giao d ch T1 và T2 không là hai kỳ. Nghi th c khóa hai kỳ m b o tính kh tu n t xung t, nhưng không m b o tránh ư c deadlock và vi c cu n l i hàng lo t. Cu n l i hàng lo t có th tránh ư c b i nghi th c khóa hai kỳ nghiêm ng t. Nghi th c khóa hai kỳ nghiêm ng t (Strict Two-Phase Locking) g m hai lu t: 1. M t giao d ch T mu n c (s a) m c d li u Q nó ph i yêu c u c p khóa Shared (Exclusive) trên Q. 2. T t c các khóa do m t giao d ch ang n m gi ư c gi i phóng khi giao d ch ư c bàn giao. M t s tinh ch nghi th c khóa hai kỳ cơ s d a trên vi c cho phép chuy n i khóa: nâng c p m t khóa shared sang exclusive và h c p m t khóa exclusive thành khóa shared. Chuy n i khóa không th cho phép m t cách tuỳ ti n, nâng c p ch ư c phép
  4. 86 Bài gi ng tóm t t H qu n tr cơ s d li u di n ra trong giai o n tăng trư ng, còn h c p ch ư c di n ra trong giai o n thu h p. M t giao d ch th nâng c p m t khóa trên m t m c d li u Q có th ph i ch . Nghi th c khóa hai kỳ v i chuy n i khóa cho phép ch sinh ra các th i l ch kh tu n t xung t. N u các khóa exclusive ư c gi n t n khi bàn giao, các th i l ch s là cascadeless. Các th t c liên quan ư c s d ng trong nghi th c khóa 2 kỳ nghiêm ng t: • lock-S(Q): yêu c u m t khóa shared trên m c d li u Q. • lock-X(Q): yêu c u m t khóa exclusive trên m c d li u Q. • unlock(Q): thu h i (gi i phóng, tháo) khóa trên m c d li u Q. • Upgrade(Q): chuy n i khóa t phương th c shared (S) sang phương th c exclusive (X) trên m c d li u Q, Upgrade ch ư c phép x y ra trong giai o n tăng trư ng (giai o n xin khóa). • Downgrade(Q): chuy n i khóa t phương th c exclusive sang phương th c shared trên m c d li u Q, Downgrade ch ư c phép x y ra trong giai o n thu h p (giai o n tháo khóa). Ta xét m t ví d : Các giao d ch T8 và T9 ư c nêu trong ví d ch ư c trình bày b i các ho t ng ý nghĩa là Read và Write. T8 : Read(A1); Read(A2); ... Read(An); Write(A1). T9 : Read(A1); Read(A2); Display(A1 + A2). N u ta s d ng nghi th c khóa hai kỳ, khi ó T8 ph i khóa A1 phương th c exclusive. B i v y, s th c hi n tương tranh c a hai giao d ch tr thành th c hi n tu n t . Ta th y r ng T8 c n m t khóa exclusive trên A1 ch cu i s th c hi n c a nó, khi nó write(A1). Như v y, T8 có th kh i ng khóa A1 phương th c shared và i khóa này sang phương th c exclusive sau này. Như v y ta có th nh n ư c tính tương tranh cao hơn, vì như v y T8 và T9 có th truy xu t n A1 và A2 ng th i. T8 T9 Lock-S(A1) Lock-S(A2)
  5. 87 Bài gi ng tóm t t H qu n tr cơ s d li u Lock-S(A2) Lock-S(A2) Lock-S(A3) … Unlock(A1) Unlock(A2) UpGrade(A1) Chú ý r ng m t giao d ch th c p nh t m t khóa trên m t m c d li u Q có th bu c ph i ch . Vi c ch b t bu c này x y ra khi Q ang b khóa b i giao d ch khác phương th c shared. Nghi th c khóa hai kỳ v i chuy n i khóa ch sinh ra các th i l ch kh tu n t xung t, các giao d ch có th ư c tu n t hoá b i các i m khóa c a chúng. Hơn n a, n u n t n khi k t thúc giao d ch, th i l ch s là cascadeless. các khóa exclusive ư c gi Qu n lý khóa Trong h qu n tr CSDL, các khóa c a các giao d ch ư c qu n lý b i b ph n qu n lý khóa (lock manager) thông qua b ng khóa (lock table). M i m c c a b ng khóa tương ng v i m t i tư ng (trang, m u tin, …) ch a các thông tin: s lư ng giao d ch ang gi khóa trên i tư ng này (s lư ng giao d ch có th > 1 n u i tư ng ư c khóa theo phương th c Shared), phương th c khóa (Shared hay Exclusive), con tr n hàng i yêu c u khóa trên i tư ng ó. Khi m t giao d ch Ti c n m t khóa trên m t m c d li u Q, nó g i m t yêu c u c p khóa n b qu n lý khóa, yêu c u ư c x lý như sau: 1. N u yêu c u m t khóa Shared, hàng i các yêu c u c a m c Q là r ng và m c d li u Q không b khóa theo phương th c Exclusive thì b ph n qu n lý khóa c p khóa cho giao d ch Ti và c p nh t l i thông tin trên b ng khóa. 2. N u yêu c u m t khóa Exclusive và không có giao d ch nào ang gi khóa trên Q thì b ph n qu n lý khóa c p khóa cho giao d ch Ti và c p nh t l i thông tin trên b ng khóa. 3. Ngư c l i, thêm yêu c u này vào hàng i khóa c a m c d li u Q và giao d ch Ti t m th i ngưng. Khi giao d ch ư c bàn giao ho c b b d , nó ph i tháo t t c các khóa nó ang n m gi . Khi m t khóa ư c gi i phóng, b qu n lý khóa c p nh t l i b ng khóa và xem xét c p phát khóa cho các yêu c u khóa ang trong hàng i tương ng.
  6. 88 Bài gi ng tóm t t H qu n tr cơ s d li u Qu n lý deadlock M t h th ng tr ng thái deadlock n u t n t i m t t p h p các giao d ch sao cho m i giao d ch trong t p h p ang ch m t giao d ch khác trong t p h p. Chính xác hơn, t n t i m t t p các giao d ch { T0 , T1 , ..., Tn } sao cho T0 ang ch m t m c d li u ư c gi b i T1 , T1 ang ch m t m c d li u ang b chi m b i T2 , ..., Tn-1 ang ch m t m c d li u ư c gi b i Tn và Tn ang ch m t m c T0 ang chi m. Không m t giao d ch nào có th ti n tri n ư c trong tình hu ng như v y. M t cách x lý tình hu ng này là cu n l i m t vài giao d ch tham gia vào deadlock. Có hai phương pháp chính gi i quy t v n deadlock: ngăn ng a deadlock, phát hi n deadlock và khôi ph c. Nghi th c ngăn ng a deadlock m b o r ng h th ng s không bao gi i vào tr ng thái deadlock. Sơ phát hi n deadlock và khôi ph c (deadlock- detection and deadlock-recovery scheme) cho phép h th ng i vào tr ng thái deadlock và sau ó c g ng khôi ph c. C hai phương pháp u có th d n n vi c cu n l i giao d ch. Phòng ng a deadlock thư ng ư c s d ng n u xác su t h th ng i vào deadlock cao, phát hi n và khôi ph c hi u qu hơn trong các trư ng h p còn l i. Phòng ng a deadlock (Deadlock prevention) M t cách phòng ng a deadlock là s d ng th t ưu tiên và cu n l i quá trình. V i th t ưu tiên, m t giao d ch T2 yêu c u m t khóa b gi b i giao d ch T1 , khóa ã c p cho T1 có th b l y l i và c p cho T2 , T1 b cu n l i. i u khi n ưu tiên, ta gán m t nhãn th i gian duy nh t cho m i giao d ch. H th ng s d ng các nhãn th i gian này quy t nh m t giao d ch ph i ch hay cu n l i. Khóa v n ư c s d ng i u khi n tương tranh. N u m t giao d ch b cu n l i, nó v n gi nhãn th i gian cũ c a nó khi tái kh i ng. Hai sơ phòng ng a deadlock s d ng nhãn th i gian khác nhau ư c ngh : Wait-Die d a trên k thu t không ưu tiên. Khi giao d ch Ti yêu c u m t m c 1. Sơ d li u b chi m b i Tj , Ti ư c phép ch ch n u nó có nhãn th i gian nh hơn c a Tj n u không Ti b cu n l i (die). Wound-Wait d a trên k thu t ưu tiên. Khi giao d ch Ti yêu c u m t m c 2. Sơ d li u hi n ang b gi b i Tj , Ti ư c phép ch ch n u nó có nhãn th i gian l n hơn c a Tj , n u không Tj b cu n l i (Wounded). M t i u quan tr ng là ph i m b o r ng, m i khi giao d ch b cu n l i, nó không b “ch t ói” (starvation) có nghĩa là nó s không b cu n l i l n n a và ư c phép ti n tri n. Wound-Wait và Wait-Die u tránh ư c s ch t ói: t i m t th i i m, C hai sơ có m t giao d ch v i nhãn th i gian nh nh t. Giao d ch này không th b yêu c u cu n l i trong c hai sơ . Do nhãn th i gian luôn tăng và do các giao d ch không ư c gán nhãn
  7. 89 Bài gi ng tóm t t H qu n tr cơ s d li u th i gian m i khi chúng b cu n l i, m t giao d ch b cu n l i s có nhãn th i gian nh nh t (vào th i gian sau) và s không b cu n l i l n n a. Tuy nhiên, có nh ng khác nhau l n trong cách th c ho t ng c a hai sơ : Wait-Die, m t giao d ch già hơn ph i ch m t giao d ch tr hơn gi i • Trong sơ phóng m c d li u. Như v y, giao d ch già hơn có xu hư ng b ch nhi u hơn. Ngư c Wound-Wait, m t giao d ch già hơn không bao gi ph i ch m t giao l i, trong sơ d ch tr hơn. Wait-Die, n u m t giao d ch Ti ch t và b cu n l i vì nó òi h i m t m c • Trong sơ d li u b gi b i giao d ch Tj , khi ó Ti có th ph i tái phát ra cùng dãy các yêu c u khi nó kh i ng l i. N u m c d li u v n b chi m b i Tj , Ti b ch t l n n a. Như v y, Ti có th b ch t vài l n trư c khi nh n ư c m c d li u c n thi t. Trong sơ Wound-Wait, giao d ch Ti b thương và b cu n l i do Tj yêu c u m c d li u nó chi m gi . Khi Ti kh i ng l i, và yêu c u m c d li u, bây gi , ang b Tj gi , Ti Wound-Wait. ch . Như v y, có ít cu n l i hơn trong sơ M tv n n i tr i i v i c hai sơ là có nh ng cu n l i không c n thi t v n x y ra. Sơ d a trên timeout M t cách ti p c n khác qu n lý deadlock ư c d a trên lock timeout. Trong cách ti p c n này, m t giao d ch ã yêu c u m t khóa ph i ch nhi u nh t m t kho ng th i gian xác nh. N u khóa không ư c c p trong kho ng th i gian này, giao d ch ư c g i là mãn kỳ (time out), giao d ch t cu n l i và kh i ng l i. N u có m t deadlock, m t ho c m t vài giao d ch dính líu n deadlock s time out và cu n l i, các giao d ch khác ti n tri n. Sơ này n m trung gian gi a phòng ng a deadlock và phát hi n và khôi ph c deadlock. Sơ timeout d th c thi và ho t ng t t n u giao d ch ng n và n u s ch i lâu là do deadlock. Tuy nhiên, khó quy t nh ư c kho ng th i gian timeout. Sơ này cũng có th ưa n s ch t ói. Phát hi n deadlock và khôi ph c N u m t h th ng không dùng nghi th c phòng ng a deadlock, khi ó sơ phát hi n và khôi ph c ph i ư c s d ng. M t gi i thu t ki m tra tr ng thái c a h th ng ư c g i theo m t chu kỳ xác nh xem deadlock có x y ra hay không. N u có, h th ng ph i khôi ph c l i t deadlock, mu n v y h th ng ph i: • Duy trì thông tin v s c p phát hi n hành các m c d li u cho các giao d ch cũng như các yêu c u m c d li u chưa ư c gi i quy t. • Cung c p m t thu t toán s d ng các thông tin này xác nh h th ng ã i vào
  8. 90 Bài gi ng tóm t t H qu n tr cơ s d li u tr ng thái deadlock chưa. • Ph c h i t deadlock khi phát hi n ư c deadlock ã x y ra. Phát hi n deadlock Deadlock có th mô t chính xác b ng th nh hư ng ư c g i là th ch (wait for graph). th này g m m t c p G = < V, E >, trong ó V là t p các nh và E là t p các cung. T p các nh g m t t c các giao d ch trong h th ng. M i ph n t c a E là m t c p Ti → Tj , nó ch ra r ng T ch Tj gi i phóng m t m c d li u nó c n. i Khi giao d ch Ti yêu c u m t m c d li u ang b gi b i giao d ch Tj khi ó cung Ti→Tj ư c thêm vào th . C nh này b xoá i ch khi giao d ch Tj không còn gi m c d li u nào mà Ti c n. Deadlock t n t i trong h th ng n u và ch n u th ch ch a m t chu trình. M i giao d ch tham gia vào chu trình này ư c g i là b deadlock. phát hi n deadlock, h th ng ph i duy trì th ch và g i theo m t chu kỳ th t c tìm ki m chu trình. Ta xét ví d sau: th ch (phi chu trình) Do th không có chu trình nên h th ng không trong tr ng thái deadlock. Bây gi , gi s T28 yêu c u m t m c d li u ư c gi b i T27 , cung T28 → T27 ư c thêm vào th , i u này d n n t n t i m t chu trình T26 → T28 → T27 → T26 có nghĩa là h th ng rơi vào tình tr ng deadlock và T26 , T27 , T28 b deadlock. Vn t ra là khi nào thì ch y th t c phát hi n? câu tr l i ph thu c hai yêu t sau:
  9. 91 Bài gi ng tóm t t H qu n tr cơ s d li u 1. Deadlock thư ng x y ra hay không? 2. Bao nhiêu giao d ch s b nh hư ng b i deadlock? N u deadlock thư ng x y ra, vi c ch y th t c phát hi n di n ra thư ng xuyên hơn. Các m c d li u ư c c p cho các giao d ch b deadlock s không s n dùng cho các giao d ch khác n khi deadlock b phá v . Hơn n a, s chu trình trong th có th tăng lên. Trong trư ng h p x u nh t, ta ph i g i th t c phát hi n m i khi có m t yêu c u c p phát không ư c c p ngay. Khôi ph c t deadlock Khi thu t toán phát hi n xác nh ư c s t n t i c a deadlock, h th ng ph i khôi ph c t deadlock. Gi i pháp chung nh t là cu n l i m t vài giao d ch phá v deadlock. Ba vi c c n ph i làm là: 1. Ch n n n nhân. ã cho m t t p các giao d ch b deadlock, ta ph i xác nh giao d ch nào ph i cu n l i phá v deadlock. Ta s cu n l i các giao d ch sao cho giá ph i tr là t i thi u. Nhi u nhân t xác nh giá c a cu n l i: a. Giao d ch ã tính toán ư c bao lâu và bao lâu n a. b. Giao d ch ã s d ng bao nhiêu m c d li u. c. Giao d ch c n bao nhiêu m c d li u n a hoàn t t. d. Bao nhiêu giao d ch b cu n l i. 2. Cu n l i (Rollback). M i khi ta ã quy t nh ư c giao d ch nào ph i b cu n l i, ta ph i xác nh giao d ch này b cu n l i bao xa. Gi i pháp ơn gi n nh t là cu n l i toàn b : b d giao d ch và b t u l i nó. Tuy nhiên, s là hi u qu hơn n u ch cu n l i giao d ch xa như c n thi t phá v deadlock. Nhưng phương pháp này òi h i h th ng ph i duy trì các thông tin b sung v tr ng thái c a t t c các giao d ch ang ch y. 3. S ch t ói (Starvation). Trong m t h th ng trong ó vi c ch n n n nhân d a trên các nhân t giá, có th x y ra là m t giao d ch luôn là n n nhân c a vi c ch n này và k t qu là giao d ch này không bao gi có th hoàn thành. Tình hu ng này ư c g i là s ch t ói. Ph i m b o vi c ch n n n nhân không ưa n ch t ói. M t gi i pháp xem s l n b cu n l i c a m t giao d ch như m t nhân t v giá.
  10. 92 Bài gi ng tóm t t H qu n tr cơ s d li u Chương 5 L P TRÌNH CƠ S D LI U I. L p trình v i ADO.NET 1. Gi i thi u 1.1. DataSet và DataTable: • DataSet là trung tâm c a ki n trúc ADO.NET, m c tiêu là h tr hi u qu thao tác trên d li u t nhi u ngu n, cũng như tương tác d li u trong mô hình ng d ng nhi u l p (multiple tier). • Có th xem DataSet như là m t c u trúc d li u lưu tr d li u trong b nh chính. DataSet ch a m t t p các i tư ng DataTable (có c u trúc logic tương t như m t b ng trong CSDL), các ràng bu c trên chúng và c m i quan h gi a các b ng này. • M t i tư ng DataTable (ho c m t view c a nó thu c l p DataView), có th ư c k t bu c v i các control như ComboBox, DataList, DataGrid,… • Các l p i tư ng DataSet, DataTable, DataView, DataColumn,… n m trong namespace System.Data. 1.2. Data Provider : • Trong namespace System.Data có 3 namespace tương ng v i 3 lo i Data Provider: Data Provider for SQL Server (System.Data.SqlClient), Data Provider for ODBC (System.Data.Odbc) và Data Provider for OLE DB (System.Data.OleDb). ây ta s d ng h qu n tr SQL Server, nên s s d ng tr c ti p Data Provider • for SQL Server (t t nhiên ta cũng có th thông qua Provider for ODBC ho c OLE DB thao tác v i CSDL SQL Server). • Các l p i tư ng chính k t n i và thao tác v i CSDL là trong namespace System.Data.SqlClient là: SqlConnection, SqlCommand, SqlDataReader, SqlDataAdapter. (Tương t i v i hai Provider còn l i). 1.2.1. SqlConnection : M t i tư ng thu c l p này th hi n m t k t n i n CSDL. Các thông s kt n i ư c ch nh trong Connection String Ví d :
  11. 93 Bài gi ng tóm t t H qu n tr cơ s d li u //dùng Window Authentication ConnectionString = “Data Source = .; Initial Catalog = Northwind; Integrated Security = SSPI” ho c : ConnectionString= “Data Source = .; Initial Catalog = Northwind; User ID = ws01; Password=” (d u “.” ch local host) 1.2.2. SqlCommand : M t i tư ng thu c l p này th hi n m t l nh th c thi trên h qu n tr CSDL. Có th thi t l p thu c tính CommandType c a i tư ng Command ch ra l nh ư c khai báo d ng text hay là tên stored procedure. 1.2.3. SqlDataReader : là l p i tư ng dùng c k t qu truy v n ư c t CSDL. Có th xem SqlDataReader là m t RecordSet ch có th c và c tu n t m t chi u. 1.2.4. SqlDataAdapter : m t i tư ng Data Adapter có th xem như m t c u n i gi a DataSet và CSDL, chuy n d li u t CSDL vào DataSet và c p nh t nh ng thay i trên DataSet tr l i vào CSDL. 1.3. Trình t thao tác CSDL v i ADO.Net : • T o l p và thi t l p các thông s cho i tư ng Connection (n u chưa thi t l p trư c ó). • M k t n i b ng phương th c Open c a i tư ng Connection. • Th c hi n các công vi c c/ghi v i CSDL v a k t n i t i. óng k t n i. • Lưu ý: Không ph i luôn luôn m và óng k t n i m i khi th c hi n m t l nh, có th m k t n i m t l n và th c hi n nhi u l nh trư c khi óng nó. Luôn s d ng try và catch b t các l i phát sinh t CSDL khi th c hi n các l nh m k t n i ho c th c thi l nh trong i tư ng command, n u có l i hi n th thông i p l i d hi u cho ngư i s d ng (NSD). 2. c d li u Trong ph n này ch mô t m t s i m c n lưu ý, sinh viên t tìm hi u cách th c hi n c th trong các ví d và ebook ư c cung c p ho c MSDN. 2.1. Data Reader DataReader là cách t t (ti t ki m tài nguyên - b nh ) c d li u trong trư ng h p ch c n l y d li u hi n th , không c n thao tác ph c t p hay thao tác trên nhi u t p
  12. 94 Bài gi ng tóm t t H qu n tr cơ s d li u d li u (không c n n datatable hay dataset). 2.2. DataAdapter • Như ã nói trên, ta có th s d ng DataAdapter như là m t c u n i l y d li u t CSDL vào Dataset. Ta có th nh nghĩa ho c không nh nghĩa trư c b ng ( i tư ng DataTable) và c u trúc c a b ng s nh n d li u. N u l nh tr v n t p d li u, n b ng tương ng s ư c t o ra trong dataset ch a các t p d li u này. l y d li u, ta s d ng phương th c Fill c a i tư ng DataAdapter. Phương • th c này có nhi u hàm quá t i (overload), h tr nhi u cách truy n tham s (DataSet, DataTable, DataSet và tên DataTable,…). • Phương th c Fill có th ư c g i mà không c n m k t n i trư c, trong trư ng h p này, k t n i tương ng s ư c m và óng l i ngay sau khi th c hi n xong vi c l y d li u. Lưu ý: Trong trư ng h p ta mu n d li u ưa vào i tư ng DataTable th a ràng bu c khóa chính (t ng lo i b d li u trùng trên khóa chính n u có), ta có th thi t l p thu c tính MissingSchemaAction c a i tư ng DataAdapter là AddWithKey. Tuy nhiên, t l a ch n này s làm ch m áng k quá trình c d li u, thay vào ó, n u có th ta nên nh nghĩa trư c c u trúc và khóa chính c a i tư ng DataTable này, r i c bình thư ng, tác d ng cũng s tương t . 2.3. ExecuteScalar : Trong trư ng h p câu truy v n ch tr v m t giá tr , ta s d ng phương th c ExecuteScalar c a i tư ng command th c thi truy v n và nh n giá tr tr v . Lưu ý: Trong trư ng h p ta g i th c thi m t th t c (v i CommandType là stored procedure), giá tr c a các tham s output mà ta khai báo trong Parameters c a command s ư c c p nh t tương ng. 3. Ghi d li u 3.1. ExecuteNonQuery Cách thông d ng nh t ghi d li u là ưa tr c ti p các l nh c p nh t d li u (Insert, Update, Delete, l nh t o các i tư ng trong CSDL) (và h u h t các l nh T-SQL khác), ho c tên c a th t c thư ng trú th c hi n các công vi c này vào m t i tư ng Command, sau ó g i phương th c ExecuteNonQuery c a i tư ng Command th c hi n. 3.2. DataAdapter DataAdapter th c hi n c p nh t CSDL theo cách ánh x nh ng thay i trên
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2