Tải bản đầy đủ (.doc) (10 trang)

Tài liệu Visual Basic Bách Khoa-Chương 6- Bao quan tài liệu pptx

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 (165.49 KB, 10 trang )

Chương 6 : Các vấn đề về cách bảo quản tài
liệu _ Advance Data Access Issues
Database, nơi chứa những tài liệu mà chúng ta giao cho nó gìn giử. Ðơn giản
như vậy đó !. Nhưng nếu ai cũng vào được để đánh cắp hay sửa đổi chi tiết thì
sao ? Chuyện sẽ trở nên phức tạp liền. Cho nên trong phần này chúng tôi sẽ nói
làm sao để giử gìn tài liệu tốt hơn.
Chương 6 _ Phần 1 _ Ðoạn 1 : Understanding SQL Server Security
Thế nào là SQL Server Security ? Khi các bạn viết ứng dụng cho client, các bạn
phải kế hoạch ứng dụng đó được nối liền với Server như thế nào ? Ai có thể vào
được Database (who can access Database ?), làm sao để vào Database (how to
access Database ?). SQL Server giúp các bạn làm việc này bảo bằng 2 modes
• Standard security mode : Người xử dụng không cần phải phụ thuộc vào hệ
thống Windows NT
• Integrated security mode : Người xử dụng phải ở trong hệ thống Windows
NT
Standard security mode là default security mode của SQL Server. Standard
mode xử dụng SQL Server security model cho mỗi connection vào trong Database.
Ở những nơi gọi là non-trusted environments (không an toàn) như internet chẳng
hạn, thì standard mode giúp các bạn việc thông thương với Database dể dàng. Với
standard mode, người xử dụng không cần phải thông qua Windows NT Server trước
khi được nối liền với Database. Người xử dụng thông qua SQL Server trên hệ thống
internet và phải có các security features (các điều kiện để bước vào kho như
userID, password, chổ nào trong kho...). System Administrator hoặc là Database
Owner (người chịu trách nhiệm gìn giử hệ thống network và tài liệu) làm các userID,
password, nhóm người xử dụng cho mỗi Database trong Server, để khi người xử
dụng muốn vào kho tài liệu để làm việc, họ phải thỏa mản các điều kiện vào kho,
userID và password phải trùng hợp... Do đó, khi viết ứng dụng các bạn phải làm
một trong 3 việc sau đây :
1. Hard-code all connection information. Viết code cho tất cả các connection.
2. Prompt the user for some information and hard-code the rest. Yêu cầu người xử
dụng điền một số chi tiết và viết các phần còn lại.


3. Prompt the user for all information. Yêu cầu người xử dụng phải hoàn chỉnh tất
cả các yêu cầu để thông thương với Data source.
Integrated security mode là hệ thống security hợp nhất, xử dụng bởi Windows NT
kiểm soát toàn bộ các connection của các ứng dụng nối liền vào Database. Cả hệ
thống network đều phải ở trên đường Windows NT chạy qua và từ chuyên nghiệp gọi
là trusted connections hay là trusted environment. Hay nói cách khác là ứng dụng
của các bạn phải được cài đặt trên Windows NT. Do đó, intergrated security yêu cầu
ứng dụng phải ở Windows NT platform mới có thể thực hiện connection được.
Intergrated (hợp nhất) security mode có thể biến đổi password (encrypted
password) khi thực hiện connection, như vậy hệ thống gìn giử tài liệu sẽ khó
xâm nhập hơn. Và chỉ cần 1 password thôi nhưng người xử dụng có thể thông
qua vừa Windows NT, vừa SQL Server. Ðó là lý do vì sao gọi là Intergrated
(hợp nhất) security mode.
Sau đây là click event trình bày lối nối liền vào SQL Server với điều kiện là
người xử dụng phải trả lời đúng userID và password. Standard security mode
hay Intergrated security mode tùy thuộc vào system administration nơi làm việc
của các bạn.
Sub cmdConnect_Click()
Dim sUsername As string
Dim sPassword As string
Dim cnStateUBookstore As Connection
Set cnStateUBookstore = New Connection
sUsername = InputBox("Please enter your user name:")
sPassword = InputBox("Please enter your password:")
With cnStateUBookstore
.Provider = "SQLOLEDB"
.ConnectionString = "User ID=" & sUsername & _
";Password=" & sPassword & _
";Data Source=MSERIES1;" & _
"Initial Catalog=StateUBookstore"

.Open
End With

End Sub

