Xây dựng phần mềm hướng đối tượng

GVHD: Trần Anh Dũng

HƯỚNG DẪN THỰC HÀNH TUẦN 3 Chủ đề: ADO.NET
Phần 1: Các thao tác kết nối ADO.NET sử dụng cấu trúc dòng lệnh với namespace System.Data.

1. Thiết kế CSDL: a. Mở ứng dụng Microsoft Access b. Thiết kế CSDL, đặt tên QLHOCSINH.mdb: HOCSINH Kiểu dữ liệu Text(10) Text(255) Date/Time Text(255) Number Text(10)

STT 1 2 3 4 5 6

Tên trường MaHS TenHS NgaySinh DiaChi DTB MaLop

Ghi chú PrimaryKey

ForeignKey (tham chiếu đến Lop(MaLop)

STT 1 2 3

Tên trường MaLop TenLop SiSo

LOP Kiểu dữ liệu Text(10) Text(255) Number

Ghi chú PrimaryKey

2. Thiết kế giao diện: Tạo project C# Window Application mới với tên project là QLHS Thiết kế Form “Nhập thông tin học sinh” như màn hình sau:

Data.Xây dựng phần mềm hướng đối tượng GVHD: Trần Anh Dũng Tạo kết nối cơ sở dữ liệu bằng dòng lệnh Để thao tác trên cơ sở dữ liệu sử dụng ADO. DataColumn (tương ứng với Field trong CSDL) và DataRow (tương ứng với record trong CSDL). ta sử dụng OleDb..gồm OleDbConnection và SqlConnection. Ta khai báo sử dụng namespace như sau: using System. using System. o DataSet chứa dữ liệu thu được hoặc xử lý lấy từ cơ sở dữ liệu. OleDbCommand command. - - Ta khai báo các biến cần sử dụng để xử lý CSDL.OleDb. Hàm connect cơ sở dữ liệu . thực thi các store procedure. DataSet dataSet. bao gồm OleDbCommand và SqlCommand o DataAdapter thực hiện ánh xạ dữ liệu vào DataSet thông qua connection đã có bao gồm OleDbDataAdapter và SqlDataAdapter. Để kết nối với CSDL Access.Data.Ta viết hàm connect có nhiệm vụ kết nối cơ sở dữ liệu như sau: private void connect(string file) { . DataSet là tập hợp gồm các thành phần DataTable (tương ứng với từng View trong cơ sở dữ liệu). private private private private OleDbConnection connection. OleDbDataAdapter adapter. o Command để thực thi các câu lệnh truy vấn.NET ta cần có các đối tượng sau: o Connection để kết nối với cơ sở dữ liệu..

malop = (string)cmbLop.0.Xây dựng phần mềm hướng đối tượng GVHD: Trần Anh Dũng string connnectionString = "Provider=Microsoft. } - Trong sự kiện form load.SelectedValue.Text. // Column sẽ được giữ giá trị cboLop.mdb").Parse(txtDiemTB.DisplayMember = "TenLop". dataSet = new DataSet(). malop. EventArgs e) { connect("E:/DH_HUFLIT/XDPMHDT/DeCuong_HuongDan_ThucHanh/HocSinh. ngaysinh = dtpNgaySinh.Jet. } Hàm thêm dữ liệu vào CSDL private void insert() { connection. tenHS.Text.ValueMember = "MaLop".OLEDB.Fill(dataSet). } - Trong sự kiện formLoad. tenHS = txtTenHS. adapter. // Column sẽ được hiển thị cboLop. diachi = txtDiaChi. private DateTime ngaysinh. connection = new OleDbConnection(connnectionString). //Load dữ liệu vào comboBox Lớp cboLop. diachi. return dataSet. connection). ta gọi hàm connect để khởi tạo connection private void Form1_Load(object sender.4.Value. Data Source=" + file.mdb"). '" + . - Hàm lấy thông tin: private void getData() { maHS = txtMaHS. ta gọi hàm lấy danh sách lớp và kết vào combobox private void Form1_Load(object sender. dtb = Double.Open(). string insertCommand = "INSERT INTO HOCSINH VALUES('" + maHS + "'.Text. EventArgs e) { connect("E:/DH_HUFLIT/XDPMHDT/DeCuong_HuongDan_ThucHanh/HocSinh.Text).DataSource = getDSLop(). } Hàm lấy danh sách lớp để kết với combobox private DataTable getDSLop() { adapter = new OleDbDataAdapter("select * from LOP". } Lấy thông tin từ form vào các biến Khai báo các biến sau: private string maHS. private double dtb.Tables[0].

ToShortDateString() + "'. } . EventArgs e) { getData().Show("Cap nhat thanh cong". chương trình sẽ hiển thị thông tin HS cho phép người nhập sửa đổi và lưu lại thông tin HS đã được sửa. MessageBoxIcon. EventArgs e) { getData(). " + dtb + ". Bài tập: a.Show("Xoa du lieu thanh cong".OK. string deleteCommand = "DELETE FROM HOCSINH WHERE MaHS = '"+maHS+"'". } 3.ExecuteNonQuery(). delete(). connection. MessageBox. "Thong bao".Tương tự ta có hàm xóa dữ liệu private void delete() { connection. } . command = new OleDbCommand(deleteCommand.Xây dựng phần mềm hướng đối tượng GVHD: Trần Anh Dũng tenHS + "'. Mã học sinh và tên học sinh phải khác null ii.Information). Điểm trung bình phải nhập giá trị số iii. '" + ngaysinh. connection). command. '" + malop + "')". command = new OleDbCommand(insertCommand. Thực hiện chức năng khi người dùng nhập mã HS đã có.Open(). connection. "Thong bao". MessageBoxButtons. '" + diachi + "'. MessageBox. MessageBoxIcon. … b.ExecuteNonQuery(). connection).Trong sự kiện Click của btnLuu ta thực hiện lưu thông tin vào CSDL private void btnLuu_Click(object sender. c.OK.Trong sự kiện Click của btnXoa ta thực hiện xóa thông tin từ CSDL private void btnXoa_Click(object sender. command.Information). } Hàm xóa dữ liệu khỏi CSDL .Close().Close(). Kiểm tra dữ liệu nhập hợp lệ: i. MessageBoxButtons. insert(). Để ngăn chặn khả năng phát sinh lỗi ??? Không cho phép nhập các ký tự không phải là ký tự số vào textbox “Điểm trung bình” .

Send("{TAB}"). Khi nhập dữ liệu cho một control xong. đối với nhiều người dùng. KeyPressEventArgs e) { //Nếu nhấn phím enter if (e. họ lại quen với thao tác nhấn phím “Enter” để chuyển qua control tiếp theo Giải pháp??? Hướng dẫn: xử lý sự kiện KeyPress của control tương ứng Khi người dùng nhấn một phím. Sinh viên tự phát triển tiếp để hoàn thiện chương trình trên . Tuy nhiên. người dùng muốn chuyển qua contol tiếp theo để nhập liệu thì phải nhấn phím “tab” để chuyển focus sang control kế tiếp.KeyChar == 13) SendKeys. kiểm tra xem phím đó có phải là phím “Enter” không? Nếu là phím “Enter” thì gửi phím “TAB” private void txtMaHS_KeyPress(object sender.Xây dựng phần mềm hướng đối tượng GVHD: Trần Anh Dũng Giải pháp ??? Xử lý sự kiện nhấp phím (KeyPress) cho textbox “Điểm trung bình” d. } e.

Sign up to vote on this title
UsefulNot useful