Bài giảng Lập trình ứng dụng sử dụng C#.NET - Phạm Văn Thuận

Mục tiêu môn học

§ Sau khi kết thúc môn học này, sinh viên có thể

• Trình bày được đặc trưng cơ bản của công nghệ

.NET

• Trình bày được kỹ thuật lập trình hướng đối

tượng sử dụng ngôn ngữ C#.NET

• Lập trình được một ứng dụng Windows Form sử

dụng ngôn ngữ C#.NET, kết nối với cơ sở dữ liệu

SQL Server, lập báo cáo sử dụng công cụ Crystal

Report.

pdf214 trang | Chia sẻ: phuongt97 | Lượt xem: 551 | Lượt tải: 0download
Bạn đang xem trước 20 trang nội dung tài liệu Bài giảng Lập trình ứng dụng sử dụng C#.NET - Phạm Văn Thuận, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
lặp) Tên mảng/ Tập hợp 151 Lập trình C#.NET Ví dụ Khi các phần tử mảng là kiểu giá trị foreach ( int i in intArray ) { Console.WriteLine( i.ToString( ) ); } Khi các phần tử mảng là kiểu tham chiếu foreach ( Employee e in empArray ) { Console.WriteLine( e.ToString( ) ); } 152 Lập trình C#.NET Từ khóa params § Từ khóa params cho phép truyền một loạt các tham số cho phương thức mà không phải định nghĩa mảng một cách tường minh. public void DisplayVals(params int[] intVals) 153 Lập trình C#.NET Ứng dụng từ khóa params public class Tester { static void Main() { Tester t = new Tester(); t.DisplayVals(5, 6, 7, 8); int[] explicitArray = new int[5] { 1, 2, 3, 4, 5 }; t.DisplayVals(explicitArray); } public void DisplayVals(params int[] intVals) { foreach (int i in intVals) { Console.WriteLine("DisplayVals {0}", i); } } } 154 Lập trình C#.NET Bài thực hành số 5 Bài 1: Viết một phương thức FindMinMax in ra giá trị số nguyên lớn nhất và nhỏ nhất trong số các tham số đầu vào là một dãy các số nguyên bất kỳ VD: Gọi hàm FindMinMax(3,1,5,8,0,9,-2) Kết quả in ra màn hình - Số nguyên nhỏ nhât là: -2 - Số nguyên lớn nhất là: 9 155 Lập trình C#.NET 4.8. Strings public sealed class String : IComparable, ICloneable, IConvertible, IEnumerable § String là lớp đóng -> Không thể tạo lớp kế thừa lớp String § String implement 4 interfaces IComparable, ICloneable, IConvertible và IEnumerable cho phép có thể so sánh, sao chép, chuyển đổi và sử dụng kiểu liệt kê § Mỗi đối tượng của lớp String là một chuỗi cố định các ký tự Unicode -> các phương thức làm thay đổi đối tượng của lớp thực chất là tạo ra một bản sao đã được sửa đổi, chuỗi nguyên gốc vẫn được giữ trong bộ nhớ cho đến khi bộ thu gom rác xử lý. 156 Lập trình C#.NET Tạo chuỗi §Cách thông thường string literalString = "This is a string literal \n"; §Tạo chuỗi đúng với nguyên mẫu (verbatim string) sử dụng từ khóa @ string verbatimString=@"\n Pham Van Thuan \t Tel: 0985905253\\"; public class Test { public static void Main() { String literalString = "Pham Van Thuan \n"; Console.WriteLine(literalString); String verbatimString = @"\n Pham Van Thuan \t Tel: 0985905253\\"; Console.WriteLine(verbatimString); Console.Read(); } } 157 Lập trình C#.NET Thao tác chuỗi § Lớp string hỗ trợ các phương thức cho phép so sánh, tìm kiếm và xử lý chuỗi Định dạng một chuỗiFormat() Kiểm tra hai chuỗi có giống nhau khôngEquals() Tạo bản sao của một chuỗiCopy() Phương thức nối chuỗiConcat() Phương thức so sánh hai chuỗiCompare() Thuộc tính cho biết chuỗi rỗngEmpty Mô tảThuộc tính, phương thức 158 Lập trình C#.NET Ví dụ static void Main() { string str1 = "Hanoi"; string str2 = "La thu do cua Viet Nam"; string str3 = "HANOI"; //So sanh chuoi, tra ve 0 neu giong nhau int result = string.Compare(str1, str3); Console.WriteLine("Ket qua so sanh hai chuoi {0} va {1} la {2}", str1, str3, result); Console.ReadLine(); //Noi chuoi string str4 = string.Concat(str1, " ", str2); string str5 = str1 + " " + str2; Console.WriteLine("Ket qua noi chuoi {0} va {1}: \n + Su dung phuong thuc Concat: {2} \n + Su dung ham chong toan tu +: {3}", str1, str2, str4, str5); Console.ReadLine(); //Lay ve chieu dai chuoi Console.WriteLine("Chieu dai cua chuoi \"{0}\" la {1}", str2, str2.Length); Console.ReadLine(); } 159 Lập trình C#.NET Xử lý chuỗi động (Dynamic string) § Lớp System.Text.Stringbuilder được sử dụng để tạo và chỉnh sửa chuỗi • Không giống như string, các đối tượng của lớp Stringbuilder có thể thay đổi • Khi chỉnh sửa, sự thay đổi được thực hiện trên chính đối tượng chứ không phải trên bản sao của đối tượng 160 Lập trình C#.NET Ví dụ sử dụng Stringbuilder static void Main() { // create some strings to work with string s1 = "Hi, Good morning"; // array of delimiters to split the sentence with char[] delimiters = new char[]{' ',','}; // use a StringBuilder class to build the output string StringBuilder output = new StringBuilder(); int ctr = 1; // split the string and then iterate over the // resulting array of strings foreach (string subString in s1.Split(delimiters)) { // AppendFormat appends a formatted string output.AppendFormat("{0}: {1}\n", ctr++, subString); } Console.WriteLine(output); } 161 Lập trình C#.NET 4.9. Handling Exceptions § C# xử dụng kỹ thuật bắt ngoại lệ (Handling Exception để bắt và xử lý lỗi (errror) cũng như các ngoại lệ phát sinh trong quá trình thực thi chương trình) § Phân loại bug, error và exception • Bug: lỗi do người lập trình, cần được loại bỏ trước khi hoàn thành phần mềm • Error: lỗi phát sinh do người dùng, ví dụ người dùng nhập sai định dạng dữ liệu -> phải kiểm tra dữ liệu đầu vào • Exception: lỗi bất thường, ví dụ như hết bộ nhớ, lỗi chia cho 0s 162 Lập trình C#.NET Ném (throwing) và bắt (catching) ngoại lệ § Để báo hiệu một điều kiện bất thường xuất hiện trong quá trình thực thi, thực hiện ném ngoại lệ throw new System.Exception(); § Khi một ngoại lệ được tung ra, chương trình ngay lập tức sẽ dừng lại và CLR sẽ tìm , kiểm tra chương trình bắt ngoại lệ, nếu không tìm thấy nó sẽ kết thúc chương trình 163 Lập trình C#.NET Ngoại lệ được báo trong chế độ debug 164 Lập trình C#.NET Lỗi dừng chương trình khi chạy thực tế 165 Lập trình C#.NET Ví dụ public class Test { public static void Main() { Console.WriteLine("Enter Main..."); Test t = new Test(); t.Func1(); Console.WriteLine("Exit Main..."); } public void Func1() { Console.WriteLine("Enter Func1..."); Func2(); Console.WriteLine("Exit Func1..."); } public void Func2() { Console.WriteLine("Enter Func2..."); throw new System.Exception(); Console.WriteLine("Exit Func2..."); } } 166 Lập trình C#.NET Ngoại lệ xuất hiện 167 Lập trình C#.NET Chi tiết ngoại lệ 168 Lập trình C#.NET Câu lệnh trycatch § C# sử dụng cấu trúc trycatchfinally để kiểm tra, bắt và xử lý ngoại lệ try { //Lệnh có thể phát sinh ngoại lệ, cần kiểm tra } catch(Exception e) { //Bắt và xử lý ngoại lệ nếu có } Finally { //Đoạn mã luôn thực thi khi xuất hiện ngoại lệ } 169 Lập trình C#.NET Câu lệnh trycatch § Có thể có nhiều đoạn lệnh catch trong một câu lệnh trycatch tương ứng với nhiều ngoại lệ khác nhau § Đoạn lệnh trycatch có thể đặt trong phương thức có thể phát sinh ngoại lệ hoặc đặt ở cấp cao hơn, phương thức triệu gọi đoạn mã có thể phát sinh ngoại lệ 170 Lập trình C#.NET Bài thực hành số 5 Bài 2: Viết một phương thức float Divide(int num1, int num2) § Kiểm tra và bắt ngoại lệ bằng câu lệnh trycatch trong hai trường hợp • Bắt trong thân hàm • Bắt trong lời gọi hàm 171 Lập trình C#.NET Nội dung môn học Chương 1: Giới thiệu C# và .NET Framework Chương 2: Giới thiệu môi trường phát triển ứng dụng Visual Studio .NET 2005 Chương 3: C# căn bản Chương 4: Hướng đối tượng trong C# Chương 5: Lập trình ứng dụng với C# 172 Lập trình C#.NET Nội dung chương 5 5.1. Mở đầu về lập trình Windows Form 5.2. Một số điều khiển thông dụng cho Windows Form 5.3. Kết nối cơ sở dữ liệu sử dụng ADO.NET 5.4. Lập báo cáo sử dụng Crystal Report.NET 5.5. Lập trình Socket 173 Lập trình C#.NET 5.1. Mở đầu về lập trình Windows Form Xây dựng ứng dụng Hello World 174 Lập trình C#.NET Xây dựng ứng dụng Hello World § Tạo dự án kiểu Windows Application § Thiết kế giao diện • 1 label • 1 textbox • 2 button: Hello, Good bye 175 Lập trình C#.NET Các file cấu thành class frmHello §Form1.cs: chứa mã chương trình của người dùng §Form1.Designer.cs: do bộ VS 2005 tự động sinh trong quá trình thiết kế 176 Lập trình C#.NET Form1.cs 177 Lập trình C#.NET Form1.Designer.cs 178 Lập trình C#.NET Viết mã § Sự kiện người dùng click vào nút Hello private void btnHello_Click(object sender, EventArgs e) { MessageBox.Show("Hello "+txtName.Text); } Phương thức Show của đối tượng MessageBox -Hiển thị thông báo -Hiển thị các nút bấm tùy chọn, tương tác người dùng (OK, Cancel, Yes, No) 179 Lập trình C#.NET Viết mã (tiếp) § Sự kiện người dùng click vào nút Good bye private void btnGoodBye_Click(object sender, EventArgs e) { MessageBox.Show("Bye bye!"); Application.Exit(); } Lớp Application cung cấp các thuộc tính và phương thức tĩnh để làm việc với ứng dụng Application.Exit(); //Đóng ứng dụng 180 Lập trình C#.NET 5.2. Một số điều khiển thông dụng trong Windows Form § Label và Linklabel § Textbox và RichTextBox § Button § Check box và Radio button § Combobox § Listbox 181 Lập trình C#.NET Label § Điều khiển label chứa văn bản tĩnh trên form § Một số thuộc tính thường dùng • Text • Text align § C# hỗ trợ điều khiển Linklabel (kế thừa lớp Label) cho phép link đến các liên kết (website, forum). Một số thuộc tính thường dùng • Text • LinkArea • LinkBehavior 182 Lập trình C#.NET Textbox § Điều khiển Textbox cho phép người dùng nhập thông tin hoặc hiển thị các thông tin dưới dạng văn bản • Một dòng • Nhiều dòng 183 Lập trình C#.NET RichTextBox § Cho phép khả năng định dạng, chỉnh sửa mạnh hơn nhiều so với điều khiển textbox 184 Lập trình C#.NET Check box và Radio button § Check box: thiết lập trạng thái của check box qua thuộc tính CheckState • CheckState=Checked • CheckState=Unchecked • CheckState=Indeterminate § Radio button: chọn duy nhất một trong nhiều tùy chọn khác nhau 185 Lập trình C#.NET List Control § List controls bao gồm ba điều khiển cơ bản: Listbox, CheckedListBox và ComboBox • Có thể đưa dữ liệu vào bằng lệnh Add • Gắn điều khiển với một nguồn dữ liệu sẵn có (Data binding) § Các điều khiển này đều kế thừa từ lớp trừu tượng ListControl 186 Lập trình C#.NET Bài thực hành số 6 187 Lập trình C#.NET 5.3. Kết nối cơ sở dữ liệu sử dụng ADO.NET § Mô hình dữ liệu quan hệ § Một số câu truy vấn cơ bản § Kết nối cơ sở dữ liệu sử dụng ADO.NET 188 Lập trình C#.NET § Cơ sở dữ liệu: Là sự lưu trữ dữ liệu có tổ chức. § Hệ quản lý cơ sở dữ liệu (DBMS): • Cung cấp cơ chế lưu trữ, quản lý dữ liệu một cách phù hợp với định dạng dữ liệu. • Cho phép lưu trữ và truy cập tới cơ sở dữ liệu mà không cần biết về những khai báo bên trong cơ sở dữ liệu. • Ví dụ như SQL Server, Microsoft Access là các hệ quản lý cơ sở dữ liệu. Cơ sở dữ liệu quan hệ 189 Lập trình C#.NET Mô hình Cơ sở dữ liệu quan hệ § Biểu diễn dữ liệu một cách logic • Có thể xem xét các mối quan hệ mà không cần quan tâm đến cấu trúc vật lý của dữ liệu § Bao gồm các bảng • Các hàng được gọi là các mẩu tin (records) • Các cột được gọi là các trường ( fields) • Khoá chính (Primary key) một hàng phải có khóa chính nhằm phân biệt nó với các hàng khác. Do đó khóa chính phải có giá trị duy nhất và không có giá trị null 190 Lập trình C#.NET § Khóa ngoại (foreign key): trong trường hợp một nhân viên mua nhiều hàng hóa thì trên bảng Order, ngoài khóa chính (thường là số hiệu hàng hóa) còn lặp lại số thẻ nhân viên (trong bảng Employee). Lúc này số thẻ nhân viên gọi là khóa ngoại của bảng Order. Khóa ngoại dùng để tìm kiếm các giá trị trong bảng con (bảng Order). Mô hình Cơ sở dữ liệu quan hệ 191 Lập trình C#.NET Ta có cơ sở dữ liệu của bảng Employee và bảng Product như sau: khóa chính của bảng Employee khóa chính của bảng Product khóa ngoại của bảng Product Mô hình Cơ sở dữ liệu quan hệ 192 Lập trình C#.NET Quan hệ (relationship): được thiết lập giữa hai bảng dữ liệu với nhau, có ba loại quan hệ chính. • Quan hệ 1-1: quan hệ trực tiếp giữa 2 bảng dữ liệu. Ví dụ bạn có 2 bảng Person1, Person2 thì quan hệ Kết hôn là quan hệ 1-1. Một cách khác khi mà 2 bảng có quan hệ thông qua 2 khóa chính thì quan hệ là 1-1. • Quan hệ 1-N: ứng với một hàng trong bảng này có nhiều hàng trong bảng khác. Chẳng hạn như quan hệ giữa 2 bảng Employee và Order như vừa rồi là quan hệ 1-N. • Quan hệ N-N: được thiết lập khi một hàng trong Parent table có nhiều hàng trong Child table và ngược lại. Mô hình Cơ sở dữ liệu quan hệ 193 Lập trình C#.NET § Tính toàn vẹn dữ liệu (Data Integrity), được định nghĩa là không tồn tại dữ liệu dư thừa, bao gồm: • Dữ liệu nhập (Entity Integrity): mọi hàng phải có một giá trị duy nhất trong trường khóa chính của nó. • Ràng buộc toàn vẹn (Referential Integrity): mọi giá trị trường khóa ngoại của bảng này phải xuất hiện trong trường khóa chính của bảng khác. • Toàn vẹn miền (Domain Integrity): dữ liệu nhập vào trong cột phải phù hợp với định dạng và kiểu dữ liệu đã khai báo. Mô hình Cơ sở dữ liệu quan hệ 194 Lập trình C#.NET Ví dụ tblUsers tblMemos tblMeetings 195 Lập trình C#.NET Ví dụ 196 Lập trình C#.NET SQL-Ngôn ngữ truy vấn có cấu trúc § Được dùng để yêu cầu dữ liệu (thực hiện truy vấn ) và thao tác trên dữ liệu đó § Để thực hiện các lệnh SQL, bạn sử dụng SQL Query Analyzer. Có thể mở trực tiếp từ cửa sổ SQL Server Enterprise Manager bằng cách chọn Tools\SQL Query Analyzer như sau 197 Lập trình C#.NET SQL-Ngôn ngữ truy vấn có cấu trúc 198 Lập trình C#.NET Truy vấn SELECT § Chức năng: Trích thông tin từ một hay nhiều bảng trong một CSDL. § Cú pháp: SELECT danh_sách_các_cột FROM tên_bảng (Dấu * cho phép trích mẩu tin với tất cả các cột trong bảng.) 199 Lập trình C#.NET Mệnh đề WHERE § Chức năng: Truy xuất dữ liệu trong bảng theo các điều kiện nào đó. § Cú pháp: SELECT tên_cột FROM tên_bảng WHERE tên_cột phép_toán giá_trị Phép toán Mô tả = So sánh bằng So sánh không bằng > Lớn hơn < Nhỏ hơn >= Lớn hơn hoặc bằng <= Nhỏ hơn hoặc bằng BETWEEN Nằm giữa một khoảng LIKE So sánh mẫu chuỗi 200 Lập trình C#.NET § Chức năng: Sắp xếp kết quả trả về theo một tiêu chuẩn bất kỳ. § Ví dụ: Ta có bảng Orders sau: Lệnh SELECT Company, OrderNumber FROM Orders ORDER BY Company cho kết quả Mệnh đề ORDER BY 201 Lập trình C#.NET § Ta cũng có thể sắp xếp theo thứ tự giảm dần của OrderNumber bằng cách đánh lệnh: SELECT Company, OrderNumber FROM Orders ORDER BY OrderNumber DESC Kết quả trả về: Ngược lại, ASC sắp xếp theo thứ tự tăng dần. Mệnh đề ORDER BY 202 Lập trình C#.NET Truy vấn thêm mới INSERT § Chức năng: Chèn một hàng vào trong bảng. § Cú pháp: INSERT INTO tên_bảng VALUES (giá_trị_1, giá_trị_2,....) Ta cũng có thể chỉ rõ các cột/trường nào cần chèn dữ liệu: INSERT INTO tên_bảng (cột_1, cột_2,...) VALUES (giá_trị_1, giá_trị_2,....) 203 Lập trình C#.NET Truy vấn thêm mới INSERT Ví dụ: Ta có bảng Persons như sau: Câu lệnh SQL sau: INSERT INTO Persons (LastName, Address) VALUES ('Rasmussen', 'Storgt 67') sẽ tạo ra kết quả trong bảng Persons : 204 Lập trình C#.NET Truy vấn cập nhật UPDATE § Chức năng: Cập nhật hay sửa đổi dữ liệu đã có trong bảng. § Cú pháp: UPDATE tên_bảng SET tên_cột = giá_trị_mới WHERE tên_cột = giá_trị 205 Lập trình C#.NET Truy vấn cập nhật UPDATE Ví dụ ta có bảng Person sau: Để bổ xung thêm phần tên cho người có họ là Rasmussen ta đánh lệnh sau: UPDATE Person SET FirstName = 'Nina' WHERE LastName = 'Rasmussen‘ Kết quả trả về: 206 Lập trình C#.NET Truy vấn xóa DELETE § Chức năng: Xoá các dòng ra khỏi bảng. § Cú pháp: DELETE FROM tên_bảng WHERE tên_cột = giá_trị § Ví dụ xoá người có tên Nina Rasmussen: DELETE FROM Person WHERE LastName = 'Rasmussen' 207 Lập trình C#.NET ADO.NET § ADO (Active Data Object) đang là một đối tượng phổ biến trong lập trình cơ sở dữ liệu, bạn sử dụng ADO kết nối với bất kỳ cơ sở dữ liệu tương thích. Nó cung cấp hệ giao tiếp lập trình ứng dụng API (application program interface) để truy nhập vào cơ sở dữ liệu hệ thống. § ADO.NET là đối tượng được sử dụng trong .NET 208 Lập trình C#.NET Lớp Connection § .NET Data Provider là một phần của mô hình lập trình ADO.NET, bao gồm 4 lớp sau: • Connection: lớp kết nối cơ sở dữ liệu. • DataAdapter: lớp chứa dữ liệu. • Command: lớp chứa lệnh. • DataReader: lớp đọc dữ liệu. § Bạn cần khai báo Connection khi muốn truy cập loại dữ liệu nguồn. Có 3 loại kết nối Microsoft cung cấp trong .Net Framework bao gồm OdbcConnection, OleDbConnection ,SqlConnection. § SqlConnection tối ưu hóa cho quá trình kết nối với CSDL SQL Server 7.0 và phiên bản mới hơn. Trong khi Odbc và OleDb được sử dụng cho MS Access hay MySQL, 209 Lập trình C#.NET Lớp DataAdapter § Lớp DataAdapter dùng để nhận dữ liệu từ dữ liệu nguồn, sau đó chuyển vào DataSet và các lớp quan hệ như DataTable (xem về lớp không kết nối ở phần sau). Nó cũng có trách nhiệm cập nhật dữ liệu thay đổi vào dữ liệu nguồn. § Các phát biểu trong SQL được “nhúng” vào C# bằng đối tượng Command. Bộ điều hợp sẽ sử dụng đối tượng Command để truy vấn và cập nhật dữ liệu. Vì thế để làm việc được với DataAdapter, bạn phải chỉ rõ và sử dụng đối tượng Command. § DataAdapter chia thành 3 lớp cụ thể: OleDbDataAdapter , OdbcDataAdapter, SqlDataAdapter 210 Lập trình C#.NET 5.4. Lập báo cáo sử dụng Crystal Report § Sử dụng nguồn dữ liệu qua ODBC § Sử dụng nguồn dữ liệu qua ADO.NET 211 Lập trình C#.NET 5.5. Lập trình socket § Socket là gì? Địa chỉ IP (IP Address) Số hiệu cổng (Port Number) Socket 212 Lập trình C#.NET Một số port thông dụng POP3110 HTTP80 SMTP25 FTP Control21 FTP Data20 Giao thức sử dụngSố hiệu cổng 213 Lập trình C#.NET Giao thức truyền tin § Các gói tin được truyền theo hai giao thức chính • UDP (User Datagram Protocol): không đảm bảo được thông tin đến được đích và đúng thứ tự -> Truyền thông tin cần tốc độ nhanh, không cần tuyệt đối chính xác (Voice over IP, Game online) • TCP (Transmission Control Protocol):đảm bảo chuyển giao dữ liệu đến nơi nhận một cách đáng tin cậy và đúng thứ tự. (Web, email, truyền file) 214 Lập trình C#.NET Ví dụ giao thức UDP

Các file đính kèm theo tài liệu này:

  • pdfbai_giang_lap_trinh_ung_dung_su_dung_c_net_pham_van_thuan.pdf
Tài liệu liên quan