Đề cương: Các Ví Dụ Nâng Cao Công
Nghệ Phần Mềm
Biên tập bởi:
Khoa CNTT ĐHSP KT Hưng Yên
Đề cương: Các Ví Dụ Nâng Cao Công
Nghệ Phần Mềm
Biên tập bởi:
Khoa CNTT ĐHSP KT Hưng Yên
Các tác giả:
Khoa CNTT ĐHSP KT Hưng Yên
Phiên bản trực tuyến:
/>MỤC LỤC
1. Lời mở đầu
2. Bài 1: Lập trình hướng thành phần (HTP)
2.1. Giới thiệu và Định nghĩa
2.2. Hợp lệ hoá dữ liệu. Ngôn ngữ vấn tin cơ sở dữ liệu. Kết nối cơ sở dữ liệu sử
dụng công nghệ ADO.
2.2.1. Công cụ hợp lệ hoá dữ liệu trong Visual Basic
2.2.2. Ngôn ngữ vấn tin cơ sở dữ liệu (Structure Query Language)
2.2.3. Kết nối cơ sở dữ liệu sử dụng công nghệ ADO (ActiveX Data Objects)
2.2.4. Truy xuất dữ liệu sử dụng công nghệ ADO
3. Bài 2: Lập trình đa tầng
3.1. Giới thiệu
3.2. Kiến trúc đa tầng
3.3. Phát triển ứng dụng đa tầng
4. Bài 3: Lập trình mạng
4.1. Lập trình mạng
5. Bài 4: Kiến trúc hướng dịch vụ (webservice)
5.1. Kiến trúc hướng dịch vụ (webservice)
6. Bài 5: Thiết kế mẫu (Design Pattern)
6.1. Thiết kế mẫu (Design Pattern)
7. Bài 6: Công nghệ Hibernate
7.1. Công nghệ Hibernate
8. Bài 7: Công nghệ Ajax
8.1. Công nghệ Ajax
9. Bài 8: Mã nguồn mở
9.1. Mã nguồn mở
10. Tài liệu tham khảo
Tham gia đóng góp
1/169
Lời mở đầu
Công nghệ thông tin đang phát triển mạnh mẽ, để phát triển được những dụng trong thực
tế thì việc sử dụng một số phương pháp và công nghệ phát triển phần mềm tiên là điều
không thể thiếu đối với người phát triển.
Module giới thiệu cho người học một số chủ đề nâng cao của Công nghệ phần mềm:
Giới thiệu một số phương pháp phát triển phần mềm tiến, áp dụng cho những bài toán
có qui mô lớn như phát triển phần mềm theo mô hình Client-Server; Component-Based;
web-service, design pattern ;
Giới thiệu một số công nghệ phát triển phần mềm mà tại thời điểm tương ứng đang được
áp dụng trong các công ty phần mềm, như: Công nghệ Hibernate, Ajax, ;
Trên cơ sở đó giao các chủ đề cụ thể cho từng sinh viên/ nhóm sinh viên tìm hiểu và
cài đặt ứng dụng, sau đó trình bày trước lớp nhắm hiện thực hóa những phương pháp và
công nghệ tiên tiến phát triển phần mềm.
2/169
Bài 1: Lập trình hướng thành phần (HTP)
Giới thiệu và Định nghĩa
Giới thiệu
Lập trình hướng thành phần (HTP)- component-oriented programming
Xuất phát từ lập trình hướng đối tượng, tư duy lập trình hướng thành phần (component-
oriented programming) theo ý tưởng:
• Giải quyết bài toán bằng cách xây dựng một tập các thành phần (component) có
tính độc lập tương đối với nhau. Mỗi thành phần đảm nhiệm một phần công
việc nhất định.
• Sau đó, người ta ghép các thành phần với nhau để thu được một phần mềm thoả
mãn một tập các yêu cầu xác định
Với lập trình hướng thành phần, người ta có thể tiến hành lập trình theo phương pháp
sau:
• Xây dựng một thư viện các thành phần, mỗi thành phần thực hiện một công
việc xác định.
• Khi cần phát triển một phần mềm cụ thể, người ta chỉ cần chọn những thành
phần có sẵn trong thư viện để ghép lại với nhau. Người lập trình chỉ phải phát
triển thêm các thành phần mình cần mà chưa có trong thư viện.
Phương pháp này có những ưu điểm rất lớn:
• Lập trình viên có thể chia sẻ với nhau những thành phần mình đã xây dựng cho
nhiều người khác dùng chung.
Khi cần, lập trình viên có thể lắp ghép các thành phần có sẵn khác nhau để tạo thành các
chương trình có chức năng khác nhau. Tất cả chỉ cần dựa trên công nghệ lắp ghép thành
phần, tiết kiệm được rất nhiều công sức lập trình.
Định nghĩa về lập trình HTP
Một số định nghĩa về "lập trình hướng thành phần":
Thành phần (component): là một phần không tầm thường của hệ thống, gần như độc
lập và có thể thay thế được, giữ một chức năng rõ ràng trong hệ thống. Một component
3/169
có thể là một trong ba loại: source code component; runtime component; executable
component.
Lập trình hướng thành phần là kiểu lập trình có xu hướng chia hệ thống phần mềm thành
những thành phần, giữ các chức năng khác nhau, mà khi phối hợp chúng ta sẽ hệ thống
phần mềm đó. Lập trình hướng thành phần sử dụng chung nhiều quan niệm của "lập
trình hướng đối tượng", nhưng hai khái niệm này là độc lập với nhau.
4/169
Hợp lệ hoá dữ liệu. Ngôn ngữ vấn tin cơ sở dữ liệu. Kết nối
cơ sở dữ liệu sử dụng công nghệ ADO.
Công cụ hợp lệ hoá dữ liệu trong Visual Basic
Hợp lệ hoá dữ liệu là làm cho dữ liệu nhập vào đảm bảo tính hợp lệ.
Hợp lệ hoá sử dụng sự kiện LostFocus và phương thức SetFocus
Sự kiện LostFocus xảy ra mỗi khi một điều kiểm mất tiêu điểm. Ta có thể viết mã lệnh
trong sự kiện này để kiểm soát xem dữ liệu khi dời khỏi điều kiểm đã hợp lệ chưa. Nếu
như dữ liệu chưa hợp lệ ta có thể yêu cấu người nhập dữ liệu phải nhập lại. Như vậy ta
phải dời tiêu điểm về điều kiểm. Khi đó ta sẽ sử dụng phương thức SetFocus để đặt lại
tiêu điểm cho điều kiểm.
Khung của thủ tục LostFocus như sau:
Private Sub ControlName_ LostFocus()
‘ Mã Code
End Sub
Ví dụ:
Private Sub TxtTen_ LostFocus()
If len(TxtTen.Text)=0 then
Msgbox “Tên không được rỗng !”
TxtTen.SetFocus
End If
End Sub
Hợp lệ hoá sử dụng sự kiện Validate
Sự kiện Validate xảy ra trước khi người dùng có thể dịch chuyển tiêu điểm ra xa điều
kiểm đó. Do đó ta có thể đặt mã lệnh để kiểm soát tính hợp lệ của dữ liệu trong sự kiện
5/169
Validate nhằm ngăn cản người dùng dịch chuyển tiêu điểm cho đến khi các tiêu chuẩn
về hình dạng dữ liệu được thoả mãn.
Khung của thủ tục Validate như sau:
Private Sub ControlName_ Validate(Cancel As Boolean)
‘ Mã Code
End Sub
Nếu bạn xác lập Cancel là True thì người dùng sẽ không có khả năng dời khỏi điều kiểm
này cho đến khi người đó nhận được đữ liệu đúng
VD:
Private Sub TxtTen_ Validate(Cancel As Boolean)
If len(TxtTen.Text)=0 then
Msgbox “Tên không được rỗng !”
Cancel=True
End If
End Sub
Trên thực tế VB cung cấp cho bạn một dòng lệnh để bảo vệ VB còn tạo ra biến cố
Validate cho điều khiển dữ liệu mỗi khi bản ghi hiện hành sắp được thay đổi Ví dụ bằng
phương pháp Move First hoặc trứơc khi xử lý phương pháp Update, Delete hoặc Close.
Cú pháp cho thủ tục biến cố này như sau:
Sub DataControlName_ Validate([Index As Integer,] Action As Integer, Save_ As
Integer)
End Sub
≅
Chú y: Bạn không nên đặt phương pháp bất kỳ trong biến cố Validate làm thay đổi
bản ghi hiện hành. Kết quả sẽ là sự chuyển đổi biến cố vô tận. Các phương pháp truy
cập dữ liệu bạn có thể đặt vào biến cố này chỉ gồm UpdateRecord, UpdateControls, bởi
vì chúng đều không sinh ra biến cố Validate. Điều này cung cấp cho bạn phương pháp
cập nhật cở dữ liệu hoặc các điều khiển gắn kết trong thủ tục biến cố đó
6/169
Trong đó tham số tuỳ chon Index được dùng nếu điều khiển dữ liệu là phần của mảng
điều khiển một mảng điều khiển. Tham số Action được gởi bởi VB cho thủ tục biến cố
và báo nguyên nhân thực sự để biến cố Validate được tạo ra. Dưới đây là danh sách các
hằng kí hiệu được xây dựng trong VB khả dĩ cho sự kiện Validate
Constant Value Description
vbDataActionCancel 0 Cancel the operation when the Sub exits
vbDataActionMoveFirst 1 MoveFirst method
vbDataActionMovePrevious 2 MovePrevious method
vbDataActionMoveNext 3 MoveNext method
vbDataActionMoveLast 4 MoveLast method
vbDataActionAddNew 5 AddNew method
vbDataActionUpdate 6 Update operation (not UpdateRecord)
vbDataActionDelete 7 Delete method
vbDataActionFind 8 Find method
vbDataActionBookmark 9 The Bookmark property has been set
vbDataActionClose 10 The Close method
vbDataActionUnload 11 The form is being unloaded
Nếu bạn thay đổi tham số Action thành vbDataActionCancel thì VB sẽ xoá thao tác này
trước khi rời khỏi thủ tục Sub. Ngoài ra nếu bạn thay đổi tham số Action sang một trong
các giá trị khác, VB sẽ thực thi thao tác đó thay vì thao tác ban đầu khi thủ tục trải qua.
Ví dụ, nếu thủ tục biến cố Validate đã được xảy ra do phương pháp MoveFirst và trong
tiến trình của thủ tục bạn có dòng
Action=vbDataActionMoveLast
Thì VB sẽ dịch chuyển bản ghi hiện hành đến cuối bảng đó. Bạn chỉo có thể dùng khả
năng này nếu các hành động đó là tương thích. VD: bạn không thể thay đổi tham số hành
động MoveFirst sang tham số vbDataActionUnload mà không có lỗi.
Tham số Save nhận hai giá trị True, False. Nếu thông tin bất kỳ trong các điều khiển gắn
kết data-aware đã được thay đổi, tham số này là True. Điều đó cho bạn một phương pháp
phân tích thông tin có trong điêug khiển gắn kết trước khi cập nhật cơ sở dữ liệu. Để xác
định các điều khiển data-aware nào đã được thay đổi, bạn dùng tính chất DataChanged
7/169
của điều khiển đó. Tính chất này là True nếu nội dung của điều khiển đã được thay đổi
và là False nếu không được thay đổi.
Hợp lệ hoá sử dụng sự kiện KeyPress, KeyUp, KeyDown
- Các sự kiện trên xảy ra trên các điều kiểm theo bảng sau:
Sự kiện Xảy ra khi
KeyPress
Người sử dụng nhấn và thả một phím trên bàn phím trong khi một đối
tượng đang trong tầm ngắm
KeyDown
Người sử dụng nhấn một phím trên bàn phím trong khi một đối tượng
đang trong tầm ngắm
KeyUp
Người sử dụng thả một phím trên bàn phím trong khi một đối tượng đang
trong tầm ngắm
Cú pháp của các biến cố này như sau:
Private Sub ControlName_ KeyPress(KeyAscii As Integer)
End Sub
Private Sub ControlName_ KeyDown(KeyCode As Integer, Shift As Integer)
End Sub
Private Sub ControlName_ KeyUp(KeyCode As Integer, Shift As Integer)
End Sub
Trong đó tham số KeýyAscii và KeyCode là mã ASCII của kýy tự vừa được nhấn. Tham
số Shift có thể nhận các giá trị sau
Constant Value Description
vbShiftMask 1 SHIFT key bit mask.
VbCtrlMask 2 CTRL key bit mask.
VbAltMask 4 ALT key bit mask.
8/169
Như vậy ta có thể đặt mã lệnh trong các sự kiện này để kiểm soát xem các phím được
nhấn xem có hợp lệ hay không và có thể huỷ bỏ những ky tự nhận được bằng cách gán
KeyCode=0
Ví dụ:
Private Sub TxtSo_KeyPress(KeyAscii As Integer)
Static dautru As Boolean
Static daucham As Boolean
Select Case KeyAscii
Case vbKeyBack, vbKeyLeft, vbKeyRight, Asc("0") To Asc("9")
Case Asc("-")
If (txtso.SelStart <> 0) Or dautru = True Then
KeyAscii = 0
Else
dautru = True
End If
Case Asc(".")
If daucham = True Then
KeyAscii = 0
Else
daucham = True
End If
Case Else
KeyAscii = 0
9/169
End Select
End Sub
Hợp lệ hoá sử dụng sự kiện MouseDown, MoseUp
- Các sự kiện trên xảy ra trên các điều kiểm theo bảng sau:
Sự kiện Xảy ra khi
MouseDown
Người sử dụng nhấn một nút chuột bất kỳ trong khi con trỏ chuột đang
nằm trên một đối tượng.
MouseUp
Người sử dụng thả một nút chuột bất kỳ trong khi con trỏ chuột đang
nằm trên một đối tượng.
Cú pháp của các biến cố này như sau:
Private Sub ControlName_ MouseUp(Button As Integer, Shift As Integer, X As_
Single, Y As Single)
End Sub
Private Sub ControlName_ MouseDown(Button As Integer, Shift As Integer, X As_
Single, Y As Single)
End Sub
Constant (Button) Value Description
vbLeftButton 1 Left button is pressed
vbRightButton 2 Right button is pressed
vbMiddleButton 4 Middle button is pressed
Constant (Shift) Value Description
vbShiftMask 1 SHIFT key is pressed.
vbCtrlMask 2 CTRL key is pressed.
vbAltMask 4 ALT key is pressed.
10/169
Ta có thể đặt mã lệnh để kiểm soát tính hợp lệ của dữ liệu trong hai sự kiện nhằm ngăn
cản sự chấp nhận dữ liệu cho đến khi các tiêu chuẩn về hình dạng dữ liệu được thoả
mãn.
Ví dụ:
Private Sub Cmdnhap_MouseDown(Button As Integer, Shift As Integer, X As Single,_
Y As Single)
If Len(txtten) = 0 Then
MsgBox "Nhap ho ten!"
txtten.SetFocus
End If
End Sub
11/169
Ngôn ngữ vấn tin cơ sở dữ liệu (Structure Query Language)
Cơ sở dữ liệu là gì?
Cơ sở dữ liệu là một kho chứa thồn tin. Có nhiều loại cơ sở dữ liệu.
Cơ sở dữ liệu và quan hệ chính là một loại cơ sở dữ liệu phổ biến nhất hiện nay. Một cơ
sở dữ liệu bao gồm:
• Chứa dữ liệu trong các bảng, đựơc cấu tạo bởi các dòng còn gọi là các mẩu
tin,và cột còn gọi là các trường.
• Cho phép lấy về (hay truy vấn) các tập dữ liệu con từ các bảng
• Cho phép nối các bảng với nhau cho mục điứch truy cập các mẩu tin liên quan
đến nhau chứa trong các bảng khác nhau.
Bộ máy (Engine) cơ sở dữ liệu là gì?
Chức năng cơ bản của một cơ sở dữ liệu được cung cấp bởi một bộ máy cơ sở dữ liệu,
là hệ thống chương trình quản lý cách thức chứa và trả về dữ liệu. Như bộ máy cơ sở dữ
liệu Microsoft Jet, Microsoft SQL Server…
Bảng và trường.
Các cơ sở dữ liệu được cấu tạo từ các bảng dừng thể hiện các phân nhóm dữ liệu. Ví
dụ nếu ta tạo một cơ sở dữ liệu để quản lýy các tài khoản trong công việc kinh doanh,
ta phải tạo một bảng cho khách hàng, một bảng cho hoá đơn và một bảng cho nân viên.
Bảng có cấu trúc định nghĩa sẵn và chứa dữ liệu phù hợp với cấu trúc này
• Bảng chứa các mẩu tin là các mẩu dữ liệu riêng rẽ bên trong phân nhóm dữ
liệu.
• Mốu tin: Chứa các trường. Mỗi trường thể hiện một bộ phận dữ liệu trong một
mẩu tin.
Thiết kế một cở dũ liệu: để tạo một cở dữ liệu trước hết ta phải xác định thông tin gì
cần theo dõi. Sau đó ta thiết kế cơ sở dữ liệu tạo bảng chứa các trường định nghĩa các
kiểu dữ liệu sẽ có sau ki tạo ra cấu trúc cơ sở dữ liệu, cơ sở dữ liệu có thể chứa dữ liệu
dưới dạng mẩu tin. Ta không thể đưa dữ liệu vào mà không có các bảng hay định nghĩa
trường vì dữ liệu sẽ không có chỗ để chứa. Do đó thiết kế cơ sở dũ liệu cức kỳ quan
trọng nhất là rất khó thay đổi mộ khi đã tạo xong nó.
12/169
Giữa các bảng trong cùng một cơ sở dữ liệu có những mối liên hệ với nhau. Khi ta định
nghĩa một mối quan hệ ta đã thông báo với bộ máy cơ sở dữ liệu biết rằng hai trường
trong hai bảng liên quan được nối với nhau.
Recordset là gì?
Một khi ta đã biết tạo bảng ta phải biết thao tác với chúng. Thao tác trên các bảng liên
quan đến việc nhập và lấy dữ liệu từ các bảng khác nhau cũng như việc kiểm tra sửa đổi
cấu trúc bảng. Để thao tác với cấu trúc bảng ta dùng câu lệnh định nghĩa dữ liệu (Câu
lệnh truy vấn) hoặc một đối tượng TableDef. Để thao tác các dữ liệu trong bảng ta dùng
RecorSet.
Một Recordset là một cấu trúc dữ liệu thể hiện một tập hợp con các mẩu tin lấy về từ cơ
sở dữ liệu. Về khái niệm nó tương tự một bảng nhưng có thêm một vài thuộc tính riêng
biệt quan trọng.
Các Recordset thể hiện như là các đối tượng, về khái niệm tương tự như là các đối
tượng giao diện người sử dụng. Cũng như các đói tượng khác trong VB các đối tượng
Recordset có các thuộc tính và phương thức riêng.
Ta có thể lập trình để tạo và sử dụng các Recordset theo một trong ba thư viện truy cập
dữ liệu:
• Các đối tượng truy cập dữ liệu (DAO)
• Các đối tượng truy cập dữ liệu từ xa (RDO)
• Các đối tượng dữ liệu Active (ADO)
Ngôn ngữ SQL
Các câu truy vấn SQL cho ta khả năng lấy về các mẩu tin từ một bảng cơ sở dữ liệu, đối
chiếu các quan hệ cơ sở dữ liệu với nhau trong nhiều bảng và thao tác với cấu trúc cơ sở
dữ liệu.
SQL(Structure Query Language) là giải pháp chuẩn để thao tác với cơ sở dũ liệu. Nó
được thực hiện theo nhiều dạng khac nhau trong các hệ thống cơ sở dữ liệu quan hệ bao
gồm MicroSoft Access và SQL Server. Nói chung SQL được dùng để tạo câu truy vấn
dùng để trích dữ liệu từ cơ sở dũ liệu với một số lượng lớn các câu lệnh dùng để thi hành
các chức năng khác trên cơ sở dữ liệu như tạo bảng và trường.
Các câu lệnh SQL được chia làm hai loại:
• DDL(Data definition language): Ngôn ngữ định nghĩa dữ liệu
• DML (Data manipulation languge): Ngôn ngữ thao tác dữ liệu
13/169
• DCL(Data control language ): Ngôn ngữ điều khiển dữ liệu
• TCL(Transaction control languge): Ngôn ngữ điều khiển phiên dao dịch
14/169
Kết nối cơ sở dữ liệu sử dụng công nghệ ADO (ActiveX Data Objects)
Công nghệ Open Database Connectivity (ODBC)
ODBC là công nghệ Windows cho phép sử dụng client nối với cơ sở dữ liệu từ xa. Lưu
trú trên máy Cilent, ODBC tìm cách làm cho nguồn dữ liệu quan hệ trở thành tổng quát
đối với ứng dụng Client. Điều này có nghĩa là ứng dụng Client không cần quan tâm kiểu
dữ liệu cơ sở mà nó đang nối là gì.
Bởi vì đây là công nghệ phía Client, ODBC không đòi hỏi phải xử lý trên Servercuar cơ
sở dữ liệu.
ODBC gồm 3 phần :
- Trình quản lý điều khiển (Driver maneger)
• Một hay nhiều trình điều khiển (Driver)
• Một hay nhiều nguồn dữ liệu (Data source).
Kiến trúc của ODBC
Tạo nguồn dữ liệu ODBC.
Để tạo một ứng dụng Client nối với cơ sở dữ liệu Client/Server dùng ODBC, trước hết
ta phải cung cấp thông tin về nguồn dữ liệu trên client. Mỗi server yêu cầu những gói
thông tin khác nhau để nối với client. ODBC cung cấp cho thông tin này một tên đơn
giản để ta có thể tham chiếu đến nó, thay vì phải thiết lập gói thông tin từ đầu mỗi lần ta
cần đến nó. Điều này cung cấp cho ứng dụng Client khả năng tham chiếu một cách dễ
dàng đến tổ hợp của một điều khiển, một cơ sở dữ liệu và có thể thêm tên một người sử
dụng và mật khẩu. Tên này chính là tên của nguồn dữ liệu hay DSN.
Để tạo một tên nguồn dữ liệu ODBC trên máy Client, ta theo các bước sau:
+ Đảm bảo có một SQL Server đang hoạt động vàg có thể truy cập nó từ máy Client.
+ Từ Start chọn Setting chọn ConTrol Panel
15/169
+ Nhấn đúp chuột lên biểu tượng ODBC. Hộp thoại quản trị nguồn dữ liệu xuất hiện:
Ta có thể tạo một trong ba kiểu nguồn dữ liệu ODBC:
+ User DSN: Chỉ có một người tạo ra nó được sử dụng nó và chỉ trên máy đang dùng.
+ System DSN: Bất kỳ ai sử dụng máy này cũng có thể dùng được. Đây cũng là kiểu
nguồn dữ liệu mà ta cần tạo khi cài đặt ứng dụng cơ sở dữ liệu Web.
+ File DSN: Có thể được copy và sử dụng dễ dàng bởi máy khác.
Tạo System DSN
1. Chọn Vào Tab System DSN trong cửa sổ ODBC Data Source Administrator.
2. Nhấn nút Add
3. Hộp thoại Create New Data Source xuất hiện, chọn tên của diều khiển cơ sở dữ
liệu ta muốn dùng
4. Nhấn Finish. Trình tạo nguồn cơ sở mới xuất hiện.
5. Trong ô Name nhập tên của nguồn dữ liệu. Tên này sẽ được dùng trong ứng
dụng Client để tham chiếu đến cơ sở dữ liệu, vì vậy nên đặt tên sao cho dễ nhớ.
6. Điền vào ô Description thông tin mô tả về cơ sở dữ liệu, thông tin này chỉ hiển
thị trong cửa sổ Control Panel
7. Trong hộp kết hợp Server, chọn chọn bộ máy cơ sở dữ liệu.
8. Nhấn Next, màn hình kế tiếp của trình tự động xuất hiện, hỏi ta cách Login vào
Server.
16/169
9. Màn hình kế tiếp của trình tự động xuất hiện, chọn vào hộp đánh dấu “Change
the Default database to” rồi chọn cơ sở dữ liệu vừa đạt tên
10. Nhấn Next màn hình kế xuất hiện, nhắc ta chọn thông dịch bộ ký tự (thông
thường ta để mặc định trừ phi ta sử dụng bộ ký tự khác trên Server) nhấn next
11. Màn hình kế cho ta chọn khả năng kích hoạt tác vụ ghi nhật ký . Thông thường
ta chỉ chuyển nó thành On nếu ta đang gặp lỗi hay tìm kiếm những nguyên
nhân ách tắc trong ứng dụng.
Nếu bật tuỳ chọn này thành on và quên không tắt nó thành off thì đay chính là nguyên
nhân phổ biến của sự suy biến của khả năng hoạt động truy vấn khi sử dụng ODBC, Vì
là công cụ gỡ rối nên nhớ chuyển nó thành off khi ta đưa ứng dụng thành sản phẩm.
1. Nhấn Finish, hộp thoại xuất hiện mô tả chi tiết của nguồn dữ liệu mà ta vừa tạo.
Sau đó nhấn nút Test Data Source. Trình điều khiển sẽ đáp ứng bằng cách
thông báo một kết nối vừa được thiết lập thành công.
Công nghệ OLE DB (Object Linking and Embedding Data Base)
OLE DB là một tập hợp các hệ giao tiếp truy cập dữ liệu của Microsoft dùng để cung cấp
sự tích hợp dữ liệu chung trên một doanh nghiệp bất chấp loại dữ liệu. Những giao diện
này cho phép các nguồn dữ liệu chia sẻ thông tin của chúng qua các giao diện chung mà
không cần bổ sung các chức năng CSDL không có trong nơi lưu trữ.
Ta chỉ cần lập trình với phần giao diện của người sử dụng ở phía Client, bởi vì sự truy
cập dữ liệu trên cả trình trình duyệt Web và ứng dụng Visual Basic được chuyển hết về
phía ActiveX Server, ta có thể đảm bảo rằng logic chương trình luôn nhất quán, bất kể
loại chương trình nào đang được dùng.
Chỉ ra trình cung cấp OLE DB và chuỗi kết nối
Nếu không chỉ ra trình cung cấp, hoặc ta không dùng đối tượng Connection, ta sẽ có một
trình cung cấp mặc định là trình cung cấp ODBC MSDASQL
Dùng đối tường connection của ADO để kết nối với nguồn dữ liệu.
Thuộc tính Provider của đối tượng Connection là chuỗi ký tự chỉ ra kết nối mà trình
cung cấp OLE DB sẽ dùng, dùng chuỗi kết nối trong ADO ConnectionString để cung
cấp thông tin về cách thức kết nối với Server. Tuỳ thuộc vào nguồn dữ liệu mà thông tin
kết nối khác nhau:
- Khi ta dùng trình cung cấp ODBC:
cn.provider = “MSDASQL”
17/169
cn.ConnectionString = “DSN = tracnghiem”
Tất nhiên một DSN tên là tracnghiem phải thực sự tồn tại trên máy Client.
Trường hợp kết nối không có DSN
cn.provider = “MSDASQL”
cn.ConnectionString = “Driver =SQL Server; DataBase =Tracnghiem; UID=Hue;
PID=minhhue; ”
Kết nối này sẽ nhanh hơn vì không cần đọc thông tin DSN từ bảng đăng ký của
Windows. Tuy nhiên nó kém linh hoạt hơn vì nó gắn chặt thông tin đã được biên dịch
- Dùng trình cung cấp Jet thì chuỗi kết nối là đường dẫn và tập tin MDB:
cn.Provider = ”Microsoft.Jet.OLEDB.4.0 ”
cn.ConnectionString = “c:\data\dulieu.mdb”
Để kết nối cơ sở dữ liệu bảo mật của trình cung cấp Jet thì ta phải cung cấp thêm thông
tin thông qua tập hợp Properties của đối tượng connection. Thường là tên người sử dụng,
mật khẩu, vị trí của cơ sở dữ liệu chứa thông tin về bảo mật.
Cn.Provider = “Microsoft.Jet.OLEDB.4.0”
Cn.ConnectionString =”C:\data\dulieu.mdb”
Cn.Properties(“PassWord”) = “minhhue”
Cn.Properties(“User ID”) = “Hue”
- Để nối với cơ sở dữ liệu SQL Server, ta dùng trình cung cấp SQLOLEDB.1
cn.Provider = “SQLOLEDB.1”
cn.ConnectionString = “DATABASE = dulieu; SERVER = NameServer; UID = hue;
PWD = minhhue”
Lưu ý trường hợp này, chuỗi kết nối của SQL Server tương tự với chuỗi kết nối không
có DSN, ngoại trừ tham số DRIVER=
- Để kết nối với Oracle, ta dùng trình điều khiển Oracle gọi là MSDAORA
18/169
cn.Provider =”MSDAORA”
cn.ConnectionString = User/MyPassWord@ServiceName
Trên đây là cách kết nối Oracle chuẩn, tổ hợp tên người sử dụng, mật khẩu và tên dịch
vụ. Ta còn có thể logon vào Oracle bằng cách cung cấp Server, tên người sử dụng như
tham số cho phương thức Open của đối tượng connection
Dim cn As ADODB.Connection
Set cn = New ADODB.connection
cn.Provider = “MSDAORA”
cn.Open “Server”, “UserID”, “PasWord”
Công nghệ Data Access Object (DAO)
Ta có thể dùng DAO để thao tác với cơ sở dữ liệu (CSDL) thông qua môi trường lập
trình Visual Basic 6.0, với DAO ta có thể thi hành các câu truy vấn, cập nhật giá trị,
trong các bảng CSDL và tạo cấu trúc CSDL bao gồm các bảng, các câu truy vấn chứa
sẵn và mối quan hệ giữa các bảng.
Mô hình đối tượng DAO khá phức tạp với hàng trăm yếu tố, hàng tá kiểu tập hợp chứa
rất nhiều đối tượng xử lý CSDL. Thông qua các tập hợp sở hữu bởi đối tượng DataBase,
ta có thể thao tác trên dữ liệu và cấu trúc của CSDL chứa trong một CSDL
Trong lập trình DAO, có một tập hợp cốt lõi gồm các kỹ thuật thông dụng được sử dụng
gần như cho mọi chương trình. Chúng bao gồm:
- Thi hành câu truy vấn SELECT để lấy về các dữ liệu từ CSDL
- Duyệt qua từng mẩu tin trong một RecordSet
- Thi hành câu truy vấn hành động (Update, Delete và Append, )
- Sửa đổi cấu trúc CSDL
- Xử lý lỗi phát sinh bởi truy cập CSDL
+ Các tập hợp hiện có trong lập trình DAO 3.5 và thể hiện của chúng:
Tập hợp Thể hiện Giao diện
19/169
WorkSpaces
Thể hiện kết nối mở cho bộ máy CSDL, thông
thường ta chỉ có thể có 1 workspace hoạt động
tại thời điểm hiện thời
Thuộc tính Count,
Append, Delete
phương thức Refresh
DataBase
Tất cả các CSDL được mở trong 1 workspace,
thường ta chỉ có 1 CSDL được mở hiện thời
Thuộc tính Count,
phương thức Refresh
TableDefs
Tất cả các định nghĩa bảng hiện có trong 1
CSDL
Thuộc tính Count,
Append, Delete,
phương thức Refresh
QueryDefs
Tất cả các định nghĩa truy vấn hiện có trong 1
CSDL
Thuộc tính Count,
Append, Delete,
phương thức Refresh
RecordSet
Tất cả các RecordSet mở trong ngữ cảnh của
một CSDL duy nhất
Thuộc tính Count,
phương thức Refresh
Parameter
Các tham số hiện có trong một QueryDef nhất
định
Thuộc tính Count,
phương thức Refresh
Relations
Mối quan hệ được định nghĩa trong 1 CSDL
đặc biệt
Thuộc tính Count,
Append, Delete,
phương thức Refresh
Connections
Kết nối đến CSDL hiện hữu bởi 1 đối tượng
workspace =ODBCDirect
Thuộc tính Count,
phương thức Refresh
Indexes Chỉ mục thuộc về một TableDef nhất định
Thuộc tính Count,
Append, Delete,
phương thức Refresh
Fields Các trường hiện có trong một cấu trúc dữ liệu
Thuộc tính Count,
Append, Delete,
phương thức Refresh
Groups
Nhoms bảo mật sở hữu bởi CSDL (tham khảo
phần CSDL nhiều người sử dụng)
Thuộc tính Count,
Append, Delete,
phương thức Refresh
Users
Danh sách người sử dụng xác định bởi tính
năng bảo mật CSDL (tham khảo phần CSDL
nhiều người sử dụng)
Thuộc tính Count,
Append, Delete,
phương thức Refresh
Errors Lỗi sinh ra do 1 hành động của DAO
Thuộc tính Count,
phương thức Refresh
20/169
Containers
Nhóm các đối tượng tài liệu định nghĩa sẵn
chứa trong CSDL
Thuộc tính Count,
phương thức Refresh
Documents
CSDL, bảng, và quan hệ là những ví dụ của
đối tượng
Thuộc tính Count,
phương thức Refresh
Properties Các thuộc tính của một đối tượng DAO
Thuộc tính Count,
Append, Delete,
phương thức Refresh
Sử dụng DAO để làm việc với sữ liệu
Dùng đối tượng DataBase để kết nối với 1 CSDL
+ Từ menu Project chọn Reference
+ Chọn "Microsoft DAO 3.51 Object Library"
+ Chọn OK.
Dùng phương thức OpenDataBase để tạo đối tượng DataBase
Phương thức này trả về một đối tượng DataBase do đó trước khi dùng ta phải khai báo
biến đối tượng có kiểu DataBase để chưa giá trị trả về của phương thức.
Dim DB As Database
Set DB = OpenDatabase(DBName, [Option], [ReadOnly], [Connect])
DBName: Tên file CSDL
Option: = True: CSDL được mở trong chế độ loại trừ (không ai khác có thể mở nó)
= False: Mọi người có thể mở nó
ReadOnly: = True: Ta không thể sửa đổi CSDL
Connect: Cách thức kết nối với CSDL Client/Server
? Dùng đối tượng RecordSet để thao tác với các mẩu tin
Ta sử dụng đối tượng RecordSet để thao tác với các mẩu tin trong DAO. Đối tượng
RecordSet cung cấp một giao diện hướng đối tượng cho mô hình CSDL quan hệ liên
quan đến các bảng được chia thành những mẩu tin và trường.
21/169
? Dùng phương thức OpenRecordSet để tạo đối tượng RecordSet
Trong DAO các đối tượng DataBase, Connection, QueryDef, TableDef, và RecordSet
đều có phương thức OpenRecordSet, tất cả đều dùng để truy cập dữ liệu chứa trong
CSDL.
Set Recordset = object.OpenRecordset (Source, [Type], [Options],[LlockEdits])
Recordset: Biến đối tượng bạn muốn mở
Object: Đối tượng đã tồn tại để tạo có phương thức OpenRecordSet
Source:
Một chuỗi chỉ ra nguồn dữ liệu mà RecordSet sẽ lấy, có thể là tên bảng,
tên truy vấn hoặc một câu truy vấn.
Type Lựa chọn: Một hằng số quy định kiểu của con chỏ Recordset được mở
Options Lựa chọn: Một sự kết hợp hằng số chỉ ra đặc tính của Recordset
LockEdit Lựa chọn: Một hằng số xác định khoá của Recordset
Type: có thể nhận các kiểu sau
Tên hằng Mô tả (ý nghĩa)
dbOpenTable
Tạo một đối tượng Recordset kiểu bảng trong một
WorkSpaceCho phép sửa đổi bản ghi, không thể trình bày kết
quả của câu truy vấn nhiều bảng
dbOpenDynamic
Mở một đối tượng Recordset kiểu Dymamic trong 1
WorkSpace Cho phép sửa đổi, thêm hay xoá ngay khi
RecordSet đang được mở ở user khác, không hiệu quả =
Dynaset
dbOpenDynaset
Mở một đối tượng Recordset kiểu Dynaset , cho phép cập
nhật, cho phép lấy về các mẩu tin từ nhiều bảng = cách nối
bảng, cập nhật được, tốc độ tìm kiếm chậm.
dbOpenSnapshot
Mở một đối tượng Recordset kiểu Snapshot, nhanh hơn
Dynaset, cập nhật được. chỉ trả về một bản sao còn Dynaset
lấy về 1 bộ các tham chiếu RecordSet.
dbOpenForwardOnly
(Defalt) Mở một đối tượng Recordset tương tự như Snapshot
nhưng nhanh hơn Snapshot, con trỏ của nó chỉ có thể di
chuyển tới phía trước
Options:Bạn có thể dùng kết hợp của những hằng cho đối số Options
22/169
Tên hằng Mô tả (ý nghĩa)
dbAppendOnly
Cho phép người dùng thêm bản ghi mới, ngăn chặn sửa đổi,
xoá các bản ghi đang tồn tại.
dbSQLPassThrough
Thực hiện một câu truy vấn (Microsoft Jet snapshot-type
Recordset only).
dbSeeChanges
Phát sinh một lỗi nếu người sử dụng đang thay đổi dữ liệu mà
một người sử dụng khác truy nhập vào.
dbDenyWrite Ngăn chặn các user khác sửa đổi hoặc thêm bản ghi.
dbDenyRead Ngăn chặn các user khác đang đọc trong bảng.
dbForwardOnly
Tạo 1 con trỏ Recordset kiểu Snapshot. Nó cung cấp chỉ tương
thích con trỏ kiểu Forward và bạn nên dùng hằng
dbOpenForwardOnly trong hằng của lựa chon Options
dbReadOnly
Ngăn chặn users thay đổi bản ghi. Bạn nên dùng hằng
bReadOnly trong hằng của lựa chon Options
dbRunAsync Thi hành truy vấn đồng bộ.
dbExecDirect
Thi hành truy vấn trực tiếp gọi bởi SQLExecDirect. Chỉ dùng
lựa chọn này khi bạn không mở RecordSet. Xem thêm
Microsoft ODBC 3.0 Programmer’s Reference."
dbInconsistent
Cho phép cập nhật những mâu thuẫn (Microsoft Jet dynaset-
type and snapshot-type Recordset objects only).
dbConsistent
Chie cho phép cập nhật thích hợp (Microsoft Jet dynaset-type
and snapshot-type Recordset objects only).
LockEdits:Bạn có thể dùng những hằng cho cho đối số LockEdit
Tên hằng Mô tả (ý nghĩa)
dbReadOnly
Ngăn chặn user thay đổi Recordset (Default cho ODBCDirect
workspaces). Bạn có thể dùng dbReadOnly trong lựa chọn
options, hoặc trong LockEdit (nhưng không gồm cả 2. Nếu bạn
dùng cả 2 sẽ có lỗi).
dbPessimistic Dùng Pesimistic khoá kết nối môi trường nhiều người dùng
dbOptimistic
Dùng Pesimistic khoá kết nối môi trường nhiều người dùng cho
đến khi thi hành phương thức Update.
dbOptimisticValue Dùng optimistic đặt cơ sở đồng thời nhiều giá trị trên hàng.
23/169