Xây dựng phần mềm hướng đối tượng - Hướng dẫn thực hành tuần 3: ADO.NET

Đểthao tác trên cơsởdữliệu sửdụng ADO.NET ta cần có các đối tượng sau:

o Connection đểkết nối với cơsởdữliệu.gồm OleDbConnection và

SqlConnection.

o Command đểthực thi các câu lệnh truy vấn, thực thi các store procedure. 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.

o DataSet chứa dữliệu thu được hoặc xửlý lấy từcơsởdữliệu. 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), DataColumn (tương ứng với Field trong CSDL) và DataRow (tương ứng

với record trong CSDL).

pdf5 trang | Chuyên mục: Visual C# | Chia sẻ: dkS00TYs | Lượt xem: 1792 | Lượt tải: 2download
Tóm tắt nội dung Xây dựng phần mềm hướng đối tượng - Hướng dẫn thực hành tuần 3: ADO.NET, để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
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 
STT Tên trường Kiểu dữ liệu Ghi chú 
1 MaHS Text(10) PrimaryKey 
2 TenHS Text(255) 
3 NgaySinh Date/Time 
4 DiaChi Text(255) 
5 DTB Number 
6 MaLop Text(10) ForeignKey (tham chiếu đến 
Lop(MaLop) 
LOP 
STT Tên trường Kiểu dữ liệu Ghi chú 
1 MaLop Text(10) PrimaryKey 
2 TenLop Text(255) 
3 SiSo Number 
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: 
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.NET ta cần có các đối tượng sau: 
o Connection để kết nối với cơ sở dữ liệu.gồm OleDbConnection và 
SqlConnection. 
o Command để thực thi các câu lệnh truy vấn, thực thi các store procedure... 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. 
o DataSet chứa dữ liệu thu được hoặc xử lý lấy từ cơ sở dữ liệu. 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), DataColumn (tương ứng với Field trong CSDL) và DataRow (tương ứng 
với record trong CSDL). 
- Để kết nối với CSDL Access, ta sử dụng OleDb. Ta khai báo sử dụng namespace như sau: 
using System.Data; 
using System.Data.OleDb; 
- Ta khai báo các biến cần sử dụng để xử lý CSDL. 
private OleDbConnection connection; 
 private OleDbDataAdapter adapter; 
 private DataSet dataSet; 
private OleDbCommand command; 
Hàm connect cơ sở dữ liệu 
- 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) 
{ 
Xây dựng phần mềm hướng đối tượng GVHD: Trần Anh Dũng 
string connnectionString = "Provider=Microsoft.Jet.OLEDB.4.0; 
Data Source=" + file; 
connection = new OleDbConnection(connnectionString); 
} 
- Trong sự kiện form load, ta gọi hàm connect để khởi tạo connection 
private void Form1_Load(object sender, EventArgs e) 
{ 
connect("E:/DH_HUFLIT/XDPMHDT/DeCuong_HuongDan_ThucHanh/HocSinh.mdb"); 
} 
Hàm lấy danh sách lớp để kết với combobox 
private DataTable getDSLop() 
{ 
adapter = new OleDbDataAdapter("select * from LOP", connection); 
 dataSet = new DataSet(); 
adapter.Fill(dataSet); 
return dataSet.Tables[0]; 
} 
- Trong sự kiện formLoad, ta gọi hàm lấy danh sách lớp và kết vào combobox 
private void Form1_Load(object sender, EventArgs e) 
{ 
connect("E:/DH_HUFLIT/XDPMHDT/DeCuong_HuongDan_ThucHanh/HocSinh.mdb"); 
 //Load dữ liệu vào comboBox Lớp 
 cboLop.DataSource = getDSLop(); 
 // Column sẽ được hiển thị 
 cboLop.DisplayMember = "TenLop"; 
 // Column sẽ được giữ giá trị 
 cboLop.ValueMember = "MaLop"; 
} 
Lấy thông tin từ form vào các biến 
- Khai báo các biến sau: 
private string maHS, tenHS, diachi, malop; 
 private double dtb; 
 private DateTime ngaysinh; 
- Hàm lấy thông tin: 
private void getData() 
{ 
maHS = txtMaHS.Text; 
 tenHS = txtTenHS.Text; 
 ngaysinh = dtpNgaySinh.Value; 
 diachi = txtDiaChi.Text; 
 malop = (string)cmbLop.SelectedValue; 
 dtb = Double.Parse(txtDiemTB.Text); 
} 
Hàm thêm dữ liệu vào CSDL 
private void insert() 
{ 
connection.Open(); 
 string insertCommand = "INSERT INTO HOCSINH VALUES('" + 
 maHS + "', '" + 
Xây dựng phần mềm hướng đối tượng GVHD: Trần Anh Dũng 
 tenHS + "', '" + 
 ngaysinh.ToShortDateString() + "', '" + 
 diachi + "', " + 
 dtb + ", '" + 
 malop + "')"; 
 command = new OleDbCommand(insertCommand, connection); 
 command.ExecuteNonQuery(); 
 connection.Close(); 
} 
- 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, EventArgs e) 
{ 
getData(); 
 insert(); 
 MessageBox.Show("Cap nhat thanh cong", "Thong bao", 
MessageBoxButtons.OK, MessageBoxIcon.Information); 
} 
Hàm xóa dữ liệu khỏi CSDL 
- Tương tự ta có hàm xóa dữ liệu 
private void delete() 
{ 
 connection.Open(); 
 string deleteCommand = "DELETE FROM HOCSINH WHERE MaHS = '"+maHS+"'"; 
 command = new OleDbCommand(deleteCommand, connection); 
 command.ExecuteNonQuery(); 
 connection.Close(); 
} 
- 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, EventArgs e) 
{ 
getData(); 
 delete(); 
 MessageBox.Show("Xoa du lieu thanh cong", "Thong bao", 
MessageBoxButtons.OK, MessageBoxIcon.Information); 
} 
3. Bài tập: 
a. Kiểm tra dữ liệu nhập hợp lệ: 
i. Mã học sinh và tên học sinh phải khác null 
ii. Điểm trung bình phải nhập giá trị số 
iii. … 
b. Thực hiện chức năng khi người dùng nhập mã HS đã có, 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. 
c. Để 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” 
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. Khi nhập dữ liệu cho một control xong, 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. 
Tuy nhiên, đối với nhiều người dùng, 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, 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, KeyPressEventArgs e) 
 { 
 //Nếu nhấn phím enter 
 if (e.KeyChar == 13) 
 SendKeys.Send("{TAB}"); 
} 
e. Sinh viên tự phát triển tiếp để hoàn thiện chương trình trên 

File đính kèm:

  • pdfXây dựng phần mềm hướng đối tượng - Hướng dẫn thực hành tuần 3 ADO.NET.pdf
Tài liệu liên quan