Giáo trình Mô đun C#2 - Lập trình máy tính
Phát sinh và bắt giữ ngoại lệ
Một Exception (ngoại lệ) là một vấn đề xuất hiện trong khi thực thi một chương trình. Một Exception trong C# là một phản hồi về một tình huống ngoại lệ mà xuất hiện trong khi một chương trình đang chạy, ví dụ như chia cho số 0.
Exception cung cấp một cách để truyền điều khiển từ một phần của một chương trình tới phần khác. Exception Handling (Xử lý ngoại lệ) trong C# được xây dựng dựa trên 4 từ khóa là: try, catch, finally, và throw.
try: Một try xác định một khối mã mà trường hợp ngoại lệ đặc biệt được kích hoạt. Nó được theo sau bởi một hoặc nhiều hơn các khối catch.
catch: Một chương trình bắt một ngoại lệ với một ngoại lệ được xử lý tại chỗ. Từ khóa catch chỉ bắt một ngoại lệ.
finally: Khóa finally được sử dụng để thực hiện một tập hợp các báo cáo, cho dù một ngoại lệ được ném hoặc không ném. Ví dụ, nếu bạn mở một tập tin, nó phải được đongs cho dù một ngoại lệ xảy ra hay không.
throw: Một chương trình ném một ngoại lệ khi một vấn đề xuất hiện. Điều này được thực hiện bằng cách sử dụng từ khóa throw.
Trang 1
Trang 2
Trang 3
Trang 4
Trang 5
Trang 6
Trang 7
Trang 8
Trang 9
Trang 10
Tải về để xem bản đầy đủ
Tóm tắt nội dung tài liệu: Giáo trình Mô đun C#2 - Lập trình máy tính
e + Phương thức lấy dữ liệu từ thủ tục SQL trả về 1 DataTable + Phương thức Lọc dữ liệu vào ComboBox Viết code chính xác using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data; using System.Data.SqlClient; using System.Windows.Forms; namespace pro_QLBH { classclsFillDatabase { clsConnect obj = newclsConnect(); //***************************************************************** //Lay DataTable tu mot thu tuc trong SQL //***************************************************************** publicDataTable FillDataTable(string strQuery) { //Khai bao va khoi tao DataTable obj.OpenConn(); DataTabledataTable = newDataTable(); try { //Khai bao va khoi tao doi tuong SqlCommand SqlCommand sqlCommand = newSqlCommand(); //Khai bao tuoc tinh cua doi tuong SqlCommand sqlCommand.CommandText = strQuery; sqlCommand.CommandType = CommandType.Text; sqlCommand.Connection = obj.Conn; //Khai bao va khoi tao doi tuong SqlDataAdapter SqlDataAdapter sqlDataAdapter = newSqlDataAdapter(sqlCommand); //Khai bao va goi phuong thuc Fill sqlDataAdapter.Fill(dataTable); sqlDataAdapter.Dispose(); } catch (Exception ex) { MessageBox.Show(ex.Message, "SQL server 2000"); } obj.CloseConn(); return dataTable; } //***************************************************************** //Lay DataTable tu mot thu tuc trong SQL su dung SQlParameter //***************************************************************** publicDataTable FillDataTable(string strQuery, CommandType commandType, string[] Parameters, string[] Values) { //Khai bao va khoi tao dataTable obj.OpenConn(); DataTable dataTable = newDataTable(); try { //Khai bao va khoi tao doi tuong SqlCommand SqlCommand sqlCommand = newSqlCommand(); //Khai bao tuoc tinh cua doi tuong SqlCommand sqlCommand.CommandText = strQuery; sqlCommand.CommandType = commandType; sqlCommand.Connection = obj.Conn; //Khai bao va khoi tao doi tuong SqlParameter SqlParameter sqlParameter; for (int i = 0; i < Parameters.Length; i++) { sqlParameter = newSqlParameter(); sqlParameter.ParameterName = Parameters[i]; sqlParameter.SqlValue = Values[i]; sqlCommand.Parameters.Add(sqlParameter); } //Khai bao va khoi tao doi tuong SqlDataAdapter SqlDataAdapter sqlDataAdapter = newSqlDataAdapter(sqlCommand); //Khai bao va goi phuong thuc Fill sqlDataAdapter.Fill(dataTable); sqlDataAdapter.Dispose(); } catch (Exception ex) { MessageBox.Show(ex.Message, "SQL server 2000"); } obj.CloseConn(); return dataTable; } publicvoid FillComboBox(ComboBox cboName, string strQuery, string strDispLay, string strValue) { DataTable tbl = newDataTable(); tbl = FillDataTable(strQuery); cboName.DataSource = tbl; cboName.DisplayMember = strDispLay; cboName.ValueMember = strValue; //cboName.SelectedIndex = 0; } } } Bước 4 Code cho Form frmCNHang.cs - Khai báo đối tượng thuộc lớp clsConnect - Khai báo đối tượng thuộc lớp clsFillDatabase - Phương thức thiết lập thuộc tính Enabled cho các đối tượng - Phương thức đưa dữ liệu vào DataGridView - Sự kiện Load form - Sự kiến click nút Thêm mới - Sự kiện click nút Sửa - Sự kiện click nút Lưu - Sự kiện nút Xóa Viết code chính xác clsFillDatabase fill = newclsFillDatabase(); clsConnect obj = newclsConnect(); int modeSave = 1; // 1 la them moi, 0 la sua void setControl(bool ok) { txtTenhang.Enabled = ok; txtDongia.Enabled = ok; txtSoluong.Enabled = ok; txtMahang.Enabled = ok; cboNhom.Enabled = ok; cboDVT.Enabled = ok; btDelete.Enabled = !ok; btEdit.Enabled = !ok; btSave.Enabled = ok; btNew.Enabled = !ok; } void GiveDatatoGridView() { DataTable tbl = newDataTable(); tbl = fill.FillDataTable("select a.mahang,tenmh,tendvt,tennhom,soluong,dongia from tblHang as a,tblDonvitinh as b, tblNhomhang as c where a.madvt=b.madvt and a.manhom=c.manhom"); dgDSMH.DataSource = tbl; } privatevoid frmCNHang_Load(object sender, EventArgs e) { fill.FillComboBox(cboDVT, "Select * from tblDonvitinh", "Tendvt", "madvt"); fill.FillComboBox(cboNhom, "select * from tblNhomhang", "tennhom", "manhom"); setControl(false); GiveDatatoGridView(); } privatevoid btNew_Click(object sender, EventArgs e) { modeSave = 1; setControl(true); txtDongia.Text = ""; txtMahang.Text = ""; txtSoluong.Text = ""; txtTenhang.Text = ""; } privatevoid btEdit_Click(object sender, EventArgs e) { modeSave = 0; setControl(true); } privatevoid btSave_Click(object sender, EventArgs e) { if (modeSave == 1) { string strSql = "Insert into tblHang(mahang,tenmh,madvt,manhom,soluong,dongia) values ('"+txtMahang.Text+"',N'"+txtTenhang.Text+"','"+cboDVT.SelectedValue.ToString()+"','"+cboNhom.SelectedValue.ToString()+"','"+txtSoluong.Text+"','"+txtDongia.Text+"')"; obj.exeSql(strSql); GiveDatatoGridView(); setControl(false); } else { string strSql = "update tblHang set tenmh=N'"+txtTenhang.Text+"',madvt='"+cboDVT.SelectedValue.ToString()+"',manhom='"+cboNhom.SelectedValue.ToString()+"',soluong='"+txtSoluong.Text+"' where mahang='"+txtMahang.Text+"'"; obj.exeSql(strSql); GiveDatatoGridView(); setControl(false); } } privatevoid dgDSMH_CellClick(object sender, DataGridViewCellEventArgs e) { txtMahang.Text = dgDSMH.CurrentRow.Cells[0].Value.ToString(); txtTenhang.Text = dgDSMH.CurrentRow.Cells[1].Value.ToString(); cboDVT.Text = dgDSMH.CurrentRow.Cells[2].Value.ToString(); cboNhom.Text = dgDSMH.CurrentRow.Cells[3].Value.ToString(); txtSoluong.Text = dgDSMH.CurrentRow.Cells[4].Value.ToString(); txtDongia.Text = dgDSMH.CurrentRow.Cells[5].Value.ToString(); } privatevoid btDelete_Click(object sender, EventArgs e) { if (MessageBox.Show("Bạn có xóa không?", "Xóa mặt hàng", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) { string strSql = "Delete from tblHang where mahang='" + txtMahang.Text + "'"; obj.exeSql(strSql); GiveDatatoGridView(); setControl(false); } } Bước 5 Biên dịch Debug\Build Solution - F6 Lựa chọn chính xác Bước 6 Chạy Form Debug\Start Debugging- F5 Lựa chọn chính xác. Chạy được form. Bài tập Bài tập 1 Tạo cơ sở dữ liệu gồm 3 table: HANG(mahangsx,tenhangsx) LOAI(maloai,tenloai,mahangsx) MATHANG(mahanghoa, tenhanghoa, dongia, ghichu, maloai). Thí sinh tự chọn loại dữ lịch thích hợp. Tạo Diagram, nhập mẫu cơ sở dữ liệu test có 2 hãng sản xuất, mỗi hãng có 2 loại, mỗi loại có 2 mặt hàng với giá trị cột ghichu NULL. 1. Tạo form kết nối cơ sở dữ liệu như sau: 2. Khi người dùng kích chuột vào nút thoát chương trình hiện ra cửa sổ hỏi người dùng có chắc chắn muốn thoát không - Nếu người dùng chọn Yes chương trình sẽ thoát khỏi chương trình - Nếu người dùng chọn No chương trình sẽ trở lại chương trình 3. Khi textbox tên máy hoặc tên cơ sở dữ liệu để trống chương trình sẽ hiển thị báo cho người dùng biết, người dùng chọn Ok chương trình sẽ quay lại textbox đó. 4. a. Nếu chương trình kết nối không thành công cơ sở dữ liệu thì thông báo cho người dùng biết biết “kết nối đến cơ sở dữ liệu thất bại”. b. Nếu kết nối thành công thông báo cho người dùng biết kết nối thành công và hiển thị form như câu 3. 5. Tạo form theo cấu trúc: a. Khi người dùng chọn một hãng SX thì chương trình hiển thị danh sách loại mặt hàng thuộc hãng Đó (sắp xếp theo tên loại), chưa loại nào được chọn từ ComboBox này, và không có mặt hàng nào hiển thi trong danh Sách phía dưới. b. Người dùng chọn một loại mặt hàng để xem danh sách mặt hàng (thuộc loại đang chọn) hiển thị Trong danh sách phía dưới (thông tin hiển thị chỉ chứa tên mặt hàng, được đánh số thứ tự). 6. Người dùng có thể bấm phải chuột trên một mặt hàng từ danh sách để hiển thị popup menu chứa 2 menu (xem hình). Nếu người dùng bấm phải chuột trên danh sách khi chưa chọn mặt hàng nào thì hai menu này sẽ bị mờ, không cho sử dụng. 7. Khi người dùng chọn menu [Xóa mặt hàng đang chọn], chương trình sẽ xuất hiện hộp thoại xác nhận. - Nếu người dùng đồng ý, chương trình sẽ xóa mặt hàng này ra khỏi database và cập nhật danh sách trên màn hình). - Nếu người dùng không đồng ý trở lại chương trình. 8. a. Tạo form theo cấu trúc. b. Khi người dùng chọn menu [Hiển thị thông tin chi tiết của mặt hàng] hoặc Double click vào một mặt hàng trong danh sách, chương trình sẽ hiển thị form trên với thông tin mặt hàng đang chọn. c. Người dùng nhấn nút quay lại để thoát khỏi form. Bài tập 2 Cho cơ sở dữ liệu Quản lý điểm gồm các bảng: tblSinhVien(MaSV,Hoten,Ngaysinh, Noisinh, Gioitinh Diachi, Makhoa). tblKhoa(Makhoa, Tenkhoa) tblMonHoc(Mamon, Tenmon, Makhoa, Sohocphan, Giaovien) tblDiem(Mamon, MaSV, Diem) Hãy sử dụng hệ quản trị CSDL SQL Server hoặc (Microsoft Access) thực hiện các yêu cầu sau: Tạo các bảng trên. Tạo các ràng buộc giữa các bảng. Nhập vào mỗi bảng từ 5 đến 10 dòng dữ liệu. 1. Thiết kế Form frmMain theo mẫu sau: (5 điểm) Viết lệnh sao cho khi người sử dụng chọn thực đơn Quản lý à Quản lý điểm , Quản lý môn học thì hệ thống mở Form frmDiem, frmMonHoc. 2. Sử dụng cơ sở dữ liệu ở câu 1, tạo form theo mẫu và thực hiện các yêu cầu sau: Yêu cầu : Khi chương trình thực thi frmMonHoc sẽ hiển thị toàn bộ danh sách môn học được nạp từ cơ sở dữ liệu vào Listview.đồng thời nút Xóa, nút sửa, các TextBox và combobox sẽ mờ đi (vô hiệu hóa). Khi người dùng click vào nút “cập nhật” trở thành nút “Thêm” các TextBox, combobox sẽ sáng (cho phép hoạt động) để nhập thông tin môn học và lưu lại trong cơ sở dữ liệu. Nút “Xóa” sẽ sáng khi người sử dụng click vào ListView và khi người sử dụng nhấn nút xóa thì sẽ xóa môn học khỏi CSDL và cập nhật lại ListView. Khi người dùng click và nút sửa cho phép sửa thông tin của phần tử được chọn và lưu lại trong cơ sở dữ liệu. 3. Sử dụng cơ sở dữ liệu ở câu 1, tạo form theo mẫu và thực hiện các yêu cầu sau: Yêu cầu : Khi chương trình thực thi frmDiem sẽ hiển thị toàn bộ danh sách điểm của sinh viên được nạp từ cơ sở dữ liệu vào Listview Xây dựng chức năng “CẬP NHẬT” để thêm thông tin điểm vào trong cơ sở dữ liệu và cập nhật lại trong ListView. Lưu ý: Nếu dữ liệu nhập không đúng chương trình sẽ báo lỗi và không thực hiện chức năng “CẬP NHẬT”. Xây dựng chức năng “XÓA” xóa tất cả các phần tử được chọn. Xây dựng chức năng “SỬA” cho phép sửa thông tin của phần tử được chọn và lưu lại trong cơ sở dữ liệu. Xây dựng chức năng “TÌM KIẾM” thành viên theo khóa tìm kiếm là: MaSV, MaMH. Bài 10: Lập báo cáo với CrystalReport Mã bài: MĐ16_B10 Giới thiệu: Bài học này cung cấp các kiến thức giúp người học có thể tạo được một báo cáo trong C#. Mục tiêu : Trình bày được các bước tạo báo cáo bằng công cụ Winzard; Mô tả được các thuộc tính của đối tượng Crysral Report và Crystal Report Viewer; Tạo được báo cáo đi theo bằng công cụ CrystalReport; Thực hiện được các biện pháp an toàn cho máy tính. Report Header 1. Lập báo cáo bằng Winzard - Bố cục báo cáo Page Footer Report Footer Page 1 Tong so giao vien: 6 giao vien Detail Page Header - Kiến trúc sử dụng báo cáo Trình tự thực hiện - Bước 1: Tạo thủ tục + Trong SQL Server chọn New Query + Viết code tạo thủ tục createprocedure spDSGV as select*from tblGiaovien + Nhấn F5 để tạo thủ tục - Bước 2: Tạo CrystalReport + Chuột phải vào tên Project\ Chọn Add\ Chọn New Item + Chọn Reporting\ Chọn Crystal Report\ Gõ tên vào mục Name\ Nhấn chọn Add. + Xuất hiện cửa sổ Crystal Report Gallery: Chọn Using the Report Winzard, Standard + Chọn Ok +Chọn Creat New Connection + Chọn OLE DB(ADO) + Chọn Microsoft OLEDB Provider for SQL Server + Nhấn Next + Điền tên máy vào Server + Tích chọn Integrated Security + Database: Chọn cơ sở dữ liệu muốn truy vấn + Chọn Finish + Chọn thủ tục để đưa dữa liệu vào Report Chọn + + Chọn Next Chọn + Chọn các trường cần đưa vào Report + Chọn Finish - Bước 3: Gắn Report vào Form + Tạo Form mới frmrptDocgia + Chọn và thả đối tượng CrystalReportViewer vào form + Viết code cho sự kiện load form 2. Lập báo cáo không sử dụng Winzard Các công cụ tạo báo cáo - Text Oject: Tạo các chuỗi tiêu đề - Line Oject: Tạo đường kẻ - Box Oject: Tạo khung kẻ hình chữ nhật Trình tự thực hiện - Bước 1: Tạo thủ tục + Trong SQL Server chọn New Query + Viết code tạo thủ tục createprocedure spDSGV as select*from tblGiaovien + Nhấn F5 để tạo thủ tục - Bước 2: Tạo CrystalReport + Chuột phải vào tên Project\ Chọn Add\ Chọn New Item + Chọn Reporting\ Chọn Crystal Report\ Gõ tên vào mục Name\ Nhấn chọn Add. + Xuất hiện cửa sổ Crystal Report Gallery: Chọn As blank report + Chọn Ok + Thiết kế report + Chuột phải vào Database Fields\ Chọn Database Exprert + Chọn Current Connections\ Chọn thủ tục chứa dữ liệu cho Report +Chọn OK + Kéo và thả các trường vào đúng vị trí trên report + - Bước 3: Gắn Report vào Form + Tạo Form mới frmrptDocgia + Chọn và thả đối tượng CrystalReportViewer vào form + Viết code cho sự kiện load form Bài tập 1. Tiếp ý 3 bài tập 1 trong bài học số 9, hãy tạo báo cáo để hiển thị bảng điểm của học sinh theo mẫu sau BẢNG ĐIỂM MÔN Mã sinh viên Họ và tên Ngày sinh Điểm 2. Cho cơ sở dữ liệu: DOCGIA Field Name Description Madg Mã độc giả Hoten Họ và tên độc giả Gioitinh Gới tính Ngaysinh Ngày sinh Diachi Địa chỉ Coquan Cơ quan NHANVIEN Field Name Description Manv Mã nhân viên Hoten Họ và tên nhân viên Gioitinh Gới tính LOAISACH Field Name Description Maloai Mã loại Tenloai Tên loại Vitri Vị trí SACH Field Name Description Masach Mã phòng Tensach Tên sách Sotrang Số trang Tacgia Tác giả Loaisach Loại sách Nhaxb Nhà xuất bản Soluong Số lượng MUONTRA Field Name Description Manv Mã nhân viên Madg Mã độc giả Masach Mã sách Ngaymuon Ngày mượn Ngaytra Ngày trả Ngayhentra Ngày hẹn trả Hãy thực hiện các yêu cầu sau: * Tạo thư mục mang tên Họ và tên_Số báo danh của thí sinh vào ổ đĩa D hoặc nơi lưu trữ do giám thị coi thi yêu cầu, lưu tất cả nội dung bài làm vào thư mục này. - Tạo một cơ sở dữ liệu với tên qlthu_vien.mdf chứa các bảng dữ liệu trên trong SQL Server. Tạo các bảng dữ liệu với kiểu dữ liệu, độ rộng, ...., khóa chính, khóa phụ, ..... (các ràng buộc toàn vẹn dữ liệu đầy đủ) của các trường sao cho phù hợp của bài toán. Nhập dữ liệu tối thiểu mỗi bảng 5 bảng ghi. - Tạo các form cập nhật dữ liệu cho các bảng (Cập nhật độc giả, cập nhật sách, cập nhật bảng mượn trả), trên form có lưới hiển thị dữ liệu, bao gồm các nút thêm, sửa, xóa, in dữ liệu (trừ bảng mượn trả) thoát. - Tạo report thống kê độc giả chưa trả sách ở thời điểm hiện tại. Tạo form thống kê độc giả chưa trả sách để sử dụng report vừa tạo. - Tạo report thống kê các độc giả đã mượn sách theo loại sách. Tạo form sử dụng report vừa tạo. - Tạo một form gồm hệ thống menu theo mẫu dưới đây rồi gắn tất cả các form đã tạo ở các câu trên vào chức năng trên menu. Cập nhật dữ liệu Thống kê Hệ thống
File đính kèm:
- giao_trinh_mo_dun_c2_lap_trinh_may_tinh.doc