Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 192 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
192
Dung lượng
3,46 MB
Nội dung
ĐỒ ÁN CƠ SỞ http://www.ebook.edu.vn PHẦN 1: TÌM HIỂU C# Nguyễn Minh Châu _ Lê Quân – Lớp C06TH21 - Khoa Công nghệ thông tin – Đại học KTCN ĐỒ ÁN CƠ SỞ http://www.ebook.edu.vn Chương C# Net Framework Mục tiêu C# cung cấp ngôn ngữ lập trình đơn giản, an toàn, đại, hướng đối tượng, đặt trọng tâm vào Internet, có khả thực thi cao cho môi trường NET C# ngôn ngữ mới, tích hợp tinh hoa ba thập kỷ phát triển ngôn ngữ lập trình Ta dể dàng thấy C# có đặc trưng quen thuộc Java, C++, Visual Basic, … Đề tài đặt trọng tâm giới thiệu ngôn ngữ C# cách dùng công cụ lập trình tảng NET Với ngôn ngữ C++, học ta không cần quan tâm đến môi trường thực thi Với ngôn ngữ C#, ta học để tạo ứng dụng NET, quan điểm ngôn ngữ Do đó, đề tài xét C# tập trung ngữ cảnh cụ thể tảng NET Microsoft ứng dụng máy tính để bàn ứng dụng Internet Chương trình bày chung hai phần ngôn ngữ C# tảng NET, bao gồm ứng dụng NET (.NET Framework) 1.1 Nền tảng NET Khi Microsoft công bố C# vào tháng năm 2000, việc khánh thành phần số nhiều kiện mà tảng Net công công bố Nền tảng Net khung phát triển ứng dụng mới, cung cấp giao diện lập trình ứng dụng (Application Programming Interface - API) mẻ cho dịch vụ hệ điều hành Windows, cụ thể Windows 2000, mang lại nhiều kỹ thuật khác bật Microsoft suốt từ năm 90 Trong số có dịch vụ COM+, công nghệ ASP, XML thiết kế hướng đối tượng, hỗ trợ giao thức dịch vụ web SOAP, WSDL UDDL với trọng tâm Internet, tất tích hợp kiến trúc DNA Nền tảng NET bao gồm bốn nhóm sau: Một tập ngôn ngữ, bao gồm C# Visual Basic Net; tập công cụ phát triển bao gồm Visual Studio Net; tập đầy đủ thư viện phục vụ cho việc xây dựng ứng dụng web, dịch vụ web ứng dụng Windows; có CLR - Common Language Runtime: (ngôn ngữ thực thi dùng chung) để thực thi đối tượng xây dựng bô khung Một tập Server Xí nghiệp Net SQL Server 2000 Exchange 2000, BizTalk 2000,… chúng cung cấp chức cho việc lưu trữ liệu quan hệ, thư điện tử, thương mại điện tử B2B,… Các dịch vụ web thương mại miễn phí, vừa công bố gần dự án Hailstorm; nhà phát triển dùng dịch vụ để xây dựng ứng dụng đòi hỏi tri thức định danh người dùng… .NET cho thiết bị PC điện thoại (cell phone), thiết bị game 1.2 .NET Framework Net hỗ trợ tích hợp ngôn ngữ, tức ta kế thừa lớp, bắt biệt lệ, Nguyễn Minh Châu _ Lê Quân – Lớp C06TH21 - Khoa Công nghệ thông tin – Đại học KTCN ĐỒ ÁN CƠ SỞ http://www.ebook.edu.vn đa hình thông qua nhiều ngôn ngữ .NET Framework thực việc nhờ vào đặc tả Common Type System - CTS (hệ thống kiểu chung) mà tất thành phần Net tuân theo Ví dụ, thứ Net đối tượng, thừa kế từ lớp gốc System.Object Ngoài Net bao gồm Common Language Specification CLS (đặc tả ngôn ngữ chung) Nó cung cấp qui tắc mà ngôn ngữ muốn tích hợp phải thỏa mãn CLS yêu cầu tối thiểu ngôn ngữ hỗ trợ Net Trình biên dịch tuân theo CLS tạo đối tượng tương hợp với đối tượng khác Bộ thư viện lớp khung ứng dụng (Framework Class Library - FCL) dùng ngôn ngữ tuân theo CLS .NET Framework nằm tầng hệ điều hành (bất kỳ hệ điều hành không Windows) .NET Framework bao bao gồm: • Bốn ngôn ngữ thức: C#, VB.Net, C++, Jscript.NET • Common Language Runtime - CLR, tảng hướng đối tượng cho phát triển ứng dụng Windows web mà ngôn ngữ chia sẻ sử dụng • Bộ thư viện Framework Class Library - FCL Hình 1-1 Kiến trúc khung ứng dụng Net Thành phần quan trọng NET Framework CLR, cung cấp môi trường cho ứng dụng thực thi, CLR máy ảo, tương tự máy ảo Java CLR kích hoạt đối tượng, thực kiểm tra bảo mật, cấp phát nhớ, thực thi thu dọn chúng Trong Hình 1-1 tầng CLR bao gồm: • Các lớp sở • Các lớp liệu XML • Các lớp cho dịch vụ web, web form, Windows form Các lớp gọi chung FCL, Framework Class Library, cung cấp API hướng đối tượng cho tất chức NET Framework (hơn 5000 lớp) Các lớp sở tương tự với lớp Java Các lớp hỗ trợ thao tác Nguyễn Minh Châu _ Lê Quân – Lớp C06TH21 - Khoa Công nghệ thông tin – Đại học KTCN ĐỒ ÁN CƠ SỞ http://www.ebook.edu.vn nhập xuất, thao tác chuổi, văn bản, quản lý bảo mật, truyền thông mạng, quản lý tiểu trình chức tổng hợp khác… Trên mức lớp liệu XML Lớp liệu hỗ trợ việc thao tác liệu sở liệu Các lớp bao gồm lớp SQL (Structure Query Language: ngôn ngữ truy vấn có cấu trúc) cho phép ta thao tác liệu thông qua giao tiếp SQL chuẩn Ngoài tập lớp gọi ADO.Net cho phép thao tác liệu Lớp XML hỗ trợ thao tác liệu XML, tìm kiếm diễn dịch XML Trên lớp liệu XML lớp hỗ trợ xây dựng ứng dụng Windows (Windows forms), ứng dụng Web (Web forms) dịch vụ Web (Web services) 1.3 Biên dịch ngôn ngữ trung gian (MSIL) Với NET chương trình không biên dịch thành tập tin thực thi, mà biên dịch thành ngôn ngữ trung gian (MSIL - Microsoft Intermediate Language, viết tắt IL), sau chúng CLR thực thi Các tập tin IL biên dịch từ C# đồng với tập tin IL biên dịch từ ngôn ngữ Net khác Khi biên dịch dự án, mã nguồn C# chuyển thành tập tin IL lưu đĩa Khi chạy chương trình IL biên dịch (hay thông dịch) lần trình Just In Time - JIT, kết mã máy xử lý thực thi Trình biên dịch JIT chạy có yêu cầu Khi phương thức gọi, JIT phân tích IL sinh mã máy tối ưu cho loại máy JIT nhận biết mã nguồn biên dịch chưa, để chạy ứng dụng hay phải biên dịch lại CLS có nghĩa ngôn ngữ Net sinh mã IL Các đối tượng tạo theo ngôn ngữ truy cập thừa kế đối tượng ngôn ngữ khác Vì ta tạo lớp sở VB.Net thừa kế từ C# 1.4 Ngôn ngữ C# C# ngôn ngữ đơn giản, với khoảng 80 từ khoá mười kiểu liệu dựng sẵn, C# có tính diễn đạt cao C# hỗ trợ lập trình có cấu trúc, hướng đối tượng, hướng thành phần (component oriented) Trọng tâm ngôn ngữ hướng đối tượng lớp Lớp định nghĩa kiểu liệu mới, cho phép mở rộng ngôn ngữ theo hướng cần giải C# có từ khoá dành cho việc khai báo lớp, phương thức, thuộc tính (property) C# hỗ trợ đầy đủ khái niệm trụ cột lập trình hướng đối tượng: đóng gói, thừa kế, đa hình Định nghĩa lớp C# không đòi hỏi tách rời tập tin tiêu đề với tập tin cài đặt C++ Hơn thế, C# hỗ trợ kiểu sưu liệu mới, cho phép sưu liệu trực tiếp tập tin mã nguồn Đến biên dịch tạo tập tin sưu liệu theo định dạng XML C# hỗ trợ khái niệm giao diện, interfaces (tương tự Java) Một lớp kế thừa lớp cha cài đặt nhiều giao diện C# có kiểu cấu trúc, struct (không giống C++) Cấu trúc kiểu hạng nhẹ bị giới hạn Cấu trúc thừa kế lớp hay kế thừa cài đặt giao diện Nguyễn Minh Châu _ Lê Quân – Lớp C06TH21 - Khoa Công nghệ thông tin – Đại học KTCN ĐỒ ÁN CƠ SỞ http://www.ebook.edu.vn C# cung cấp đặc trưng lập trình hướng thành phần property, kiện dẫn hướng khai báo (được gọi attribute) Lập trình hướng component hỗ trợ CLR thông qua siêu liệu (metadata) Siêu liệu mô tả lớp bao gồm phương thức thuộc tính, thông tin bảo mật Assembly tập hợp tập tin mà theo cách nhìn lập trình viên thư viện liên kết động (DLL) hay tập tin thực thi (EXE) Trong NET assembly đơn vị việc tái sử dụng, xác định phiên bản, bảo mật, phân phối CLR cung cấp số lớp để thao tác với assembly C# cho truy cập trực tiếp nhớ dùng trỏ kiểu C++, vùng mã xem không an toàn CLR không thực thi việc thu dọn rác tự động đối tượng tham chiếu trỏ lập trình viên tự giải phóng Nguyễn Minh Châu _ Lê Quân – Lớp C06TH21 - Khoa Công nghệ thông tin – Đại học KTCN ĐỒ ÁN CƠ SỞ http://www.ebook.edu.vn Chương Khởi đầu Chương ta tạo, biên dịch chạy chương trình “Hello World” ngôn ngữ C# Phân tích ngắn gọn chương trình để giới thiệu đặc trưng yếu ngôn ngữ C# Ví dụ 2-1: Chương trình Hello World class HelloWorld { static void Main( ) { // sử dụng đối tượng console hệ thống System.Console.WriteLine("Hello World"); } } Sau biên dịch chạy HelloWorld, kết dòng chữ “Hello World” hiển thị hình 2.1 Lớp, đối tượng kiểu Bản chất lập trình hướng đối tượng tạo kiểu Một kiểu biểu diễn vật Giống với ngôn ngữ lập trình hướng đối tượng khác, kiểu C# định nghĩa từ khoá class (và gọi lớp) thể lớp gọi đối tượng Xem ví dụ 2-1 ta thấy cách khai báo lớp HelloWorld Ta thấy cách khai báo nội dung lớp hoàn toàn giống với ngôn ngữ Java C++, có khác cuối khai báo lớp không cần dấu “;” 2.1.1 Phương thức Các hành vi lớp gọi phương thức thành viên (gọi tắt phương thức) lớp Một phương thức hàm (phương thức thành viên gọi hàm thành viên) Các phương thức định nghĩa mà lớp làm Cách khai báo, nội dung cách sử dụng phương thức giống hoàn toàn với Java C++ Trong ví dụ có phương thức đặc biệt phương thức Main() (như hàm main() C++) phương thức bắt đầu ứng dụng C#, trả kiểu void hay int Mỗi chương trình (assembly) có nhiều phương thức Main phải định phương thức Main() bắt đầu chương trình 2.1.2 Cách ghi C# có ba kiểu ghi có hai kiểu quen thuộc C++ dùng: "//" "/* … */" Ngoài kiểu ghi trình bày chương kế Ví dụ 2-2 Hai hình thức ghi C# class HelloWorld Nguyễn Minh Châu _ Lê Quân – Lớp C06TH21 - Khoa Công nghệ thông tin – Đại học KTCN ĐỒ ÁN CƠ SỞ http://www.ebook.edu.vn { static void Main( ) //Đây ghi dòng { /* Bắt đầu ghi nhiều dòng Vẫn ghi Kết thúc ghi */ System.Console.WriteLine("Hello World"); } } 2.1.3 Ứng dụng dạng console “Hello World” ứng dụng console Các ứng dụng dạng thường giao diện người dùng đồ họa Các nhập xuất thông qua console chuẩn (dạng dòng lệnh DOS) Trong ví dụ trên, phương thức Main() viết hình dòng “Hello World” Do hình quản lý đối tượng Console, đối tượng có phương thức WriteLine() cho phép đặt dòng chữ lên hình Để gọi phương thức ta dùng toán tử “.”, sau: Console.WriteLine(…) 2.1.4 Namespaces - Vùng tên Console nhiều (cả ngàn) lớp thư viện NET Mỗi lớp có tên có hàng ngàn tên mà lập trình viên phải nhớ phải tra cứu sử dụng Vấn đề phải giảm bớt lượng tên phải nhớ Ngoài vấn đề phải nhớ nhiều tên ra, nhận xét sau: số lớp có mối liên hệ mặt ngữ nghĩa, ví dụ lớp Stack, Queue, Hashtable… lớp cài đặt cấu trúc liệu túi chứa Như nhóm lớp thành nhóm thay phải nhớ tên lớp lập trình viên cần nhớ tên nhóm, sau thực việc tra cứu tên lớp nhóm nhanh chóng Nhóm vùng tên C# Một vùng tên có nhiều lớp vùng tên khác Nếu vùng tên A nằm vùng tên B, ta nói vùng tên A vùng tên vùng tên B Khi lớp vùng tên A ghi sau: B.A.Tên_lớp_trong_vùng_tên_A System vùng tên chứa nhiều lớp hữu ích cho việc giao tiếp với hệ thống lớp công dụng chung lớp Console, Math, Exception… Trong ví dụ HelloWorld trên, đối tượng Console dùng sau: System.Console.WriteLine("Hello World"); 2.1.5 Toán tử chấm “.” Như Ví dụ 2-1 toán tử chấm dùng để truy suất liệu phương thức lớp (như Console.WriteLine()), đồng thời dùng để định tên lớp vùng tên (như System.Console) Toán tử dấu chấm dùng để truy xuất vùng tên vùng tên: Vùng_tên.Vùng_tên_con.Vùng_tên_con_con 2.1.6 Từ khoá using Nếu chương trình sử dụng nhiều lần phương thức Console.WriteLine, từ Nguyễn Minh Châu _ Lê Quân – Lớp C06TH21 - Khoa Công nghệ thông tin – Đại học KTCN ĐỒ ÁN CƠ SỞ http://www.ebook.edu.vn System phải viết nhiều lần Điều khiến lập trình viên nhàm chán Ta khai báo chương trình có sử dụng vùng tên System, sau ta dùng lớp vùng tên System mà không cần phải có từ System trước Ví dụ 2-3 Từ khóa using // Khai báo chương trình có sử dụng vùng tên System using System; class HelloWorld { static void Main( ) { // Console thuộc vùng tên System Console.WriteLine("Hello World"); } } 2.1.7 Phân biệt hoa thường Ngôn ngữ C# phân biệt chữ hoa thường giống Java hay C++ (không VB) Ví dụ WriteLine khác với writeLine hai khác với WRITELINE Tên biến, hàm, hằng… phân biệt chữ hoa chữ thường 2.1.8 Từ khoá static Trong Ví dụ 2-1 phương thức Main() khai báo kiểu trả void dùng từ khoá static Từ khoá static cho biết ta gọi phương thức Main() mà không cần tạo đối tượng kiểu HelloWorld 2.2 Phát triển “Hello World” Có hai cách để viết, biên dịch chạy chương trình HelloWorld dùng môi trưởng phát triển tích hợp (IDE) Visual Studio Net hay viết trình soạn thảo văn biên dịch dòng lệnh IDE Vs.Net dễ dùng Do đó, đề tài trình bày theo hướng làm việc IDE Visual Studio Net 2.2.1 Soạn thảo “Hello World” Để tạo chương trình “Hello World” IDE, ta chọn Visual Studio Net từ thực đơn Tiếp theo hình IDE chọn File > New > Project từ thực đơn, theo xuất cửa sổ sau: Nguyễn Minh Châu _ Lê Quân – Lớp C06TH21 - Khoa Công nghệ thông tin – Đại học KTCN ĐỒ ÁN CƠ SỞ http://www.ebook.edu.vn Hình 2-1 Tạo ứng dụng console VS.Net Để tạo chương trình “Hello World” ta chọn Visual C# Project > Console Application, điền HelloWorld ô Name, chọn đường dẫn nhấn OK Một cửa sổ soạn thảo xuất Hình 2-2 Cửa sổ soạn thảo nội dung mã nguồn Vs.Net tự tạo số mã, ta cần chỉnh sửa cho phù hợp với chương trình Nguyễn Minh Châu _ Lê Quân – Lớp C06TH21 - Khoa Công nghệ thông tin – Đại học KTCN ĐỒ ÁN CƠ SỞ 10 http://www.ebook.edu.vn 2.2.2 Biên dịch chạy “Hello World” Sau đầy đủ mã nguồn ta tiến hành biên dịch chương trình: nhấn “Ctrl– Shift–B” hay chọn Build > Build Solution Kiểm tra xem chương trình có lỗi không sổ Output cuối hình Khi biên dịch chương trình lưu lại thành tập tin cs Chạy chương trình “Ctrl–F5” hay chọn Debug > Start Without Debugging 2.2.3 Trình gở rối Visual Studio Net Trình gỡ rối VS.Net mạnh hữu ích Ba kỹ yếu để sử dụng trình gở rối là: • Cách đặt điểm ngắt (breakpoint) chạy điểm ngắt • Làm chạy bước chạy vượt qua phương thức • Làm để quan sát hiệu chỉnh giá trị biến, liệu thành viên,… Cách đơn giản để đặt điểm ngắt bấm chuột trái vào phía lề trái, lên chấm đỏ Hình 2-3 Minh họa điểm ngắt Cách dùng trình gở rối hoàn toàn giống với trình gở rối VS 6.0 Nó cho phép ta dừng lại vị trí bất kỳ, cho ta kiểm tra giá trị tức thời cách di chuyển chuột đến vị trị biến Ngoài ra, gở rối ta xem giá trị biến thông qua cửa sổ Watch Local Để chạy chế độ gở rối ta chọn Debug > Start Debugging hay nhấn F5, muốn chạy bước ta bấm F11 chạy vượt qua phương thức ta bấm F10 Nguyễn Minh Châu _ Lê Quân – Lớp C06TH21 - Khoa Công nghệ thông tin – Đại học KTCN ĐỒ ÁN CƠ SỞ 178 http://www.ebook.edu.vn [[DEFAULT constant_expression] | [IDENTITY [(seed, increment)] [ [,…n]] - Column_name: tên field - Computed_column_expression: biểu thức tính toán từ field table cho field tính toán - Default: giá trị mặc định cho cột - Identity: giá trị cột tự động tăng theo seed increment, dùng cho field kiểu int - Constraint: ràng buộc cho bảng Constraint cho phép định nghĩa rule để bảo toàn ràng buộc liệu database Có loại constraint: + Column constraint: định nghĩa thuộc tính field, áp dụng tham chiếu field đó: ::= [CONSTRAINT constraint_name] {[NULL | NOT NULL] | [{PRIMARY KEY | UNIQUE} [CLUSTERED | NONCLUSTERED] [ WITH FILLFACTOR = fillfactor] [ON {fillgroup | DEFAULT}] ] | [[FOREIGN KEY] REFERENCES ref_table ([ref_column]) [ON DELETE {CASCADE | NO ACTION}] [ON UPDATE {CASCADE | NO ACTION}] [ NOT FOR REPLICATION] (local_expression) } Nguyễn Minh Châu _ Lê Quân – Lớp C06TH21 - Khoa Công nghệ thông tin – Đại học KTCN ĐỒ ÁN CƠ SỞ 179 http://www.ebook.edu.vn + Table constraint: khai báo độc lập với field table tham chiếu đến nhiều cột table đó: ::= [CONSTRAINT constraint_name] {[{PRIMARY KEY | UNIQUE} [CLUSTERED | NONCLUSTERED] {(column [ASC |DES] [,…n])} [ WITH FILLFACTOR = fillfactor] [ON {fillgroup | DEFAULT}] ] | [[FOREIGN KEY] REFERENCES ref_table ([ref_column]) [ON DELETE {CASCADE | NO ACTION}] [ON UPDATE {CASCADE | NO ACTION}] [ NOT FOR REPLICATION] ] | [CHECK [NOT FOR REPLICATION] (local_expression) } Ví dụ tạo bảng Docgia, Dausach CSDL QuanLyThuVien: Use QuanLyThuVien Go Create table Docgia (Ma_docgia int identity (1,1) primary key, Ho varchar (50), Ten_lot varchar(50), Ten varchar (50), Ngay_sinh smalldatetime) Create table Dausach (Isbn varchar(50) primary key, Ma_tuasach int , Ngon_ngu varchar(50), Bia varchar(20), Trang_thai int) * Thêm, sửa, xóa liệu bảng Để thêm sửa liệu vào bảng, dùng cú pháp lệnh: ALTER TABLE… ADD… Để xóa field table ta dùng cú pháp lệnh ALTER TABLE… DROP… Để xóa table dùng lệnh ALTER TABLE Nguyễn Minh Châu _ Lê Quân – Lớp C06TH21 - Khoa Công nghệ thông tin – Đại học KTCN ĐỒ ÁN CƠ SỞ 180 http://www.ebook.edu.vn Lưu ý: xóa table mà tham chiếu (references) ràng buộc (constraint) foreign key Ràng buộc foreign key table tham chiếu phải xóa trước Ví dụ: - Thêm field Ngon_ngu vào bảng Dausach: Alter table Dausach Add Ngon_ngu varchar (50) - Thêm khóa cho column Isnb: Alter table Dausach Add primary key (Isbn) - Tạo khóa ngoại cho column Ma_tuasach: Alter table Dausach Add foreign key (Isbn) references Tuasach (Ma_tuasach) - Xóa column Ngon_ngu: Alter table Dausach Drop column Ngon_ngu - Xóa ràng buộc khóa ngoại Ma_tuasach: Alter table nocheck constraint FK_Dausacu_Tuasach 3.2.4 Quản lý View SQL Server 2005 View table ảo, dùng để lưu trữ truy vấn định trước, xem đối tượng database Các table tham gia truy vấn gọi base table: - Dữ liệu View lấy từ bảng - Là kết hợp từ nhiều bảng - Là quan hệ nhiều bảng - Có thể chứa tính toán - Có thể kết hợp bảng View khác View hoạt động giống bảng Nó chứa liệu theo dòng cột, cho phép nhận giá trị cột xác định dòng xác định Tuy nhiên, View không cho phép việc lưu giá trị Nó chứa thông tin hướng dẫn cho server CSDl biết cách nhận liệu Khi mở View, server thực thi hướng dẫn tạo bảng ảo từ View Bảng ảo tồn làm việc với nó, không lưu giữ đĩa cứng Nguyễn Minh Châu _ Lê Quân – Lớp C06TH21 - Khoa Công nghệ thông tin – Đại học KTCN ĐỒ ÁN CƠ SỞ http://www.ebook.edu.vn 181 Docgia Ma_docgia Ho Tên_lot Tên Ngay_sinh Tran Tan An … Pham Van Anh … Nguyen Hai Binh … Use QuanLyThuVien Go Create view dbo.DocgiaView As Select Ho, Ten_lot, Ten from Docgia Docgia Ho Tên_lot Tên Tran Tan An Pham Van Anh Nguyen Hai Binh User’s view Lợi ích View: - Tập trung vào liệu cần - Che phần liệu chưa cần dùng database - Đơn giản hóa việc quản lý quyền user - Cải thiện việc thực thi - Tổ chức lại liệu để xuất cho ứng dụng bên Cũng giống Database, Table, dùng công cụ Object Explorer dùng tập lệnh T-SQL để quản lý View 3.2.4.1 Dùng công cụ Object Explorer a Tạo View Để tạo View công cụ, ta thực bước sau: - Trong cửa sổ Object Explorer, chọn CSDL muốn tạo View, nhấp phải chuột lên Views, chọn New View, hộp thoại Add Table xuất Trong hộp thoại Add Table chọn bảng muốn tạo View nhấn Add, sau chọn xong, nhấn Close để đóng hộp thoại Nguyễn Minh Châu _ Lê Quân – Lớp C06TH21 - Khoa Công nghệ thông tin – Đại học KTCN ĐỒ ÁN CƠ SỞ 182 http://www.ebook.edu.vn Trong hình vẽ trên, chọn bảng Cuonsach, Docgia Quatrinhmuon để tạo View Quatrinhmuonsach Mục đích: lấy liệu sách với thông tin tương ứng trình mượn sách độc giả mượn sách - Trong cửa sổ View, kéo cột Ma_cuonsach bảng Cuonsach, thả vào cột Ma_cuonsach bảng Quatrinhmuon; kéo cột Ma_docgia bảng Quatrinhmuon thả vào cột Ma_docgia bảng Docgia để tạo liên kết bảng Nhấn chọn hộp kiểm phía trước tên cột cột muốn tạo View Các tên cột chọn thêm vào bảng tiêu chuẩn bên View Để xem thử kết liệu trả về, nhấn F5 Execute công cụ (biểu tượng ) Nhấn save để lưu thao tác vừa thực Để xem kết quả, cửa sổ Object Explorer, chọn Views thấy View vừa tạo Chúng ta xem qua hình vẽ minh họa đây: Nguyễn Minh Châu _ Lê Quân – Lớp C06TH21 - Khoa Công nghệ thông tin – Đại học KTCN ĐỒ ÁN CƠ SỞ 183 http://www.ebook.edu.vn b Thay đổi, xóa View Nếu muốn thay đổi View tồn tại, thực sau: Nhấn phải chuột lên View muốn thay đổi, chọn Modify từ trình đơn ngữ cảnh Thực thay đổi nhấn nút save để lưu Nhấn Close để đóng Để xóa View, chọn View cần xóa, nhấp chuột phải chọn Delete từ trình đơn ngữ cảnh 3.2.4.2 Dùng T-SQL a Tạo View Cú pháp tạo View: Nguyễn Minh Châu _ Lê Quân – Lớp C06TH21 - Khoa Công nghệ thông tin – Đại học KTCN ĐỒ ÁN CƠ SỞ 184 http://www.ebook.edu.vn Các tham số sử dụng cú pháp tạo View: Ví dụ tạo View vw_rptQuaTrinhMuonSach lệnh T-SQL: Create View vw_rptQuaTrinhMuonSach As Select C.Isbn, C.Ma_cuonsach, C.Tinh_trang, D.Ma_docgia, Q.ngay_hethan, Q.ngay_giotra, Q.tienmuon, Q.tien_datra, Q.tien_datcoc Nguyễn Minh Châu _ Lê Quân – Lớp C06TH21 - Khoa Công nghệ thông tin – Đại học KTCN ĐỒ ÁN CƠ SỞ 185 http://www.ebook.edu.vn From (Cuonsach C inner join Quatrinhmuon Q on C.isbn = Q.isbn) INNER JOIN Docgia D ON D.ma_docgia = Q.ma_docgia Select *from vw_rptQuaTrinhMuonSach (lệnh để xem view vừa tạo) Luu ý: - Để tạo View phải có quyền CREATE VIEW, quyền SELECT TABLE table sở - Tên View lưu trữ sysobjects table, tên cột View lưu trữ syscolumns, text dùng để tạo View lưu trữ syscomments table b Sửa đổi, xóa View Để sửa cấu trúc View ta dùng cú pháp lệnh: Alter View [(column [,…n])] [WITH [,…n]] AS Select_statement [WITH CHECK OPTION] Để xóa View ta dùng lệnh: Drop View view_name 3.2.5 Quản lý Store Procedure SQL Server 2005 Store Procedure tập lệnh Transact SQL đặt tên lưu trữ database server Store Procedure nhận tham số vào tham số trả giá trị Trả trạng thái thực thi procedure thành công hay không thành công Các loại store procedure: - System (sp_): có master database, truy xuất từ database nào, nhằm cung cấp thông tin system catalog thực nhiệm vụ adminstration - Local: tạo từ user - Temporary: có tên bắt đầu # (local) ## (global) Không tồn sau SQL Server shutdown - Remote: giới hạn việc thực store procedure remote SQL Server Nguyễn Minh Châu _ Lê Quân – Lớp C06TH21 - Khoa Công nghệ thông tin – Đại học KTCN ĐỒ ÁN CƠ SỞ 186 http://www.ebook.edu.vn - Extended (xp_): có master database, thể ngôn ngữ khác gọi DLL Sau viết xong extended store procedure, sysadmin đăng ký extended store procedure với SQL Server sau gán quyền cho user khác để thực Lợi ích Store Procedure: - Cho phép lập trình theo hướng modular (modular programming) - Thực thi nhanh hơn, giảm việc chiếm dụng đường truyền mạng - Bảo mật - Xử lý chức chia xẻ với ứng dụng khác Cú pháp tạo Store Procedure create procedure procedure_name [{@parameter Data_type} [ VARYING ] [ = default ] [ OUTPUT ] ] [,…n] [ WITH {RECOMPILE | ENCRYPTION | RECOMPILE , ENCRYPTION}] AS SQL STATEMENT Giải thích: - procedure_name: tên store procedure - @paramater: tham số, có tối đa 2.100 parameters procedure - data_type: kiểu liệu tham số, bao gồm tất kiểu liệu SQL Server, nhiên kiểu cursor dùng cho output parameter - default: giá trị mặc định, tham số có giá trị mặc định, thực procedure, user không cần truyền tham số vào thực thi (nó có giá trị (default) - OUTPUT: định output parameter - RECOMPLIE: procedure dịch lại thực thi - ENCRYPTION: mã hóa mã lệnh lệnh CREATE PROCEDURE lưu vào table syscomment Lưu ý: - Để tạo procedure, user phải có quyền CREATE PROCEDURE (sysadmin, database owner) Nguyễn Minh Châu _ Lê Quân – Lớp C06TH21 - Khoa Công nghệ thông tin – Đại học KTCN ĐỒ ÁN CƠ SỞ 187 http://www.ebook.edu.vn - Có thể tham chiếu đến table, view, procedure khác temporary table - Kích thước tối đa procedure 128 MB - Có thể lồng 32 cấp procedure - Dùng procedure sp_helptext để hiển thị nội dung text store procedure mà user dã tạo - Không thể kết hợp lệnh CREATE PROCEDURE với lệnh SQL khác để tạo thành bó lệnh Ví dụ: Tạo Procedure với tên sp_ThongTinDocGia CSDL QuanLyThuVien Nội dung: liệt kê thông tin độc giả tương ứng với mã độc giả Nếu độc giả người lớn hiển thị thông tin độc giả thông tin bảng người lớn Nếu độc giả trẻ em hiển thị thông tin độc giả thông tin bảng trẻ em Câu lệnh tạo sau: ALTER procedure sp_ThongTinDocGia @ima_docgia int as declare @flag smallint set @flag = null select top @flag = from Nguoilon where ma_docgia = @ima_docgia if (@flag is not null) select D.ma_docgia, D.ho, D.ten_lot, D.ten, D.ngay_sinh, N.sonha, N.duong, N.quan, N.dienthoai,N.han_sd from Docgia D inner join Nguoilon N on D.ma_docgia=N.ma_docgia where D.ma_docgia=@ima_docgia else begin select top @flag = from Treem where ma_docgia = @ima_docgia if (@flag is not null) select D.ma_docgia,D.ho,D.ten_lot,D.ten,D.ngay_sinh,T.ma_docgia from Docgia D inner join Treem T on D.ma_docgia=T.ma_docgia where D.ma_docgia=@ima_docgia end Nguyễn Minh Châu _ Lê Quân – Lớp C06TH21 - Khoa Công nghệ thông tin – Đại học KTCN ĐỒ ÁN CƠ SỞ 188 http://www.ebook.edu.vn Nếu thành công phía cửa sổ Query, xuất thông báo: Command (s) completed successfully Để kiểm tra, vào CSDL QuanLyThuVien, chọn Programmability, vào Stored Procedures, thấy procedure sp_ThongTinDocGia Để thực thi procedure, dùng lệnh EXECUTE procedure_name Ví dụ: Exec sp_ThongTinDocGia ‘01’ Go 3.2.6 Quản lý Trigger SQL Server 2005 Trigger store procedure đặc biệt gọi tự động user cập nhật liệu table, nghĩa thay thực thi user, trigger thực thi server CSDL hoạt động xác định thực bảng Trigger định nghĩa table cụ thể Khác với procedure, trigger không gọi trực tiếp, không nhận tham số Trigger phần Transaction: lệnh trigger xem single transaction, rollback từ chỗ trigger Mục đích sử dụng trigger: Nguyễn Minh Châu _ Lê Quân – Lớp C06TH21 - Khoa Công nghệ thông tin – Đại học KTCN ĐỒ ÁN CƠ SỞ 189 http://www.ebook.edu.vn - Để thực cascade updates cascade deletes qua table quan hệ database - Ép buộc tính toàn vẹn liệu phức tạp: thực ràng buộc có tham chiếu đến column nhiều table - Định nghĩa Custom Error Message: Dùng trigger để trả chuỗi thông báo trạng thái hành động - Bảo trì liệu không chuẩn hóa Trigger hoạt động nào? - Trigger thực tự động sau lệnh INSERT, UPDATE DELETE thực table mà trigger định nghĩa Còn CONSTRAINT INSTEAD OF trigger kiểm tra trước lệnh INSERT, UPDATE DELETE thực CONSTRAINT kiểm tra trước trigger - Một table có nhiều trigger cho hành động, trigger định nghĩa cho nhiều hành động - Khi có nhiều trigger table table owner dùng procedure hệ thống sp_settriggeroder để định trigger đầu trigger cuối để thực thi Thứ tự trigger lại xếp User phải có quyền để thực tất lệnh mà định nghĩa trigger - Table owners tạo trigger View Temporary tables tham chiếu đến View temporary - Trigger không trả kết - Trigger điều khiển multi-row actions: hành động INSERT, UPDATE DELETE gọi trigger ảnh hưởng lên nhiều dòng liệu Ta chọn xử lý theo cách: + Xử lý tất dòng với trường hợp dòng ảnh hưởng phải thỏa điều kiện trigger + Xử lý dòng thỏa điều kiện Hoạt động trigger với vai trò logic tables: Nguyễn Minh Châu _ Lê Quân – Lớp C06TH21 - Khoa Công nghệ thông tin – Đại học KTCN ĐỒ ÁN CƠ SỞ 190 http://www.ebook.edu.vn - Khi có hành động insert, table inserted sinh ra, có cấu trúc giống với cấu trúc table insert, có liệu record insert - Khi có hành động delete, table delete sinh ra, có cấu trúc giống với cấu trúc table bị deleted, có liệu record bị xóa - Khi có hành động update, có table inserted deleted sinh Cú pháp tạo Trigger: Giải thích: - Table/View: tên table, view thực có hành động tương ứng - With Encryption: mã hóa nội dung text lệnh create trigger table syscomments - After: Trigger gọi tất hành động thực xong Các kiểm tra constraint cascade kiểm tra hoàn thành trước trigger thực Default After có từ khóa For định After trigger định nghĩa View - Instead of: định trigger thực thay cho hành động trigger Instead of trigger không cho phép cập nhật liệu View có With Check Option Nguyễn Minh Châu _ Lê Quân – Lớp C06TH21 - Khoa Công nghệ thông tin – Đại học KTCN ĐỒ ÁN CƠ SỞ 191 http://www.ebook.edu.vn - Delete, insert, update: định hành động gắn với trigger Đối với instead of trigger, Delete không cho phép table mà có relationship mà định Cascade On Delete Tương tự, hành động Update không cho phép trên table mà có relationship Cascade On Update - Table deleted inserted logical tables Chúng có cấu trúc giống với table mà trigger định nghĩa, chứa dòng giá trị cũ mà thay đổi hành động user Chúng ta truy xuất liệu table định nghĩa trigger - Các giá trị text, ntext image table inserted deleted không truy xuất Khi trigger mức 65, giá trị null trả cột có kiểu text, ntext image table inserted deleted cột cho phép null; chuỗi zero-length trả cột null - With Apend: chèn thêm trigger vào trigger có trước - If update (column): kiểm tra hành động Update cột định, không dùng cho hành động delete Lưu ý: Các lệnh sau không dùng định nghĩa trigger: - Create, Alter, Drop, Load, Restore Database - Load, Restore Log - Disk Init - Disk Resize - Reconfigure Ví dụ: Trong CSDL QuanLyThuVien, tạo trigger có tên tg_updCuonSach vói nội dung: thuộc tính tình trạng bảng Cuonsach cập nhật trạng thái bảng Dausach cập nhật Create trigger [tg_updCuonsach] on [dbo].[Cuonsach] for update as declare @isbn varchar(50) declare my_cursor cursor for select isbn from inserted open my_cursor Nguyễn Minh Châu _ Lê Quân – Lớp C06TH21 - Khoa Công nghệ thông tin – Đại học KTCN ĐỒ ÁN CƠ SỞ 192 http://www.ebook.edu.vn fetch next from my_cursor into @isbn while (@@fetch_status = 0) begin exec sp_CapnhatTrangthaiDausach @isbn fetch next from my_cursor into @isbn end close my_cursor deallocate my_cursor Sửa đổi cấu trúc, xóa Trigger: Cú pháp để sửa đổi cấu trúc Trigger sau: Để xóa Trigger ta dùng cú pháp lệnh: DROP TRIGGER trigger_name Nguyễn Minh Châu _ Lê Quân – Lớp C06TH21 - Khoa Công nghệ thông tin – Đại học KTCN [...]... i; } C u lệnh lặp foreach sẽ đư c trình bày ở c c chương sau 3.5.3.5 C u lệnh break, continue, và return C ba c u lệnh break, continue, và return rất quen thu c trong C+ + và Java, trong C# , ý nghĩa và c ch sử dụng chúng hoàn toàn giống với hai ngôn ngữ này 3.6 Toán tử C c phép toán +, -, *, / là một ví dụ về toán tử Áp dụng c c toán tử này lên c c biến kiểu số ta c kết quả như vi c th c hiện c c phép... kiện và c c toán tử logic, quan hệ, toán h c, … 3.1 C c kiểu C# bu c phải khai báo kiểu c a đối tượng đư c tạo Khi kiểu đư c khai báo rõ ràng, trình biên dịch sẽ giúp ngăn ngừa lỗi bằng c ch kiểm tra dữ liệu đư c gán cho đối tượng c hợp lệ không, đồng thời c p phát đúng kích thư c bộ nhớ cho đối tượng C# phân thành hai loại: loai dữ liệu dựng sẵn và loại do người dùng định nghĩa C# c ng chia tập dữ liệu. .. tên tương ứng: Presentation, Bussiness và Data C c vùng tên này chứa c c lớp thu c về tầng c a mình Một vùng tên chứa c c lớp và c c vùng tên con kh c Vậy trong ví dụ trên ta sẽ tạo một vùng tên chung cho ứng dụng là MyApplication và ba vùng tên kia sẽ là ba vùng tên con c a vùng tên MyApplication C ch này giải quyết đư c trường hợp nếu ta c nhiều dự án mà chỉ c 3 vùng tên và dẫn đến vi c không biết... giá trị và tham chiếu Biến kiểu giá trị đư c lưu trong vùng nhớ stack, c n biến kiểu tham chiếu đư c lưu trong vùng nhớ heap C# c ng hỗ trợ kiểu con trỏ c a C+ +, nhưng ít khi đư c sử dụng Thông thường con trỏ chỉ đư c sử dụng khi làm vi c tr c tiếp với Win API hay c c đối tượng COM 3.1.1 Loại dữ liệu định sẳn C# c nhiểu kiểu dữ liệu định sẳn, mỗi kiểu ánh xạ đến một kiểu đư c hỗ trợ bởi CLS (Commom... nội trong chương trình (assembly) và trong c c lớp con protected internal private (m c định) Chỉ đư c truy xuất trong nội bộ lớp 4.1.2 C c tham số c a phương th c Mỗi phương th c có thể không c tham số mà c ng c thể c nhiều tham số C c tham số theo sau tên phương th c và đặt trong c p ngo c đơn Ví dụ như phương th c SomeMethod sau: Ví dụ 4-3 C c tham số và c ch dùng chúng trong phương th c using System;... Phương th c set Phương th c set thiết lập giá trị một property c a đối tượng và c trị trả về là void Phương th c set c thể ghi vào c sở dữ liệu hay c p nhật biến thành viên khi c n Ví dụ: set { hour =value; } 4.7.3 C c trường chỉ đ c C# cung c p từ khoá readonly để khai báo c c biến thành viên C c biến khai báo kiểu này chỉ cho phép gán giá trị cho biến một lần vào l c khởi tạo qua constructor Nguyễn... Đại h c KTCN ĐỒ ÁN C SỞ 23 http://www.ebook.edu.vn Chương 4 Lớp và đối tượng Đối tượng là một trị c thể đư c tạo ra, lưu giữ và sử dụng Trong C# tất c c c biến đều là đối tượng C c biến kiểu số, kiểu chuỗi… đều là đối tượng Mỗi một đối tượng đều c c c biến thành viên để lưu giữ dữ liệu và c c c phương th c (hàm) để t c động lên biến thành viên Mỗi đối tượng thu c về một lớp đối tương nào đó C c đối... đối tượng c c ng lớp thì c c ng c c biến thành viên và phương th c 4.1 Định nghĩa lớp Định nghĩa một lớp mới với c pháp như sau: [attribute][bổ từ truy xuất] class định danh [:lớp c sở] { thân lớp } Ví dụ 4-1 Khai báo một lớp public class Tester { public static int Main( ) { } } Khi khai báo một lớp ta định nghĩa c c đ c tính chung c a tất c c c đối tượng c a lớp và c c hành vi c a chúng Ví dụ... lớp c sở như sau: public class ListBox: Window c nghĩa là ta khai báo một lớp mới ListBox kế thừa từ lớp Window Lớp kế thừa sẽ thừa hưởng đư c tất c c phương th c và biến thành viên c a lớp c sở, thậm chí c n thừa hưởng c c c thành viên mà c sở đã thừa hưởng Ví dụ 5-1 Minh hoạ c ch dùng lớp kế thừa public class Window { // constructor takes two integers to // fix location on the console public Window(int... tập tin kh c nhau 3.8 Chỉ thị tiền xử lý Không phải mọi c u lệnh đều đư c biên dịch c ng l c mà c một số trong chúng đư c biên dịch trư c một số kh c C c câu lệnh như thế này gọi là c c chỉ thị tiền xử lý C c chỉ thị tiền xử lý đư c đặt sau dấu # 3.8.1 Định nghĩa c c định danh #define DEBUG định nghĩa một định danh tiền xử lý (preprocessor identifier) DEBUG M c dù c c chỉ thị tiền xử lý c thể định ... mật, c p phát nhớ, th c thi thu dọn chúng Trong Hình 1-1 tầng CLR bao gồm: • C c lớp sở • C c lớp liệu XML • C c lớp cho dịch vụ web, web form, Windows form C c lớp gọi chung FCL, Framework Class... ngữ c nh c thể tảng NET Microsoft ứng dụng máy tính để bàn ứng dụng Internet Chương trình bày chung hai phần ngôn ngữ C# tảng NET, bao gồm ứng dụng NET ( .NET Framework) 1.1 Nền tảng NET Khi Microsoft... - FCL Hình 1-1 Kiến tr c khung ứng dụng Net Thành phần quan trọng NET Framework CLR, cung c p môi trường cho ứng dụng th c thi, CLR máy ảo, tương tự máy ảo Java CLR kích hoạt đối tượng, th c kiểm