Chương 6 _ Phần 2 : Xử dụng Cursor
Khi một Recordset object được tạo thành, thì theo mục đích của ứng dụng, một
số tài liệu nhất định sẽ được xử dụng thường xuyên dựa trên SQL query statement.
Số tài liệu này gọi là nhóm tài liệu. Nhóm tài liệu được xử dụng thường xuyên này
gọi là cursor, bởi vì nó biểu hiện một nơi nhất định nào đó trong Database mà ứng
dụng xài thường xuyên. Cursor không hẳn nghĩa là nơi mà khi bạn bấm chuột hay
bấm nút Enter trên màn ảnh máy vi tính thì công việc đó sẽ được thi hành. Như vậy,
với SQL statement, cursor chúng ta sẽ hiểu là một nhóm tài liệu được xử dụng
thường xuyên (specific records based on a SQL query)
Có 4 thể loại cursor (cursor type) và 2 nơi chứa đựng (cursor location). Mời
các bạn theo dỏi, chúng tôi sẽ trình bày tiếp sau đây.
Chương 6 _Phần 2 _ Ðoạn 1 : Choosing Cursor Type
Bốn thể loại cursor trong recordset object là : forward-only, static, dynamic và
keyset. Hai nơi mà cursor có thể đặt vào là Server side và Client side. Mời các
bạn theo dỏi các tính chất của thể loại và nơi chốn của cursor sau đây, để về
sau, các bạn có thể quyết định nên xử dụng thể loại nào ?
Forward-Only Cursors : là thể loại đương nhiên có sẳn trong recordset
object (default recordset cursor type). Trong thể loại này chứa đựng MoveNext
method khi bạn tìm đọc tài liệu. Và vì thế cho nên khi các bạn thêm vào các
method khác để tìm đọc tài liệu thì sẽ bị run-time errors. Thể loại này thích hợp
cho trường hợp bạn có số lượng nhỏ tài liệu mà thôi. Keyword cho thể loại này
là adOpenForwardOnly. Ðây là click-event biểu diển việc làm là khi mở bản tài
liệu ra, thể loại Forward-Only Cursor đồng thời có mặt trong recordset object :
Sub cmdOpenRecordset_Click()
Dim rsPublishers As Recordset

Set rsPublishers = New Recordset
With rsPublishers
.Open "SELECT pub_id FROM Publishers",
cnStateUBookstore, _
adOpenForwardOnly
End With
End Sub

Static Cursors : Với thể loại này, nó không cập nhật hóa các thay đổi về tài
liệu khi có người xử dụng thay đổi chi tiết trong bản tài liệu. Theo thứ tự, thì các
chi tiết trong bản tài liệu sẽ được cập nhật hóa sau khi recordset mở ra để xử
dụng. Thí dụ như ứng dụng của bạn xử dụng static cursor type, bạn làm việc
với một chi tiết (record) trong bản tài liệu (recordset), đồng thời cùng lúc có
người xử dụng thay đổi chi tiết đó (chi tiết mà bạn đang cần) thì chi tiết mà
Database cung cấp cho bạn thấy sẽ là chi tiết củ chưa cập nhật hóa, chứ không
phải là chi tiết mới. Khi bạn đóng recordset lại và khi bạn mở ra, thì lúc đó, bạn
sẽ thấy chi tiết mà được sửa đổ sẽ cập nhật. Các bạn xử dụng thể loại này khi
các bạn cần nhiều cách thức tìm kiếm tài liệu uyển chuyển (flexible navigation)
và không cần thiết phải nhìn thấy tài liệu cập nhật. Keyword cho thể loại này là
adOpenStatic. Sau đây là click event trong đó xử dụng thể loại static cursor

Sub cmdOpenRecordset_Click()
Dim rsPublishers As Recordset
Set rsPublishers = New Recordset
With rsPublishers
.Open "SELECT pub_id FROM Publishers",
cnStateUBookstore, _
adOpenStatic
End With
End Sub


Dynamic cursor : Dynamic cursor được xử dụng nhiều nhất trong các thể loại
cursors. Bởi vì dynamic cursor có thể cập nhật hóa các chi tiết trong bản tài liệu
ngay lập tức sau khi có sự thay đổi. Thí dụ như các bạn làm việc với 2 records
trong một recordset, một trong 2 chi tiết đó bị xóa bỏ đi và chi tiết khác thì được
thay đổi, thì dynamic cursor sẽ trình bày cho các bạn thấy một chi tiết mới đã
được cập nhật hóa và các bạn sẽ không thấy chi tiết đã xóa bỏ đi rồi. Do đó, thể
loại dynamic cursor rất thích hợp cho các ứng dụng làm việc với các chi tiết cần
phải cập nhật ngay tức thì ( từ chuyên nghiệp gọi là live Data). Keyword cho thể
loại này là adOpenDynamic. Sau đây là click event trình bày làm sao để cài đặt
dynamic cursor vào trong recordset.

