Giáo trình lập trình .NET
MỤC LỤC
VISUAL STUDIO VÀ .NET FRAMEWORK .1
I. Mục tiêu . 1
II. .NET Framework . 1
II.1. Khái niệm . 1
II.2. Kiến trúc của .NET Framework. 1
II.3. Các ngôn ngữ thuộc họ .NET . 2
II.4. Các thư viện có sẵn của .Net Framework . 2
III. Visual Studio . 3
III.1. Khái niệm . 3
III.2. Cách tổ chức chương trình của Visual Studio . 3
III.3. Các dạng Project của Visual Studio . 4
IV. Ngôn ngữ lập trình C# . 4
IV.1. Khái niệm . 4
IV.2. Đặc điểm . 4
LẬP TRÌNH C# CĂN BẢN .6
I. Mục tiêu . 6
II. Bắt đầu với Console Application . 6
II.1. Tạo Project . 6
II.2. Lập trình . 8
II.3. Biên dịch . 8
II.3.1. Biên dịch từng phần . 8
II.3.2. Biên dịch toàn phần . 9
II.4. Chạy chương trình . 9
II.4.1. Chế độ debug . 10
II.4.2. Chế độ non-debug . 10
III. Biến và phạm vi hoạt động của biến trong C#. 11
III.1. Biến . 11
III.2. Phạm vi hoạt động của biến . 11
IV. Hằng. 12
V. Kiểu dữ liệu . 12
V.1. Kiểu giá trị (Value Types) . 13
V.1.1. Kiểu dữ liệu số nguyên . 13
V.1.2. Kiểu dữ liệu dấu chấm động . 13
V.1.3. Các kiểu dữ liệu khác . 13
V.2. Kiểu tham chiếu (Reference Type) . 13
VI. Cấu trúc điều kiện . 14
VI.1. Câu lệnh điều kiện if.else . 14
VI.1.1. Cú pháp . 14
VI.1.2. Cách sử dụng . 15
VI.2. Câu lệnh switch.case. 15
VI.2.1. Cú pháp . 15
Mục lục iii
VI.2.2. Cách sử dụng . 15
VII. Cấu trúc lặp . 16
VII.1. Cấu trúc lặp for . 16
VII.1.1. Cú pháp . 16
VII.1.2. Cách sử dụng . 16
VII.2. Cấu trúc lặp while . 17
VII.2.1. Cú pháp . 17
VII.2.2. Cách sử dụng . 17
VII.3. Cấu trúc lặp do.while . 17
VII.3.1. Cú pháp . 17
VII.3.2. Cách sử dụng . 17
VII.4. Các lệnh hỗ trợ cho cấu trúc lặp . 18
VII.4.1. Lệnh break . 18
VII.4.2. Lệnh continue . 18
VIII. Mảng (Array) . 19
VIII.1. Mảng một chiều . 19
VIII.1.1. Cú pháp khai báo . 19
VIII.1.2. Cách sử dụng . 19
VIII.1.3. Cấu trúc lặp foreach . 19
VIII.2. Mảng hai chiều (Ma trận) . 20
VIII.2.1. Cú pháp khai báo . 20
VIII.2.2. Cách sử dụng . 20
IX. Xử lý nhập xuất file . 21
IX.1. Khái niệm file . 21
IX.2. Phân loại . 21
IX.2.1. File văn bản (text file) . 21
IX.2.2. File nhị phân (binary file) . 22
IX.3. Đọc và ghi file văn bản . 22
IX.3.1. Đọc file văn bản bằng StreamReader . 22
IX.3.2. Ghi file văn bản bằng StreamWriter . 24
LẬP TRÌNH HƢỚNG ĐỐI TƢỢNG VỚI C# . 25
I. Mục tiêu . 25
II. Lớp (Class) . 25
III. Đối tượng (Object) . 27
IV. Thuộc tính (Attribute) . 27
V. Phương thức (Method). 27
VI. Nạp chồng toán tử (Overloading) . 28
VII. Kế thừa (Inheritance) . 29
VIII. Đa hình (Polymorphism) . 31
IX. Interface . 33
XỬ LÝ BIỆT LỆ . 34
I. Mục tiêu . 34
II. Biệt lệ (Exception) . 34
II.1. Chương trình và lỗi . 34
Mục lục iv
II.2. Khái niệm biệt lệ . 35
III. Xử lý biệt lệ (Exception Handler) . 35
III.1. Cơ chế try/catch . 35
III.2. Xử lý biệt lệ lồng nhau . 37
III.3. Xử lý biệt lệ song song . 40
THƢ VIỆN LIÊN KẾT ĐỘNG . 42
I. Mục tiêu . 42
II. Thư viện trong lập trình . 42
II.1. Khái niệm . 42
II.2. Phân loại thư viện . 43
II.2.1. Thư viện tĩnh . 43
II.2.2. Thư viện liên kết động . 43
III. Namespace . 44
IV. Thư viện liên kết động . 44
IV.1. Cách xây dựng thư viện với Visual Studio 2005 . 44
IV.1.1. Tạo một project cho thư viện . 44
IV.1.2. Cấu hình cho project . 45
IV.1.3. Xây dựng lớp và phương thức cần thiết . 46
IV.2. Cách sử dụng thư viện . 47
IV.2.1. Tạo thêm tham chiếu (add reference). . 47
IV.2.2. Khai báo tham chiếu . 48
IV.2.3. Sử dụng thư viện . 49
V. Các namespace có sẵn của .Net Framework 2.0 . 49
V.1. Namespace System.Windows.Forms. 49
V.2. Namespace System.Data . 50
LẬP TRÌNH ỨNG DỤNG WINDOWS . 51
I. Mục tiêu . 51
II. Các bảng điều khiển . 51
II.1. Toolbox panel . 52
II.2. Solution Explorer panel . 53
II.3. Properties panel . 54
III. Form và Label . 54
III.1. Form . 54
III.1.1. Khái niệm Form . 54
III.1.2. Các thuộc tính của Form . 54
III.1.3. Các sự kiện của Form . 55
III.2. Label . 56
III.2.1. Khái niệm Label . 56
III.2.2. Các thuộc tính của Label . 56
III.3. Ứng dụng Form và Label . 56
III.3.1. Tạo mới project . 56
III.3.2. Đổi tên Form chính . 57
III.3.3. Đặt tiêu đề cho Form . 58
III.3.4. Cài đặt sự kiện FormClosed . 59
III.3.5. Thêm Label vào Form . 60
Mục lục v
III.3.6. Biên dịch và chạy ứng dụng . 62
IV. TextBox và Button . 62
IV.1. TextBox . 62
IV.1.1. Khái niệm TextBox . 62
IV.1.2. Các thuộc tính của TextBox . 62
IV.1.3. Các sự kiện của TextBox . 63
IV.2. Button . 63
IV.2.1. Khái niệm Button . 63
IV.2.2. Các thuộc tính của Button . 63
IV.2.3. Các sự kiện của Button . 64
IV.3. Ứng dụng TextBox và Button . 64
IV.3.1. Tạo project, tạo Form và các Label . 64
IV.3.2. Tạo các TextBox . 64
IV.3.3. Thêm các Button . 65
IV.3.4. Cài đặt sự kiện cho từng Button . 66
IV.3.5. Biên dịch và chạy chương trình . 67
V. ComboBox, CheckBox, RadioButton . 67
V.1. ComboBox . 67
V.1.1. Khái niệm ComboBox . 67
V.1.2. Các thuộc tính của ComboBox . 67
V.1.3. Các phương thức của ComboBox . 68
V.1.4. Các sự kiện của ComboBox . 68
V.2. CheckBox . 68
V.2.1. Khái niệm CheckBox . 68
V.2.2. Các thuộc tính của CheckBox . 69
V.2.3. Các sự kiện của CheckBox . 69
V.3. RadioButton . 69
V.3.1. Khái niệm RadioButton . 69
V.3.2. Các thuộc tính của RadioButton . 69
V.3.3. Các sự kiện của RadioButton . 69
V.4. Ứng dụng ComboBox, CheckBox, RadioButton . 69
V.4.1. Tạo project, tạo Form, tạo các Label và TextBox . 70
V.4.2. Tạo các RadioButton . 70
V.4.3. Tạo ComboBox . 71
V.4.4. Tạo các CheckBox . 72
V.4.5. Tạo Button . 73
V.4.6. Biên dịch và chạy chương trình . 73
VI. MDI Form và MenuStrip . 74
VI.1. MDI Form . 74
VI.1.1. Khái niệm MDI Form . 74
VI.1.2. Các thuộc tính của MDI Form . 75
VI.2. MenuStrip . 75
VI.2.1. Khái niệm MenuStrip . 75
VI.2.2. Các thuộc tính của MenuStrip . 75
VI.3. ToolStripMenuItem . 75
VI.3.1. Khái niệm ToolStripMenuItem . 75
VI.3.2. Các thuộc tính của ToolStripMenuItem . 75
Mục lục vi
VI.3.3. Các sự kiện của ToolStripMenuItem . 76
VI.4. Ứng dụng MDI Form, MenuStrip . 76
VI.4.1. Tạo project và cấu hình MDI Form. 76
VI.4.2. Tạo Form LogIn và Form Register . 76
VI.4.3. Tạo MenuStrip . 77
VI.4.4. Viết sự kiện cho từng ToolStripMenuItem . 77
TƢƠNG TÁC CƠ SỞ DỮ LIỆU . 78
I. Mục tiêu . 78
II. ADO.NET . 78
II.1. Khái niệm . 78
II.2. Kiến trúc . 78
II.3. Các namespace phục vụ cho ADO.NET. 80
III. SqlConnection, SqlCommand . 80
III.1. SqlConnection . 80
III.1.1. Khái niêm SqlConnection . 80
III.1.2. Các thuộc tính của SqlConnection . 80
III.1.3. Các phương thức của SqlConnection . 81
III.2. SqlCommand . 81
III.2.1. Khái niệm SqlCommand . 81
III.2.2. Các thuộc tính của SqlCommand . 81
III.2.3. Các phương thức của SqlCommand . 82
III.3. Ứng dụng SqlConnection, SqlCommand, ExcuteNonQuery . 82
III.3.1. Tạo cơ sở dữ liệu . 82
III.3.2. Tạo bảng tblUser . 83
III.3.3. Tạo stored procedure . 84
III.3.4. Lập trình tương tác cơ sở dữ liệu . 85
III.3.5. Biên dịch và chạy ứng dụng . 86
IV. SqlDataReader và phương thức ExcuteReader. 87
IV.1. SqlDataReader . 87
IV.1.1. Khái niệm SqlDataReader . 87
IV.1.2. Các thuộc tính của SqlDataReader . 87
IV.1.3. Các phương thức của SqlDataReader . 87
IV.2. Phương thức ExcuteReader . 88
IV.3. Ứng dụng SqlDataReader và phương thức ExcuteReader . 88
V. SqlDataAdapter, DataSet và DataGridView. 89
V.1. SqlDataAdapter . 89
V.2. DataSet . 89
V.3. DataGridView . 90
V.3.1. Khái niệm DataGridView . 90
V.3.2. Các thuộc tính của DataGridView . 90
V.3.3. Các sự kiện của DataGridView . 90
V.4. Ứng dụng SqlDataAdapter, DataSet, DataGridView . 90
V.4.1. Tạo project . 90
V.4.2. Thêm đối tượng DataGridView . 90
V.4.3. Cài đặt sự kiện Load của Form . 91
V.4.4. Biên dịch và chạy chương trình . 92
Mục lục vii
KẾT LUẬN . 93
PHỤ LỤC . ERROR! BOOKMARK NOT DEFINED.
hiều. Điều này nghĩa là người lập trình chỉ được đọc từ SqlDataReader một cách tuần tự, muốn đọc được dòng thứ i thì phải đọc i-1 dòng trước đó (giống như việc đọc file trên đĩa). SqlDataReader không cung cấp cơ chế sắp xếp cũng như cơ chế truy xuất ngẫu nhiên, do đó người lập trình thường sử dụng vòng lặp khi thực hiện đọc dữ liệu từ SqlDataReader để hiển thị lên giao diện. IV.1.2. Các thuộc tính của SqlDataReader FieldCount: thuộc tính này trả về số trường trong record hiện hành. IsClosed: thuộc tính này trả về trạng thái của SqlDataReader là đóng hay mở. HasRows: thuộc tính này chỉ định SqlDataReader có record dữ liệu nào hay không. IV.1.3. Các phương thức của SqlDataReader Close: phương thức này thực hiện việc đóng SqlDataReader và giải phóng tài nguyên. GetBoolean, GetByte, GetChar, GetDateTime, GetDecimal: lấy các giá trị tại cột đang xét tùy vào kiểu dữ liệu. GetValue, GetValues: lấy về giá trị hoặc tập giá trị ở dạng “nguyên thủy” ( kiểu dữ liệu gốc của Database). Read: Đọc record tiếp theo của DataReader. Lập trình .Net 88 IV.2. Phƣơng thức ExcuteReader ExcuteReader là phương thức của đối tượng SqlCommand, phương thức này thực hiện việc truy vấn cơ sở dữ liệu trong trường hợp nội dung câu truy vấn (CommandText) là câu lệnh select. Kết quả trả về của phương thức ExcuteReader là SqlDataReader, đối tượng này tổ chức dữ liệu thành bảng giống như kết quả trả về của câu lệnh truy vấn trong hệ quản trị cơ sở dữ liệu. IV.3. Ứng dụng SqlDataReader và phƣơng thức ExcuteReader Ví dụ sau trình bày việc ứng dụng DataReader và phương thức ExcuteReader để xử lý sự kiện LogIn trong ứng dụng đã trình bày ở mục IV.3 của chương 6. Trong sự kiện LogIn này, chương trình sẽ xử lý việc truy vấn cơ sở dữ liệu để kiểm tra xem tài khoản có AccountName và Password mà người sử dụng nhập vào từ các TextBox đã có sẵn trong cơ sở dữ liệu hay không. Đoạn mã của sự kiện LogIn như sau. Hình 95 – Ứng dụng DataReader và ExcuteQuery Trong đoạn mã trên thực hiện việc kiểm tra đăng nhập bằng cách thực hiện lệnh truy vấn select. Lệnh này thực hiện việc tìm trong bảng tblUser các record có AccoutName và AccountPassword trùng với dữ liệu nhập vào từ các TextBox. Kết quả thu được từ câu lệnh truy vấn này được lưu trữ trong đối tượng SqlDataReader. Nếu đối tượng này có record Lập trình .Net 89 (HasRows = true) thì tài khoản người dùng nhập vào là hợp lệ và chương trình sẽ thông báo đăng nhập thành công, ngược lại thì chương trình sẽ báo lỗi. V. SqlDataAdapter, DataSet và DataGridView V.1. SqlDataAdapter SqlDataAdapter là một khái niệm .Net Framework, khái niệm này được dùng để chỉ đối tượng làm cầu nối giữa cơ sở dữ liệu và DataSet. SqlDataAdapter chứa một phần dữ liệu của cơ sở dữ liệu và hoạt động theo cơ chế “kết nối”. Với cơ chế “kết nối”, SqlDataAdapter được trang bị một số phương thức để lấy giữ liệu từ cơ sở dữ liệu hoặc điền ngược dữ liệu vào cơ sở dữ liệu khi cần thiết. Các thuộc tính thông dụng của SqlDataAdapter bao gồm: SelectCommand: Thuộc tính này quy định câu lệnh select của SqlDataAdapter. Câu lệnh select của thuộc tính này thường được triệu gọi khi SqlDataAdapter thực hiện phương thức Fill(). InsertCommand, UpdateCommand, DeleteCommand: Các thuộc tính này lần lượt quy định câu lệnh insert, update, delete của SqlDataAdapter. Các câu lệnh này được triệu gọi khi SqlDataAdapter thực hiện phương thức Update() để cập nhật dữ liệu từ SqlDataAdapter vào cơ sở dữ liệu. Các phương thức thông dụng của SqlDataAdapter bao gồm: Fill: Đối số của phương thức này là DataSet hoặt DataTable. Phương thức này thực hiện việc điền dữ liệu tương ứng với câu lệnh select từ cơ sở dữ liệu vào một DataSet hoặc DataTable. Update: Thực hiện việc cập nhật dữ liệu từ SqlDataAdaper vào cơ sở dữ liệu. V.2. DataSet DataSet là khái một niệm của .Net Framework, khái niệm này được dùng để chỉ đối tượng ở tầng “không kết nối” trong mô hình ADO.NET. DataSet được thiết kế tách biệt với cơ sở dữ liệu và khi vận hành không cần biết đến việc cơ sở dữ liệu thuộc kiểu gì, kết nối ra sao. Nhiệm vụ của DataSet là nhận dữ liệu về từ DataAdapter và xử lý nó. DataSet có thể được xem như một cơ sở dữ liệu trong bộ nhớ gồm tất cả các bảng, dữ liệu, quan hệ và ràng buộc dữ liệu. DataSet có nhiều đối tượng cấp thấp hơn đi kèm với nó như : DataTable (tương đương với một bảng), cấp thấp hơn của DataTable có các đối tượng DataRow (tương đương với một dòng), DataColumn (tương đương với một cột), DataRelation (tương đương với các quan hệ). DataSet nhận dữ liệu từ DataAdapter thông qua phương thức Fill() và dữ liệu này được hiển thị lên giao diện thông qua thuộc tính DataSource của đố tượng trình bày. Việc sử dụng DataSet là một tiến bộ lớn của kiến trúc ADO.NET tuy nhiên với các ứng dụng Website, việc Lập trình .Net 90 sử dụng DataSet không được khuyến khích vì đối tượng DataSet được xem là quá lớn, nặng nề khó thích hợp cho đường truyền vốn rất hạn chế. V.3. DataGridView V.3.1. Khái niệm DataGridView DataGridView là khái niệm dùng để chỉ đối tượng trình bày giao diện trên Form, đối tượng này bố trí dữ liệu thành nhiều cột và nhiều hàng. Đối tượng này còn được gọi là lưới dữ liệu. V.3.2. Các thuộc tính của DataGridView DataSource: Thuộc tính này quy định bảng dữ liệu được hiển thị lên giao diện. Đối tượng được gán vào thuộc tính này thông thường là DataTable. CurrentRow: Thuộc tính này trả về dòng đang được chọn, thông tin trong dòng này được chứa đựng trong đối tượng DataGridViewRow. CurrentCell: Thuộc tính này trả về ô đang được chọn, thông tin trong ô này được chứa đựng trong đối tượng DataGridViewCell. V.3.3. Các sự kiện của DataGridView SelectionChanged: Sự kiện này xảy ra khi người sử dụng di chuyển con trỏ soạn thảo trên các dòng của DataGridView. DoubleClick: Sự kiện này xảy ra khi người sử dụng kích đúp chuột vào DataGridView. V.4. Ứng dụng SqlDataAdapter, DataSet, DataGridView Ví dụ sau trình bày việc ứng dụng SqlDataAdapter, DataSet và DataGridView trong việc hiển thị dữ liệu từ cơ sở dữ liệu lên giao diện. Ứng dụng được thực hiện từng bước như sau: V.4.1. Tạo project Thực hiện tạo project Windows Application như đã trình bày ở mục IV.3 chương 6. Sau khi project được tạo thì một Form chính có tên là Form1 được tạo ra. V.4.2. Thêm đối tượng DataGridView Thực hiện việc kéo thả đối tượng DataGridView từ Toolbox panel vào Form chính. Sau đó đặt tên cho DataGridView. Trong trường hợp này, DataGridView được đặt tên là myGrid1. Lập trình .Net 91 Hình 96 – Cấu hình DataGridView V.4.3. Cài đặt sự kiện Load của Form Như đã trình bày ở chương trước, sự kiện Load của Form xảy ra khi Form được khởi tạo. Trong ứng dụng này, sự kiện Load thực hiện việc kết nối cơ sở dữ liệu và lấy thông tin, sau đó điền vào DataGridView để hiển thị trên Form. Đoạn mã của sự kiện này được cài đặt như sau: Hình 97 – Sử dụng DataAdapter, DataSet và DataGridView Lập trình .Net 92 Trong đoạn mã mình họa trên, đối tượng SqlDataAdapter được khởi tạo bằng cách cung cấp hai tham số: câu lệnh truy vấn và đối tượng SqlConnection. Sau khi khởi tạo, đối tượng SqlDataAdapter thực hiện phương thức Fill() để điền dữ liệu từ cơ sở dữ liệu vào một bảng có tên là “tblUser” trong DataSet. Bảng này được hiển thị lên giao diện bằng cách gán nó cho thuộc tính DataSource của đối tượng DataGridView. V.4.4. Biên dịch và chạy chương trình Thực hiện biên dịch và chạy chương trình được kết quả như sau: Hình 98 – Kết quả chạy chƣơng trình Kết quả chạy chương trình này hoàn toàn giống với kết quả khi thực hiện hiển thị dữ liệu của Sql Server bằng Enterprise Manager ở hình 94. Lê Văn Minh – Trường Cao đẳng Công nghệ Thông tin, Đại học Đà Nẵng 93 KẾT LUẬN Giáo trình này trình bày phương pháp lập trình .NET với ngôn ngữ C# của phiên bản Visual Studio 2005. Tuy giáo trình chỉ trình bày những nội dung cơ bản nhất của công nghệ .NET, nhưng với những kiến thức này, người lập trình có thể tự nghiên cứu các chuyên đề cao hơn. Từ những nội dung trong giáo trình và những kiến thức từ các học phần tiên quyết của học phần này, người học có đủ kiến thức để xây dựng một ứng dụng Windows. Tuy nhiên, giáo trình được viết cho sinh viên cao đẳng nên về nội dung còn có nhiều hạn chế, cách tiếp cận vấn đề chưa thật sự chính xác và cách giải quyết vấn đề chưa hoàn toàn tối ưu và tổng quát. Giáo trình chỉ đi sâu vào kỹ năng thực hành, các ví dụ minh họa được trình bày theo phương pháp “hướng dẫn từng bước” (step – by – step) nên giáo trình chưa thể hướng người học đến tư duy trừu tượng của lập trình bậc cao. Do thời lượng giảng dạy không nhiều nên giáo trình cũng chưa thể trình bày một ứng dụng hoàn chỉnh của một dự án phần mềm thực tế. Cuối cùng, tác giả mong người học có những góp để kịp thời cải tiến và hoàn thiện. 1 TÀI LIỆU THAM KHẢO [1] Phương Lan. Lập trình Windows với C#.Net. Nhà xuất bản lao động – xã hội [2] Phạm Hữu Khang, Đoàn Thiện Ngân. C# 2005. Tập 1, 2, 3, 4, 5. Nhà xuất bản Lao động và Xã hội. [3] Jesse Liberty. Programming C# for Visual Studio .NET. O’Reilly. [4] Jason Price. Mastering C Sharp Database Programming. Sybex. [5] Jesse Liberty. Programming C#. O’Reilly. [6] Rebecca M. Riordan. Microsoft ADO.NET Step by Step. MS Press. Lập trình .Net 2 Tãn taïc giaí åí âáy, LÅÏP XXX 3 TÓM TẮT LUẬN VĂN TỐT NGHIỆP Phần này viết tên đề tài (chữ nhỏ 13pt) và : tóm tắt nội dung LUẬN VĂN TỐT NGHIỆP, viết ngắn gọn và rõ ràng (15 đến 20 dòng) cho biết : Đề tài đã được đặt ra như thế nào (bối cảnh), mục đích (giải thích rõ hơn tên đề tài) và nhiệm vụ phải thực hiện (các mục tiêu cụ thể và kết quả cần có) SV đã giải quyết vấn đề gì (đã nghiên cứu lý thuyết, thực tiễn như thế nào, đã đề xuất được những giải pháp (biện pháp) hay sáng kiến gì ?). SV đã giải quyết đến đâu (nêu một số kết quả tiêu biểu).
File đính kèm:
- Giáo trình lập trình .NET.pdf