Tin Học Hệ Quản Trị - Toán Tin Dữ Liệu phần 8
lượt xem 5
download
Tham khảo tài liệu 'tin học hệ quản trị - toán tin 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ả
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: Tin Học Hệ Quản Trị - Toán Tin Dữ Liệu phần 8
- 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);
- 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
- 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
- 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)
- 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.
- 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
- 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
- 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:
- 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á.
- 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 :
- 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
- 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
CÓ THỂ BẠN MUỐN DOWNLOAD
-
Toán - Tin Học Hệ Quản Trị phần 1
12 p | 82 | 8
-
Toán - Tin Học Hệ Quản Trị phần 3
12 p | 76 | 7
-
Toán - Tin Học Hệ Quản Trị phần 5
12 p | 56 | 7
-
Toán - Tin Học Hệ Quản Trị phần 2
12 p | 80 | 6
-
Toán - Tin Học Hệ Quản Trị phần 4
12 p | 76 | 6
-
Tin Học Hệ Quản Trị - Toán Tin Dữ Liệu phần 7
12 p | 59 | 6
-
Tin Học Hệ Quản Trị - Toán Tin Dữ Liệu phần 6
12 p | 59 | 6
-
Tin Học Hệ Quản Trị - Toán Tin Dữ Liệu phần 5
12 p | 60 | 6
-
Toán - Tin Học Hệ Quản Trị phần 6
12 p | 62 | 6
-
Toán - Tin Học Hệ Quản Trị phần 7
12 p | 54 | 6
-
Tin Học Hệ Quản Trị - Toán Tin Dữ Liệu phần 1
12 p | 50 | 5
-
Tin Học Hệ Quản Trị - Toán Tin Dữ Liệu phần 10
7 p | 59 | 5
-
Tin Học Hệ Quản Trị - Toán Tin Dữ Liệu phần 4
12 p | 61 | 5
-
Tin Học Hệ Quản Trị - Toán Tin Dữ Liệu phần 2
12 p | 65 | 5
-
Toán - Tin Học Hệ Quản Trị phần 8
12 p | 66 | 5
-
Tin Học Hệ Quản Trị - Toán Tin Dữ Liệu phần 9
12 p | 51 | 4
-
Tin Học Hệ Quản Trị - Toán Tin Dữ Liệu phần 3
12 p | 71 | 4
Chịu trách nhiệm nội dung:
Nguyễn Công Hà - Giám đốc Công ty TNHH TÀI LIỆU TRỰC TUYẾN VI NA
LIÊN HỆ
Địa chỉ: P402, 54A Nơ Trang Long, Phường 14, Q.Bình Thạnh, TP.HCM
Hotline: 093 303 0098
Email: support@tailieu.vn