Sub cmdOpenRecordset_Click()
Dim rsPublishers As Recordset
Set rsPublishers = New Recordset
With rsPublishers
.Open "SELECT pub_id FROM Publishers",
cnStateUBookstore, _
adOpenDynamic
End With
End Sub


Keyset cursor : keyset cursor là thể loại nằm giửa static và dynamic cursor.
Giống như static cursor, keyset cursor không phải lúc nào cũng chấp nhận sự
thay đổi của tài liệu, và chi tiết mới trong bản tài liệu sẽ không được trình bày
cho tới khi bản tài liệu được mở trở lại sau khi đóng. Giống dynamic cursor là
keyset cursor cập nhật ngay những thay đổ trong recorset. Các bạn xử dụng thể
loại này khi các bạn cần theo dỏi các chi tiết mà mình phải sửa đổi nhưng không
cần thiết phải nhìn thấy các record bị xóa đi hay thêm vào. Keyword cho thể loại

này là adOpenKeyset. Sau đây là click event nói về cách cài đặt Keyset cursor
vào trong ứng dụng.

Sub cmdOpenRecordset_Click()
Dim rsPublishers As Recordset
Set rsPublishers = New Recordset
With rsPublishers
.Open "SELECT pub_id FROM Publishers",
cnStateUBookstore, _
adOpenKeyset
End With
End Sub

Chương 6 _Phần 2 _ Ðoạn 2 : Choosing Cursor Location

Server Side Cursor : Có 2 phía mà cursor được cài đặt là phía Server và
phía Client. Server side cursor là nơi tất nhiên mà ADO sẽ đặt cursor vào. Xử
dụng Sever side cursor sẽ tiện lợi hơn là client side cursor vì ít gặp trở ngại về
phương tiện tryuền thông (less network traffic). Ðể đặt Server side cursor vào
trong ứng dụng bạn phải xác định CursorLocation của recordset Object là
adUseServer. Sau đây là click event trình bày cho chúng ta thấy làm sao cài
đặt Server-side cursor vào trong ứng dụng.

Sub cmdOpenRecordset_Click()
Dim rsStudents As Recordset
Set rsStudents = New Recordset
With rsStudents
.CursorLocation = adUseServer
.Open "SELECT StudentID FROM Students",
cnStateUBookstore

End With
End Sub
Client-side Cursors : Client-side cursors sẽ được tạo nên nếu các bạn hoán
chuyển CursorLocation property của Recordset object thành adUseClient. Sau
đó, các dử kiện trong recordset sẽ được cất giử ở phía client. Lợi ích của Client-
Cursors là các bạn vẫn có thể làm việc với recordset mà không cần phải thông
thương với Database Mainframe (Server). Ðiểm bất lợi là Client-cursors chỉ làm việc
được với thể loại Static cursor type mà thôi. Và nếu dử kiện quá lớn (size of
recordset) sẽ giới hạn rất nhiều trong việc cập nhật hóa tư liệu.
Do đó, Client-side cursor chỉ thích hợp cho ứng dụng mà nó làm việc với số lượng
nhỏ tư liệu mà thôi. Sau đây là click event trình bày làm sao để có cursors ở bên
phía client.
Sub cmdOpenRecordset_Click()
Dim rsStudents As Recordset
Set rsStudents = New Recordset
With rsStudents
.CursorLocation = adUseClient
.Open "SELECT StudentID FROM Students",
cnStateUBookstore
End With
End Sub
Chương 6 _ Phần 3 : Enforcing Data Integrity
Khi các bạn viết ứng dụng, các tư liệu phải được điều hành một cách hoàn chỉnh.
Ứng dụng của bạn có thực tiển hay không đều lệ thuộc vào cách điều hành tư liệu.
Từ chuyên nghiệp trong Visual Basic gọi là Data integrity. Và làm sao để điều hành
và quản lý tốt tài liệu, chúng tôi sẽ lần lượt trình bày cùng các bạn 4 vấn đề sau
đây :
1. Using Record Locking. Tài liệu được khóa bằng cách nào ?
2. Using Database Transactions. Cách trao đổi dử kiện.
3. SQL Server Data Integrity Features. Những chuyện mà SQL Server có

thể làm được để bảo quản tài liệu một cách hoàn chỉnh.
4. Handling Referential Integrity Errors. Tránh trở ngại khi tiến hành ứng
dụng.
Chương 6 _ Phần 3 _ Ðoạn 1 : Using Record Locking
Khi các bạn tạo thành một recordset (bản tài liệu), việc chọn lọc thể loại khóa
(LockType) cho Data giúp cho ứng dụng của bạn có thể manage (điều hành) người
xử dụng đi vào trong bản tài liệu dể dàng hơn. Có nghỉa là không phải ai cũng có

×