Theo nghĩa này, hệ quản trị CSDL có nhiệm vụ rất quan trọng như là một bộ phận diễn dịch với ngôn ngữ bậc cao nhằmgiúp người sử dụng có thể dùng được hệ thống mà ít nhiều không cần quant
Trang 1MỤC LỤC
LỜI NÓI ĐẦU 4
Phần 1: CƠ SỞ LÝ THUYẾT 6
Chương 1: LÝ THUYẾT CƠ SỞ DỮ LIỆU 6
I TỔNG QUAN VỀ CƠ SỞ DỮ LIỆU 6
1 Khái niệm về cơ sở dữ liệu 6
2 Sự cần thiết của cơ sở dữ liệu 6
3 Hệ quản trị cơ sở dữ liệu 6
II LÝ THUYẾT VỀ CƠ SỞ DỮ LIỆU QUAN HỆ 7
1 Khái niệm cơ bản về cơ sở dữ liệu quan hệ 7
2 Thành phần của CSDL 7
a Các trường dữ liệu (Data fields) 7
b Các bản ghi dữ liệu 7
c Bảng dữ liệu(DataTable) 8
d Các mỗi quan hệ trong (Relationship) 9
3 Lý thuyết thiết kế cơ sở dữ liệu quan hệ 10
Chương 2 GIỚI THIỆU VB.NET 24
2.1 Nguồn gốc của.NET 24
2.2 VB.NET 25
2.3 Những khác biệt giữa VB.NET với VB6 29
2.4 Namespaces 30
2.5 Local và Global Namespaces 32
2.6 Truy cập Variable/Class/Structure 41
2.7 Tạo một Class mới 53
Phần 2: XÂY DỰNG CHƯƠNG TRÌNH 62
Chương 1: MÔ TẢ BÀI TOÁN NGHIỆP VỤ 62
I MÔ TẢ BẰNG LỜI 62
Trang 2II CÁC HỒ SƠ LIÊN QUAN 62
1 Phiếu thông tin cá nhân 62
2 Phiếu điểm 63
3 Bảng phân công giảng dạy 63
4 Danh sách lớp 63
5 Danh sách giáo viên 64
Chương 2: MÔ HÌNH NGHIỆP VỤ 65
I BẢNG PHÂN TÍCH XÁC ĐỊNH CHỨC NĂNG, TÁC NHÂN, HỒ SƠ65 II THIẾT LẬP BIỂU ĐỒ NGỮ CẢNH 66
III BIỂU ĐỒ PHÂN RÃ CHỨC NĂNG 66
1 Biều đồ phân rã chức năng 66
2 Mô tả chức năng lá 66
a Tiếp nhận sinh viên 66
b Cập nhật hồ sơ 67
c Tính điểm 67
d Lập báo cáo 68
Chương 3: PHÂN TÍCH THIÊT KẾ 69
I BIỂU ĐỒ LUỒNG DỮ LIỆU MỨC 0: 69
II BIỂU ĐỒ LUỒNG DỮ LIỆU MỨC 1.0 70
III BIỂU ĐỒ LUỒNG DỮ LIỆU MỨC 3.0 70
IV.PHÂN TÍCH MÔ HÌNH KHÁI NIỆM 71
1 Các thực thể: 71
2 Chuẩn hóa dữ liệu 71
3 Sơ đồ quan hệ E – R 71
4 Sơ đồ vật lý 73
5 Giao diện chương trình 76
6 Code chính của chương trình 80
* Modul chính 80
Trang 3* Code xử lý của Form Môn thi 83
* Code xử lý của Form Đăng nhập 85
* Code xử lý của Form Kết nối 86
* Code xử lý của Form Tìm kiếm 88
KẾT LUẬN 91
TÀI LIỆU THAM KHẢO 92
Trang 4LỜI NÓI ĐẦU
Ngày nay công nghệ thông tin (CNTT) là ngành khoa học đã nhanhchóng khẳng định vị trí của mình với những tính ưu việt mà không ai có thểphủ nhận được Từ những năm cuối thế kỷ 20, CNTT ở Việt Nam đã pháttriển mạnh mẽ và ứng dụng hầu hết các lĩnh vực khoa học kỹ thuật, kinh tế,văn hóa, xã hội
Trong công cuộc đổi mới đất nước, cùng với các lĩnh vực khác, ngànhGiáo dục và đào tạo đã và đang từng bước áp dụng những tiến bộ khoa học kỹthuật của CNTT và ngành Những phần mền quản lý, những phần mềm hỗ trợ
sự dạy và học với sự trợ giúp của máy tính đã và đang phát huy hết tác dụnggóp phần không nhỏ vào sự nghiệp giáo dục nước nhà Đặc biệt là trong côngtác quản lý tin học lam giảm nhẹ sức lực của người quản lý tin học và thuậntiện hơn rất nhiều so với thực hiện công việc quản lý đặc biệt là thu hẹpkhông gian lưu trữ, tránh được thất lạc dữ liệu từng bước tự động hóa và cụthể hóa lượng thông tin theo yêu cầu của người quản lý, có thể tìm kiếm, tracứu thông tin nhanh một cách đầy đủ và chính xác hơn
Hiện nay việc quản lý sinh viên là một trong những vấn đề gây ra nhiềukhó khăn, cản trở đối với cả cơ quan chức năng thậm chí đến cả sự phát triểncủa nền kinh tế đất nước Mô hình quản lý sinh viên hiện tại không còn phùhợp với sự phát triển của nền kinh tế và xã hội hiện nay Một trong những vấn
đề gặp phải đó là vấn đề quản lý sinh viên và kèm theo quá nhiều giấy tờ gâyrắc rối, khó quản lý Điều này cấp thiết phải được thay thế bằng một hình thứcquản lý khác hợp lý và hiệu quả hơn
Với đề tài này em mong muốn xây dựng được một hệ thống quản lý sinhviên một cách thật hiệu quả Chương trình Quản lý sinh viên này được viếtdưới dạng một phần mềm tin học dùng để ứng dụng trong trường đại học
Trang 5Chương trình Quản lý sinh viên các chức năng được phân cấp rõ ràngtheo từng cấp để bất cứ ai làm công tác quản lý cũng có thể sử dụng được, cóphần Help để giúp cho người sử dụng có thể tra cứu bất cứ lúc nào Mặt khác,chương trình còn cho phép người sử dụng quản trị hệ thống mạnh, tìm kiếmthông tin nhanh chóng, chính xác Song bên cạnh đó vì thời gian có hạn nênchương trình này của em còn chứa đựng rất nhiều hạn chế mà em chưa cóthời gian khắc phục
Nhờ sự tận tâm theo sát hướng dẫn của thầy Trần Văn Lộc, trong bướcđầu em đã nghiên cứu và vận dụng kiến thức đã học để xây dựng đượcchương trình quản lý đáp ứng tương đối một số các yêu cầu đặt ra như trên.Tuy nhiên, do kiến thức còn hạn chế nên chương trình chắc chắn không tránhkhỏi các thiếu sót Vì vậy, em rất mong nhận được sự đóng góp ý kiến của tất
cả các thầy cô và các bạn để có thể từng bước xây dựng chương trình ngàycàng hoàn thiện và hiệu quả hơn
Em xin chân thành cảm ơn thầy giáo hướng dẫn Trần Văn Lộc và cácthầy cô giáo Khoa Công Nghệ Thông Tin đã giúp em hoàn thành đồ án này
Hà nội, ngày 22 tháng 4 năm 2009
Sinh viên thực hiện
Phạm Tuấn Dũng
Trang 6Phần 1: CƠ SỞ LÝ THUYẾT
Chương 1: LÝ THUYẾT CƠ SỞ DỮ LIỆU
I TỔNG QUAN VỀ CƠ SỞ DỮ LIỆU
1.Khái niệm về cơ sở dữ liệu
Cơ sở dữ liệu(CSDL) là một tập hợp sắp xếp các thông tin, dữ liệu về một vấn
đề nào đó, nhằm giúp cho người sử dụng dễ dàng tra cứu, sử dụng và cậpnhật
Đặc điểm chủ yếu của CSDL là cách tổ chức, sắp xếp thông tin, các dữ liệu
có liên quan với nhau sẽ được lưu trong các tệp tin hay trong các bảng Nóicách khác nhau nó là tập hợp các dữ liệu có quan hệ với nhau
2.Sự cần thiết của cơ sở dữ liệu
Ngày nay, nhu cầu tích lũy, lưu trữ và xử lý dữ liệu đã có mặt trên mọi lĩnhvực, trong mọi hoạt động của con người Nhưng thông tin ngày càng lớn vàphức tạp, buộc con người phải sắp xếp các thông tin ssao cho nó khoa học, vìvậy đòi hỏi họ phải sử dụng CSDL
3.Hệ quản trị cơ sở dữ liệu
Là một công cụ cho phép quản lý và tương tác với cơ sở dữ liệu như cho phép
xử lý, thay đổi, truy xuất CSDL Theo nghĩa này, hệ quản trị CSDL có nhiệm
vụ rất quan trọng như là một bộ phận diễn dịch với ngôn ngữ bậc cao nhằmgiúp người sử dụng có thể dùng được hệ thống mà ít nhiều không cần quantâm đến thuật toán chi tiết hoặc biểu diễn dữ liệu trong máy tính Hầu hết các
hệ quản trị CSDL đều thực hiện các chức năng sau:
- Lưu trữ dữ liệu
- Tạo và duy trì cấu trúc dữ liệu
- Hỗ trợ bảo mật và riêng tư
Trang 7- Cho xem và xử lý các dữ liệu lưu trữ
- Cung cấp một cơ chế chỉ mục(index) hiệu quả để truy cập nhanh các dữliệu lựa chọn
- Cung cấp tính nhất quán giữa các bản ghi khác nhau
- Bảo vệ dữ liệu khỏi mất mát bằng các quá trình sao lưu (backup) và phụchồi dữ liệu(recovery)
Trong hệ quản trị CSDL quan hệ giữa các bảng được tổ chức thành các bảng,các bảng bao gồm các trường và các trường chứa các bản ghi Mỗi trườngtương ứng với một mục dữ liệu, hai hay nhiều bảng có thể liên kết nếu chúng
có một hay nhiều trường chung
II LÝ THUYẾT VỀ CƠ SỞ DỮ LIỆU QUAN HỆ
1 Khái niệm cơ bản về cơ sở dữ liệu quan hệ
Khái niệm CSDL quan hệ: là loại CSDL cho phép ta truy cập đến dữ liệuthông qua mối quan hẹ đến các dữ liệu khác giống như các bảng tính Đểtruy cập thông tin ta có thể dùng một ngôn ngữ đặc biệt để truy vấn, đó làSQL(Structure Query Language) nó là ngôn ngữ truy vấn có cấu trúc
2 Thành phần của CSDL
a Các trường dữ liệu (Data fields)
Trường dữ liệu chứa dữ liệu nhỏ nhất(dữ liệu nguyên tố), ví dụ bảngHSSV chứa thông tin về sinh viên: trường MSSV chứa mã sinh viên,trường ngaysinh chứa thông tin về ngày tháng năm sinh của sinh viêntrong trường…
Tất cả các trường tạo ra sẽ chứa một CSDL đơn Tuy rằng ta có thể chứahơn một thành phần dữ liệu trong một trường(Field) đơn,nhưng gặp trởngại khi cập nhật hay sắp xếp thứ tự
b Các bản ghi dữ liệu
Trang 8Các bản ghi dữ liệu (Record) là tập hợp các trường dữ liệu có liên quan.Một số bản ghi sinh viên bao gồm các thông tin về sinh viên như: họ tên,ngày sinh, quê quán, hộ khẩu thường trú, giới tính.
c Bảng dữ liệu(DataTable)
Bằng cách kết hợp field dữ liệu và record dữ liệu đã tạo ra nguyên tốchung nhất của CSDL quan hệ là bảng dữ liệu Nguyên tố này chứa nhiềubản ghi dữ liệu, mỗi bản ghi chứa nhiều trường dữ liệu Cũng như mỗi bảnghi chứa các trường có quan hệ,mỗi bảng dữ liệu chứa các bản ghi có quan
hệ Các bảng dữ liệu nên đặt tên theo đúng ý nghĩa để giúp người dùng dễnhớ nội dung bản ghi và trường
Mô hình CSDL quan hệ yêu cầu mỗi hang trong một bảng phải là duynhất Để đảm bảo tính duy nhất cho một hang bằng cách tạo ra một khóachính(primary key) một cột hay kết hợp nhiều cột để xác định duy nhấtmột hang Một bảng ghi chỉ có thể có một khóa chính, mặc dù có thể cómột số cột hay tổ hợp các cột khác có thể tạo ra các giá trị duy nhất.Những cột hay tổ hợp các cột giá trị duy nhất trong bảng được xem như làkhóa dự tuyển của khóa chính Cho đến nay, không có một nguyên tắctuyệt đối nào để xác định khóa dự tuyển nào là tốt nhất Các tính chất đềnghị cả khóa dự tuyển tốt nhất là: nhỏ nhất.(minimality – chọn một số cộtcần thiết ít nhất) ổn định(stability – chọn khóa ít thay đổi nhất) và đơngiản/ thân thiện(simplicity/familiaty – chọn một khóa vừa đơn giản vừaquyen thuộc)
Khóa ngoại lai(Foreign key): Mặc dù các khóa chính là thànhphần của các bảng riêng biệt, nếu ta chỉ dùng các bảng độc lập
mà không có quan hệ, ta rất ít sử dụng khóa chính để trở nênthiết yếu khi ta tạo ra các quan hệ để liên kết các bảng trongCSDL quan hệ
Trang 9Một trường được gọi là khóa ngoại lai của một bảng A nếu nó không phải làkhóa chính của bảng A và liên kết với một bảng B qua khóa chính của bảng B
để xác định duy nhất một bản ghi của bảng B
d Các mỗi quan hệ trong (Relationship)
Trong CSDL quan hệ, quan hệ được xác lập rên từng cặp bảng,những cặpbảng này quan hệ với nhau theo từng một trong 3 loại sau 1-1,1-∞, ∞-∞
Quan hệ 1-1(one - to - one)
Hai bảng được gọi là quan hệ 1-1 nếu với mọi hang trong bảng thứnhất chỉ có nhiều nhất một hàng trong bảng thứ hai Trên thực tếquan hệ này ít xảy ra Loại quan hệ này thường được tạo ra để khắcphục một số giới hạn của các phần mền quản lý CSDL hơn là môhình hóa một trạng thái của thế giới thực Trong Microsoft Access,các quan hệ 1-1 có lẽ cần thiết trong một CSDL quan hệ khi táchmột bảng thành hai hay nhiều bảng do tính bảo mật hay hiệu quả
Quan hệ 1-∞(one – to – many )
Hai bảng có quan hệ một nhiều (one – to – many ) nếu đối với bảngthứ nhất có thể không có, hay có một hay nhiều trong bảng thứ hai.Quan hệ một nhiều còn được gọi là quan hệ cha con hay là quan hệchính phục Loại quan hệ này được dùng rất nhiều trong CSDL quanhệ
Quan hệ ∞-∞.(many – to – many )
Hai bảng có quan hệ many – to – many khi đối với mọi hàng trongbảng thứ nhất có thể có nhiều hàng trong bảng thứ hai và đối vớimọi bảng trong bảng thứ hai có thể có nhiều hàng trong bảng thứnhất Các quan hệ ∞-∞ không thể mô hình hóa trong nhiều phầnmềm CSDL trong đó có cả Microsoft Assecc Những quan hệ này
Trang 103 Lý thuyết thiết kế cơ sở dữ liệu quan hệ
Trong phần lớn các ứng dụng chúng ta đều phải tạo ra CSDL Do cácnguyên nhân đặc biệt có một số ứng dụng không thể xây dựng được CSDL
từ đầu hoặc phải sử dụng một số cơ sở có sẵn không ở dạng thích hợp cho
cơ sở dữ liệu quan hệ Một trong những dạng thường gặp nhất của ta làchuyển dữ liệu chứa ở dạng dữ liệu bảng tính thành các bảng của CSDLquan hệ
Có 3 bước thiết kế CSDL:
- Tạo ra các lớp thực thể
- Chuẩn hóa các CSDL
- Thực hiện phi chuẩn
Mô hình cơ sở dữ liệu quan hệ
* Quan hệ
Quan hệ là một tập hợp con của tích Đề - Các của một hay nhiều miền Di Nhưvậy miền quan hệ là vô hạn Luôn luôn giả thiết rằng, quan hệ là một tập hữuhạn
Một hàng của quan hệ gọi là một bộ
Quan hệ là tập con của tích Đề - Các D1*D2… D3 gọi là quan hệ n
Khi đó mối quan hệ có n thành phần (n cột) Các tiêu đề cột của quan
hệ là thuộc tính Ta có thể định nghĩa quan hệ như sau:
Cho R = { a1,a2,….an } là một tập hợp hữu hạn, không rỗng các thuộctính Mỗi thuộc tính ai có một miền giá trị là Dai Khi đó r – một tập hợp các
bộ { h1,h2,….hm } được gọi là một quan hệ trên R với hj (j = 1,2…., m) là mộthàm:
Hj : R -> Dai
Trang 11*Hệ tiêu đề Armstrong trong phụ thuộc hàm :
Gọi F là tất cả các phụ thuộc hàm với lược đồ quan hệ R (U) và X->Y
là một phụ thuộc hàm,trong đó X,Y U Khi đó ta có F+ là tập hợp tất cả cácphụ thuộc hàm được sinh ra từ F khi sử dụng tiêu đề Armstrong được gọi làbao đóng của F
Hệ tiêu đề Armstrong : Gọi R(U) là lược đồ quan hệ với U = { A1,
….,An } là tập tất cả các thuộc tính X,Y, X,T U Khi đó ta có :
- Tính phản xạ : nếu Y X thì X->Y
- Tính tẳng trưởng : nếu Z U và X->Y thì XZ -> YZ,trong đó
XZ là tập của hai tập X và Y,YZ là tập hợp của hai tập Y và Z
- Tính bắc cầu : nếu X->Y và Y->Z thì X->Z
*Khóa
a) Định nghĩa
Khóa của quan hệ r trên tập thuộc tính U = { A1, A2….,An } là tập con của
Trang 12K U sao cho bất kỳ hai bộ khác nhau, 1, t2 r luôn thỏa mãn t1 (K) ≠ t2 (K).Tập K là siêu khóa (khóa tối thiểu) của quan hệ r nếu K là một khóa của quan
hệ r và mọi tập con thực sự K’ của K đều không phải là tập khóa
b)Các thuật toán tìm khóa tối tiểu
* Thuật toán tìm khhoas tối thiểu của một sơ đồ quan hệ:
Vào: Sơ đò quan hệ s = < R,F > trong đó:
R = { A1, A2….,An } là tập hợp các thuôc tính
F là tập các phụ thuộc hàm
Ra là một khóa tối tiểu
Thuật toán thực hiện như sau:
Thuật toán tìm khóa tối tiểu của quan hệ:
Cho trước R = { h1, … ….,hm } là một quan hệ trên tập thuộc tính
R = { a1, … ….,an } Thuật toán thực hiện như sau:
Trang 13K = Bn là khóa tối tiểu
Cũng như thuật toán trên , nếu ta thay đổi thứ tự các thuật toán của Rbằng thuật toán này chúng ta có thể tìm được một khó tối tiểu khác
Trang 14- A-> {a } không đúng trong r.
* Các phép tính toán trên cơ sở dữ liệu
- Phép chèn: là phép them một bộ t {d1, , d n} vào quan hệ r { A1,….An}
Ký hiệu r t Trong đó Ai với i=1,…,n là tên các thuộc tính và d1 dom(Ai) là các giá trị thuộc miền giá trị tương ứng của thuộc tính Ai
- Phép loại bỏ: là phép xóa một bộ ra khỏi một quan hệ cho trước ký hiệu
r-t, tuy nhiên không phải lúc nào phép loại bỏ cũng cần đầy đủ thông tin về
cả bộ cần loại bỏ
* Giới thiệu về SQL(Structure Query Language) ngôn ngữ hỏi có cấu trúc,
là một công cụ sử dụng để tổ chức, quản lý và truy xuất dữ liệu được lưutrữ trong các cơ sở dữ liệu SQL là môt hệ thống ngôn ngữ bao gồm tậpcác câu lệnh sử dụng để tương tác với CSDL quan hệ
Tên gọi ngôn ngữ hỏi có cấu trúc phần nào làm chúng ta liên tưởng đếnmột công cụ (ngôn ngữ) dùng để truy xuất dữ liệu trong các cơ sở dữ liệu.Thực sự mà nói, khả năng của SQL vượt xa so với một công cụ truy xuất
dữ liệu, mặc dù đây là mục đích ban đầu khi SQL được xây dựng nên vàtruy xuất dữ liệu vẫn còn là một trong những chức năng quan trọng của nó.SQL được sử dụng để điều khiển tất cả các chức năng mà một hệ quản trị
Trang 15• Định nghĩa dữ liệu: SQL cung cấp khả năng định nghĩa các cơ sở dữ
liệu,các cấu trúc lưu trữ và tổ chức dữ liệu cũng như mối quan hệ giữa cácthành phần dữ liệu
• Truy xuất và thao tác dữ liệu: Với SQL, người dùng có thể dễ dàng thực
hiện các thao tác truy xuất, bổ sung, cập nhật và loại bỏ dữ liệu trong các cơ
sở dữ liệu
• Điều khiển truy cập: SQL có thể được sử dụng để cấp phát và kiểm soát
các thao tác của người sử dụng trên dữ liệu, đảm bảo sự an toàn cho cơ sở dữliệu
• Đảm bảo toàn vẹn dữ liệu: SQL định nghĩa các ràng buộc toàn vẹn trong
cơ sở dữ liệu nhờ đó đảm bảo tính hợp lệ và chính xác của dữ liệu trước cácthao tác cập nhật cũng như các lỗi của hệ thống
Như vậy, có thể nói rằng SQL là một ngôn ngữ hoàn thiện được sử dụngtrong các hệ thống cơ sở dữ liệu và là một thành phần không thể thiếu trongcác hệ quản trị cơ sở dữ liệu Mặc dù SQL không phải là một ngôn ngữ lậptrình như C, C++, Java, song các câu lệnh mà SQL cung cấp có thể đượcnhúng vào trong các ngôn ngữ lập trình nhằm xây dựng các ứng dụng tươngtác với cơ sở dữ liệu Khác với các ngôn ngữ lập trình quen thuộc như C, C++, Java, SQL là ngôn ngữ có tính khai báo Với SQL, người dùng chỉ cần
mô tả các yêu cầu cần phải thực hiện trên cơ sở dữ liệu mà không cần phải chỉ
ra cách thức thực hiện các yêu cầu như thế nào Chính vì vậy, SQL là ngônngữ dễ tiếp cận và dễ sử dụng
* Vai trò của SQL
Bản thân SQL không phải là một hệ quản trị cơ sở dữ liệu, nó không thể tồntại độc lập SQL thực sự là một phần của hệ quản trị cơ sở dữ liệu, nó xuấthiện trong các hệ quản trị cơ sở dữ liệu với vai trò ngôn ngữ và là công cụgiao tiếp giữa người sử dụng và hệ quản trị cơ sở dữ liệu Trong hầu hết các
Trang 16hệ quản trị cơ sở dữ liệu quan hệ, SQL có những vai trò như sau:
• SQL là ngôn ngữ hỏi có tính tương tác: Người sử dụng có thể dễ dàng
thông qua các trình tiện ích để gởi các yêu cầu dưới dạng các câu lệnh SQLđến cơ sở dữ liệu và nhận kết quả trả về từ cơ sở dữ liệu
• SQL là ngôn ngữ lập trình cơ sở dữ liệu: Các lập trình viên có thể nhúng
các câu lệnh SQL vào trong các ngôn ngữ lập trình để xây dựng nên cácchương trình ứng dụng giao tiếp với cơ sở dữ liệu
• SQL là ngôn ngữ quản trị cơ sở dữ liệu: Thông qua SQL, người quản trị
cơ sở dữ liệu có thể quản lý được cơ sở dữ liệu, định nghĩa các cấu trúc lưutrữ dữ liệu, điều khiển truy cập cơ sở dữ liệu,
• SQL là ngôn ngữ cho các hệ thống khách/chủ (client/server): Trong
các hệ thống cơ sở dữ liệu khách/chủ, SQL được sử dụng như là công cụ đểgiao tiếp giữa các trình ứng dụng phía máy khách với máy chủ cơ sở dữ liệu
• SQL là ngôn ngữ truy cập dữ liệu trên Internet: Cho đến nay, hầu hết
các máy chủ Web cũng như các máy chủ trên Internet sử dụng SQL với vaitrò là ngôn ngữ để tương tác với dữ liệu trong các cơ sở dữ liệu
• SQL là ngôn ngữ cơ sở dữ liệu phân tán: Đối với các hệ quản trị cơ sở
dữ liệu phân tán, mỗi một hệ thống sử dụng SQL để giao tiếp với các hệthống khác trên mạng, gởi và nhận các yêu cầu truy xuất dữ liệu với nhau
• SQL là ngôn ngữ sử dụng cho các cổng giao tiếp cơ sở dữ liệu:
Trong một hệ thống mạng máy tính với nhiều hệ quản trị cơ sở dữ liệu khácnhau, SQL thường được sử dụng như là một chuẩn ngôn ngữ để giao tiếp giữacác hệ quản trị cơ sở dữ liệu
* Tổng quan về cơ sở dữ liệu quan hệ
a Mô hình dữ liệu quan hệ
Mô hình dữ liệu quan hệ được Codd đề xuất năm 1970 và đến nay trở thành
Trang 17mô hình được sử dụng phổ biến trong các hệ quản trị cơ sở dữ liệu thươngmại Nói một cách đơn giản, một cơ sở dữ liệu quan hệ là một cơ sở dữ liệutrong đó tất cả dữ liệu được tổ chức trong các bảng có mối quan hệ với nhau.Mỗi một bảng bao gồm các dòng và các cột: mỗi một dòng được gọi là mộtbản ghi (bộ) và mỗi một cột là một trường (thuộc tính).
b.Bảng (Table)
Như đã nói ở trên, trong cơ sở dữ liệu quan hệ, bảng là đối tượng được sửdụng để tổ chức và lưu trữ dữ liệu Một cơ sở dữ liệu bao gồm nhiều bảng vàmỗi bảng được xác định duy nhất bởi tên bảng Một bảng bao gồm một tậpcác dòng và các cột: mỗi một dòng trong bảng biểu diễn cho một thực thể(trong hình 1.1, mỗi một dòng trong bảng SINHVIEN tương ứng với một sinhviên); và mỗi một cột biểu diễn cho một tính chất của thực thể (chẳng hạn cộtNGAYSINH trong bảng SINHVIEN biểu diễn cho ngày sinh của các sinhviên được lưu trữ trong bảng).Như vậy, liên quan đến mỗi một bảng bao gồmcác yếu tố sau:
• Tên của bảng: được sử dụng để xác định duy nhất mỗi bảng trong cơ sở
dữ liệu
• Cấu trúc của bảng: Tập các cột trong bảng Mỗi một cột trong bảng được
xác định bởi một tên cột và phải có một kiểu dữ liệu nào đó (chẳng hạn cột
NGAYSINH trong bảng SINHVIEN ở hình trên có kiểu làDATETIME) Kiểu dữ liệu của mỗi cột qui định giá trị dữ liệu có thể đượcchấp nhận trên cột đó
• Dữ liệu của bảng: Tập các dòng (bản ghi) hiện có trong bảng.
c Khóa của bảng
Trong một cơ sở dữ liệu được thiết kế tốt, mỗi một bảng phải có một hoặc
Trang 18một tập các dòng của bảng Tập một hoặc nhiều cột có tính chất này được gọi
là khoá của bảng Việc chọn khoá của bảng có vai trò quan trọng trong việcthiết kế và cài đặt các cơ sở dữ liệu quan hệ Các dòng dữ liệu trong một bảngphải có giá trị khác nhau trên khoá Bảng MONHOC trong hình dưới đây cókhoá là cột MAMONHOC
Một bảng có thể có nhiều tập các cột khác nhau có tính chất của khoá (tức làgiá trị của nó xác định duy nhất một dòng dữ liệu trong bảng) Trong trường
hợp này, khoá được chọn cho bảng được gọi là khoá chính (primary key) và những khoá còn lại được gọi là khoá phụ hay là khoá dự tuyển (candidate key/unique key).
Mối quan hệ và khóa ngoài
Các bảng trong một cơ sở dữ liệu không tồn tại độc lập mà có mối quan hệmật thiết với nhau về mặt dữ liệu Mối quan hệ này được thể hiện thông qua
ràng buộc giá trị dữ liệu xuất hiện ở bảng này phải có xuất hiện trước trong một bảng khác Mối quan hệ giữa các bảng trong cơ sở dữ liệu nhằm đàm bảo
được tính đúng đắn và hợp lệ của dữ liệu trong cơ sở dữ liệu.Này đòi hỏi giátrị cột MAKHOA của một dòng (tức là một lớp) trong bảng LOP phải đượcxác định từ cột MAKHOA của bảng KHOA
Trang 19Mối quan hệ giữa các bảng trong một cơ sở dữ liệu thể hiện đúng mối quan hệgiữa các thực thể trong thế giới thực Trong hình 1.3, mối quan hệ giữa haibảng LOP và KHOA không cho phép một lớp nào đó tồn tại mà lại thuộc vào
một khoa không có thật.Khái niệm khoá ngoài (Foreign Key) trong cơ sở dữ
liệu quan hệ được sử dụng để biểu diễn mối quan hệ giữa các bảng dữ liệu.Một hay một tập các cột trong một bảng mà giá trị của nó được xác định từkhóa chính của một bảng khác được gọi là khoá ngoài Trong hình trên, cộtMAKHOA của bảng LOP được gọi là khoá ngoài của bảng này, khoá ngoàinày tham chiếu đến khoá chính của bảng KHOA là cột MAKHOA
e Sơ lược về SQL
SQL chuẩn bao gồm khoảng 40 câu lệnh Bảng 1.1 liệt kê danh sách các câulệnh thường được sử dụng nhất trong số các câu lệnh của SQL Trong các hệquản trị cơ sở dữ liệu khác nhau, mặc dù các câu lệnh đều có cùng dạng vàcùng mục đích sử dụng song mỗi một hệ quản trị cơ sở dữ liệu có thể có một
số thay đổi nào đó Điều này đôi khi dẫn đến cú pháp chi tiết của các câu lệnh
có thể sẽ khác nhau trong các hệ quản trị cơ cơ sở dữ liệu khác nhau
Trang 20Tạo bảngXoa bảngSửa đổi bảngTạo khung nhìnSửa đổi khung nhìn Xoá khung nhìnTạo chỉ mụcXoá chỉ mụcTạo lược đồ cơ sở dữ liệuXoá lược đồ cơ sở dữ liệuTạo thủ tục lưu trữ
Sửa đổi thủ tục lưư trữXoá thủ tục lưu trữTạo hàm (do người sử dụng định nghĩa)Sửa đổi hàm
Xoá hàmTạo trigger
Trang 21Đánh dấu một điểm trong giao tác
Khai báo biến hoặc định nghĩa con trỏ
Mở một con trỏ để truy xuất kết quả truy vấnĐọc một dòng trong kết quả truy vấn (sử dụng contrỏ)
Đóng một con trỏThực thi một câu lệnh SQLCác câu lệnh của SQL đều được bắt đầu bởi các từ lệnh, là một từ khoá chobiết chức năng của câu lệnh (chẳng hạn SELECT, DELETE, COMMIT) Sau
từ lệnh là các mệnh đề của câu lệnh Mỗi một mệnh đề trong câu lệnh cũngđược bắt đầu bởi một từ khoá (chẳng hạn FROM, WHERE, )
Trang 22Ví dụ 1.1: Câu lệnh:
SELECTmasv,hodem,tenFROM sinhvien
WHERE malop=’C24102’
dùng để truy xuất dữ liệu trong bảng SINHVIEN được bắt đầu bởi từ lệnhSELECT, trong câu lệnh bao gồm hai mệnh đề: mệnh đề FROM chỉ định têncủa bảng cần truy xuất dữ liệu và mệnh đề WHERE chỉ định điều kiện truyvấn dữ liệu
f Kiểu dữ liệu
Chuẩn ANSI/ISO SQL cung cấp các kiểu dữ liệu khác nhau để sử dụng trongcác cơ sở dữ liệu dựa trên SQL và trong ngôn ngữ SQL Dựa trên cơ sở cáckiểu dữ liệu do chuẩn ANSI/ISO SQL cung cấp, các hệ quản trị cơ sở dữ liệuthương mại hiện nay có thể sử dụng các dạng dữ liệu khác nhau trong sảnphẩm của mình Bảng dưới đây liệt kê một số kiểu dữ liệu thông dụng được
sử dụng trong SQL
CHAR (n) Kiểu chuỗi với độ dài cố định NCHAR (n) Kiếu chuỗi với độ dài cố định hỗ trợ UNICODE VARCHAR (n) Kiểu chuỗi với độ dài chính xác
NVARCHAR (n) Kiểu chuỗi với độ dài chính xác hỗ trợ
UNICODEINTEGER Số nguyên có giá trị từ -231đến 231 - 1 INT Như kiểu Integer
TINYTINT Số nguyên có giá trị từ 0 đến 255
SMALLINT Số nguyên có giá trị từ -215đến 215 – 1BIGINT Số nguyên có giá trị từ -263đến 263-1
Trang 23NUMERIC (p,s) Kiểu số với độ chính xác cố định.
DECIMAL (p,s) Tương tự kiểu Numeric
FLOAT Số thực có giá trị từ -1.79E+308 đến 1.79E+308REAL Số thực có giá trị từ -3.40E + 38 đến 3.40E + 38MONEY Kiểu tiền tệ
BIT Kiểu bit (có giá trị 0 hoặc 1)DATETIME Kiểu ngày giờ (chính xác đến phần trăm của giây)SMALLDATETIME Kiểu ngày giờ (chính xác đến phút)
TIMESTAMPBINARY Dữ liệu nhị phân với độ dài cố định (tối đa 8000bytes)
VARBINARY Dữ liệu nhị phân với độ dài chính xác (tối đa
8000 bytes)
g Giá trị NULL
Một cơ sở dữ liệu là sự phản ánh của một hệ thống trong thế giới thực,
do đó các giá trị dữ liệu tồn tại trong cơ sở dữ liệu có thể không xác địnhđược Một giá trị không xác định được xuất hiện trong cơ sở dữ liệu có thể domột số nguyên nhân sau:
• Giá trị đó có tồn tại nhưng không biết
• Không xác định được giá trị đó có tồn tại hay không
• Tại một thời điểm nào đó giá trị chưa có nhưng rồi có thể sẽ có
• Giá trị bị lỗi do tính toán (tràn số, chia cho không, )
Những giá trị không xác định được biểu diễn trong cơ sở dữ liệu quan hệ bởicác giá trị NULL Đây là giá trị đặc biệt và không nên nhầm lẫn với chuỗirỗng (đối với dữ liệu kiểu chuỗi) hay giá trị không (đối với giá trị kiểu số).Giá trị NULL đóng một vai trò quan trọng trong các cơ sở dữ liệu và hầu hếtcác hệ quản trị cơ sở dữ liệu quan hệ hiện nay đều hỗ trợ việc sử dụng giá trịnày
Trang 24Chương 2 GIỚI THIỆU VB.NET
2.1 Nguồn gốc của.NET
Đầu năm 1998, sau khi hoàn tất version 4 của Internet InformationServer (IIS), một đội lập trình ở Microsoft nhận thấy họ còn rất nhiều sángkiến để kiện toàn IIS Họ bắt đầu thiết kế một architecture mới dựa trênnhững ý đó và project đuợc đặt tên là Next Generation Windows Services(NGWS)
Sau khi Visual Basic 6 đuợc trình làng vào cuối năm 1998, dự án kế tiếpmang tên Visual Studio 7 đuợc xáp nhập vào NGWS Đội ngũ COM+/MTSgóp vào một universal runtime cho tất cả các ngôn ngữ lập trình trong VisualStudio, mà họ có ý định cho ngay cả các ngôn ngữ lập trình của công ty khácdùng luôn Công việc được giữ bí mật mãi đến hội nghị ProfessionalDevelopers' Conference ở Orlando vào tháng 7/2000 Đến tháng 11/2000 thìMicrosoft cho phát hành Beta 1 của.NET gồm ba CD Tính đến lúc ấy thìMicrosoft đã làm việc trên dự án ấy gần ba năm rồi Điều ấy cắt nghĩa tại saoBeta 1 version tương đối rất vững chải
.NET mang dấu tích những sáng kiến đã được áp dụng trước đây như
p-code trong UCSD Pascal cho đến Java Virtual Marchine Có điều
Microsoft góp nhặt những sáng kiến của người khác, kết hợp với những sángkiến của chính mình để làm nên một sản phẩm ăn rơ từ trong ra ngoài Có lẽcuối năm 2001 hay đầu năm 2002 Microsoft mới phát hành.NET Có ngườihỏi Microsoft xem.NET quan trọng như thế nào Các "xếp" của Microsoft chobiết 80% tài khóa Research & Development (Nghiên cứu và Triển khai) củaMicrosoft trong năm 2001 được dành cho.NET, và tối hậu, tất cả sản phẩmcủa Microsoft đều sẽ được dọn nhà qua.NET platform
.NET gồm có hai phần: Framework và Integrated Development Environment (IDE) Framework cung cấp tất cả những gì cần thiết căn bản.
Trang 25Chữ Framework có nghĩa là cái Khung hay khung cảnh trong đó ta dùng
những hạ tầng cơ sở theo một qui ước nhất định để công việc trôi chảy CònIDE cung cấp một môi trường giúp ta triển khai dễ dàng, nhanh chóng hơn.Nếu không có IDE ta cũng có thể dùng Notepad và line commands để triểnkhai nhưng nó chậm hơn Do đó, nếu có chỗ nào IDE genareted code có vẽquá rắc rối, bạn nên trở về Framework để xem mình thật sự tối thiểu cầnnhững thứ gì Vì nói cho cùng, Framework là quan trọng nhất, còn IDE bất
quá chỉ là một công cụ gắn lên phía trên Framework thôi Trong.NET, C# và
VB.NET đều dùng cùng một IDE.
2.2 VB.NET
VB.NET (còn được gọi là VB7)chẳng qua là C# viết theo lối VisualBasic Nay VB7 đã hoàn toàn là Object Oriented, tức là cho ta dùng lạiclasses/forms theo cách thừa kế thật thoải mái, nên nó khác VB6 nhiều lắm
Tất cả đều là Object như trong Java
Dùng Namespace để Import classes từ các component vào chương
trình
Các Visual components của Winform đều được chứa dưới dạngDesigner Generated Code giống như Delphi, chớ không phải chứa trong
phần đầu của.frm file như trong VB6
Integer types bây giờ gồm có Byte, Short, Integer và Long
Có thể dùng các Arithmetic Operators mới như:
X += 4 tương đương với X = X + 4
Mess &= " text" tương đương với Mess = Mess & " text"
VB.NET có cả Byte và Char data type Byte với trị số 0-255 có thểđược dùng cho ASCII character Char với trị số 0-65535 của 2 bytesđược dùng cho Unicode
Trang 26 String trong VB.NET khác với String trong VB6 rất nhiều vì nó đến từSystem.String class Ý niệm fixed-length string của VB6 như khai báo
Dim MyString as string * 30
VB.NET không có variant data type nhưng thay vào đó là Object datatype
Tất cả array đều zero-based VB.NET dùng block-level scope, do đómột variable declared trong một IF THEN END IF block sẽ biến mấtkhi qua khỏi END IF
Short Circuit trong IF THEN Statement
Trong VB6, nếu ta viết:
Dim myInt as Integer
myInt = 0
If (myInt <> 0) and (17 \ myInt < 5 ) then
Thì sẽ bị Division by Zero error, vì mặc dầu phần (myInt <>0) là False,nhưng VB6 vẫn tiếp tục tính phần (17\myInt<5)
Trong VB.NET, khi (myInt <>0) là False thì nó không tính thêm nữa.Ðặc tính nầy gọi là Short Circuit (đi tắt)
Trang 27 Thêm vào Collection và Dictionary class sẽ có ArrayList, BitArray,Hashtable, ObjectList, Queue, SortedList, Stack và StringCollection
Không còn Set statement cho Object Trong VB6 ta có thể viết:
Set x = New Product
Set w = x
Trong VB.NET sẽ được viết lại như sau:
x = New Product()
w = x
Thay đổi trong cách viết Property rourines
Nếu trong VB6 ta viết:
Private _description as String
Public Property Let Description (Value As String)
Private _description As String
Public Property Description() As String
Set
_description = Value
End Set
Trang 28Get
Description = _description
End Get
End Property
Bây giờ nếu Property là ReadOnly hay WriteOnly ta sẽ viết:
Public ReadOnly Property Age() As Integer
Get
Age = 3
End Get
End Property
Private _data As Integer
Public WriteOnly Property Data() As Integer
Dùng Structure TRY CATCH FINALLY END TRY để xử lý
error Thí dụ như trong bài toán chia dưới đây, nếu bị Division by 0 error thì ta sẽ cho kết quả bằng 0:
Try
Trang 29result = a / b ' if this section has error jump to Catch section
2.3 Những khác biệt giữa VB.NET với VB6
VB.NET, còn gọi là VB7, chẳng qua là C# viết theo lối Visual Basic
Nay VB7 đã hoàn toàn là Object Oriented, tức là cho ta dùng lại (reuse)
classes/forms theo cách thừa kế thật thoải mái, nên nó khác VB6 nhiều lắm Dầu vậy, đối với VB6 programmers học VB.NET không khó Lý do là
VB.NET không cho thêm nhiều từ mới (reserved words) Nói chung các ý
niệm mới trong VB.NET đều dễ lĩnh hội, nhất là khi đem ra áp dụng cách
thực tế Đó là nhờ Microsoft vẫn giữ nguyên tắc dấu và làm sẵn (của VB6)
những gì rắc rối phía sau sân khấu, để ta có thể tập trung vào việc tìm kiếmmột giải pháp, thay vì quá bận tâm vào cách thức làm một việc gì Chínhnguyên tắc ấy đã giúp Microsoft chiêu mộ được 3 triệu VB6 programmerstrên khắp thế giới VB.NET cống hiến cho VB programmers một công cụ rấthữu hiệu để dùng cho mọi hoàn cảnh, từ database, desktop, distributed,internet cho đến real-time hay mobile (pocket PC)
Những ưu điểm (features) của VB.NET đến từ chức năng của.NET
Framework Nó mang đến phương tiện lập trình cho mạng cách Object
Trang 30Những thứ nầy tuy lạ nhưng không khó học, ngược lại sẽ tiết kiệm rất nhiềuthì giờ Mặc dầu VB6 là một ngôn ngữ lập trình trưởng thành và hiệu năng,chắc chắn hãy còn tồn tại trong nhiều năm nữa, nhưng học thêm VB.NET làmột đầu tư tương đối ít tốn kém và đảm bảo huê lợi gấp bao nhiêu lần tronghàng thập niên tới.
Trong bài nầy ta sẽ bàn về những điểm khác nhau giữa VB6 vàVB.NET từ quan điểm ngôn ngữ lập trình Trong một bài khác ta sẽ bàn vềnhững chức năng Đối tượng (Object Oriented) của VB.NET
2.4 Namespaces
Namespaces là một cách đặt tên để giúp sắp đặt các Classes ta dùng
trong program một cách thứ tự hầu dễ tìm kiếm chúng Tất cả codetrong.NET, viết bằng VB.NET, C# hay ngôn ngữ nào khác, đều được chứatrong một namespace Điểm nầy cũng áp dụng cho code trong.NET systemclass libraries Chẳng hạn, các classes của WinForms đều nằm trongSystem.Windows.Forms namespace Và các classes dùng cho collections nhưQueue, Stack, Hashtable v v đều nằm trong System Collectionsnamespace
Tất cả code ta viết trong program của mình cũng đều nằm trong cácnamespaces Trước đây trong VB6, mỗi khi nhắc đến một Class trong một
COM tên CompName ta viết CompName.classname (còn gọi là PROGID),
tức là cũng dùng một dạng namespace
Tuy nhiên phương pháp nầy có một vài giới hạn:
Địa chỉ của class bị buộc cứng vào component đang chứa nó
Những classes không nằm trong một COM component thì không có
"namespace"
Cách gọi tên PROGID chỉ có một bậc thôi, không có bậc con, bậc cháu
Trang 31Namespaces trong.NET khắc phục được mọi giới hạn nói trên trong
VB6 Nhiều assemblies có thể nằm trong cùng một namespace, nghĩa là
classes khai báo trong các components khác nhau có thể có chung mộtnamespace Điều nầy cũng áp dụng xuyên qua các ngôn ngữ, giúp cho mộtclass viết trong VB.NET có thể nằm trong cùng một namespace với một classviết trong C#, hơn nữa, trong một assembly có thể có nhiều namespaces, dùrằng thông thường ta chỉ dùng một namespace duy nhất cho tất cả các classestrong ấy
Theo mặc định, tên của project được dùng làm namespace Nếu bạn
right click lên project name NETListbox trong Solution Explorer của program Demo, rồi chọn Properties trong popup menu, IDE sẽ hiển thị
Property Pages dialog
Namespaces có thể được phân chia thứ bậc giống như Folders trongmột File Directory Nó sẽ giúp user sắp đặt các classes theo đúng nhóm chotrong sáng và dễ đọc Thí dụ bạn đang viết một program cho một hảng sản
xuất, bạn sẽ dùng namespace NhàSảnXuất ở root level Bên trong namespace
ấy bạn sẽ tạo thêm các nhánh của chương trình như:
Trang 322.5 Local và Global Namespaces
Khác với COM components với "namespace" của chúng áp dụng chokhắp cả computer, namespaces của.NET thông thường là Local, chỉ cóapplication program của nó thấy mà thôi NET cũng hổ trợ Global namespace,nhưng phải được ký tên (digitally signed) và đăng ký với.NET runtime đểchứa nó trong global assembly cache
Dùng Namespaces
Ta có thể dùng namespaces bằng cách nói thẳng ra (explicitly) vớinguyên tên (Direct Addressing) hay hàm ý (implicitly) với Import keyword.Nhưng điều tiên quyết là ta phải reference cái assembly chứa namespace mà
ta muốn dùng Ta thực hiện việc ấy với Menu command Project | AddReferences Khi Add References dialog hiện ra, chọn Tab.NET chostandard.NET components hay Tab Projects cho DLL của một.NET projectkhác, highlight DLL bạn muốn rồi click Select button, đoạn click OK
Chẳng hạn ta muốn read và write từ stdio (cái console input/output stream) Cái namespace ta cần sẽ là System.Console Trong cách Direct Addressing ta sẽ code như sau
để viết hàng chữ "Chào thế giới":
System.Console.WriteLine ("Hello world!")
Nếu ta dùng Import keyword bằng cách nhét vào câu Imports System.Console ở đầu code module, ta có thể code gọn hơn:
WriteLine ("Hello world!")
Dưới đây là một số namespaces thông dụng:
System.IO Đọc/Viết files và cácFileStream, Path, StreamReader,
Trang 33data streams khác StreamWriter
System.Drawing Đồ họa Bitmap, Brush, Pen Color, Font,
Graphics
System.Data Quản lý data
DataSet, DataTable, DataRow,SQLConnection,
System.Math Tính toán Sqrt, Cos, Log, Min
System.Diagnostics Debug Debug, Trace
System.XML
Làm việc với XML,Document ObjectModel
XMLDocument, XMLElement,XMLReader, XMLWriter
System.Security Cho phép kiểm soát
an ninh
Cryptography, Permission,Policy
Aliasing Namespaces (dùng bí danh)
Khi hai namespaces trùng tên, ta phải dùng nguyên tên (kể cả gốc tích) để phân biệt chúng Điển hình là khi ta dùng những namespaces liên hệ đến VB6 như Microsoft.Visualbasic Thay vì code:
Microsoft.Visualbasic.Left ( InputString, 6)
Trang 34' Root Namespace là NhàSảnXuất
Trong.NET, Integer có bốn loại: Byte (8 bits, không có dấu, tức là từ 0đến 255), Short (16 bits, có dấu cộng trừ, tức là từ -32768 đến 32767), Integer(32 bits, có dấu) và Long (64 bits, có dấu) Như vậy Integer bây giờ tươngđương với Long trong VB6, và Long bây giờ lớn gấp đôi trong VB6
Floating-Point Division (Chia số dấu phảy động)
Trang 35Việc chia số dấu phảy động (Single, Double) trong VB.NET được làm theo đúng tiêu chuẩn của IEEE Do đó nếu ta viết code như sau:
Dim dValueA As Double
Dim dValueB As Double
Dim dValueA As Double
Dim dValueB As Double
Char Type
VB.NET có cả Byte lẫn Char data type Byte được dùng cho một sốnhỏ 0-255, có thể chứa một ASCII character trong dạng con số
Trang 36Char được dùng để chứa một Unicode (16 bit) character Char là mộtcharacter của String
String Type
Nhìn lướt qua, String trong VB.NET không có vẻ khác VB6 bao nhiêu.Nhưng trừ khi ta muốn tiếp tục dùng các Functions như InStr, Left, Mid andRight trong VB6, ta nên xem String là một object và dùng nhữngProperties/Functions của nó trong VB.NET cho tiện hơn Sau nầy ta sẽ họcthêm về String của VB.NET trong một bài riêng
Ý niệm fixed-length (có chiều dài nhất định) String trong VB6 không còn dùng nữa Do đó ta không thể declare:
Dim myString as String * 25
Object thay thế Variant
Một trong những data types linh động, hiệu năng và nguy hiểm trongVB6 là Variant Một variable thuộc data type Variant có thể chứa gần như thứ
gì cũng được (trừ fixed-length string), nó tự động thích nghi bên trong đểchứa trị số mới Cái giá phải trả cho sự linh động ấy là program chạy chậm và
dễ có bugs tạo ra bởi sự biến đổi từ data loại nầy qua loại khác không theo dựtính của ta
VB.NET thay thế Variant bằng Object Vì trên phương diện kỹ thuật tất cả data types trong.NET đều là Object nên, giống như Variant, Object có thể chứa đủ thứ Nói chung, dầu Object giống như Variant, nhưng trong.NET ta phải nói rõ ra (explicitly) mình muốn làm gì Ta thử xem một thí dụ code trong VB6 như sau:
Private Sub Button1_Click()
Dim X1 As Variant
Dim X2 As Variant
Trang 37X1 = "24.7"
X2 = 5
Debug.Print X1 + X2 ' Cộng hai số với operator +
Debug.Print X1 & X2 ' Ghép hai strings lại với operator &
Trang 38' Treat X like an actual product
CType(X, Product).Description = "Soft Drink"
Console.WriteLine(CType(X, Product).Description)
End Sub
Mặc dù X được instantiated như một Product, nó vẫn được xem nhưmột Object variable Do đó mỗi khi muốn dùng nó như một Product ta phảinhờ đến CType Từ chuyên môn trong programming gọi đó là Type Casting
Thay đổi trong cách khai báo Variables
Khai báo nhiều Variables
Trong VB6 ta có thể Declare nhiều variables trên cùng một hàng như:
Dim i, j, k as Integer
Kết quả là chỉ có k là Integer, còn i và j là Variant (có thể đó là điềubạn không ngờ) Trong VB.NET thì cả ba i, j và k đều là Integer, và như thếhợp lý hơn
Khai báo trị số khởi đầu
Trong VB6, sau khi declare variable ta thường cho nó một trị số khởi đầu như:
Trang 39Dim X as Integer
X = 12
Bây giờ trong VB.NET ta có thể gọp chung hai statements trên lại như sau:
Dim X as Integer = 12
Khai báo Constants
Khi khai báo Constants trong VB.NET ta phải khai rõ Data type của nó là String, Integer, Boolean v v.:
Public Const myConstantString as String = "happy"
Public Const maxStudent as Integer = 30
Dim As New
Trong VB6 ta được khuyên không nên code:
Dim X as New Customer
vì VB6 không instantiate một Object Customer cho đến khi X được dùng đến
- chuyện nầy rất nguy hiểm vì có thể tạo ra bug mà ta không ngờ
Trong VB.NET ta có thể yên tâm code:
Dim X as New Customer()
vì statement nói trên lập tức tạo ra một Object Customer
Khai báo Variable trong Scope của Block
Trong thí dụ dưới đây, variable X được declared trong một IF THEN END IF block Khi execution ra khỏi IF block ấy, X sẽ bị hủy diệt
Do đó, VB.NET sẽ than phiền là X undefined vì nó không thấy X bên ngoài IF block Luật nầy cũng áp dụng cho những Blocks khác như DO LOOP, WHILE END WHILE, FOR NEXT, v v
Trang 40Private Sub Button1_Click(ByVal sender As System Object, ByVal e AsSystem.EventArgs) Handles Button1.Click