Tải bản đầy đủ (.pdf) (16 trang)

Hướng dẫn thực hành lập trình Windows nâng cao phần cơ sở dữ liệu

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (832.11 KB, 16 trang )

Hướng dẫn thực hành - Lập trình Windows nâng cao phần CSDL
Trang 1/16


H
H
ư
ư


n
n
g
g


D
D


n
n


T
T
h
h


c


c


H
H
à
à
n
n
h
h


L
L


p
p


T
T
r
r
ì
ì
n
n
h

h


W
W
i
i
n
n
d
d
o
o
w
w
s
s


N
N
â
â
n
n
g
g


C

C
a
a
o
o


Khối: Cao Đẳng nghề và Trung Cấp
Năm 2009







Hướng dẫn:


Bài tập thực hành được chia làm nhiều Module

Mỗi Module được thiết kế cho thời lượng là 3 tiết thực hành tại lớp với sự
hướng dẫn của giảng viên.

Tùy theo số tiết phân bổ, mỗi tuần học có thể thực hiện nhiều Module.

Sinh viên phải làm tất cả các bài tập trong các Module ở tuần tương ứng.
Những sinh viên chưa hòan tất phần bài tập tại lớp có trách nhiệm tự làm
tiếp tục ở nhà.


Các bài có dấu (*) là các bài tập nâng cao dành cho sinh viên khá giỏi.

Hướng dẫn thực hành - Lập trình Windows nâng cao phần CSDL
Trang 2/16

Module 1

Nội dung kiến thức thực hành:
+Một số thuộc tính của các control
+Các đối tượng móc nối CSDL trong mô hình ADO.NET
+Thiết lập giao diện chương trình móc nối CSDL thông qua sự kết hợp giữa các
control

Bài 1.
Mục đích:

Sử dụng cho Sinh Viên nhớ lại cách tạo CSDL Access
Mô tả:

1) Hãy tạo CSDL sau: với tên là QLDiem.MDB trên ổ đĩa D :\ HoTenSinhVien\


Cấu trúc các bảng:
Hướng dẫn thực hành - Lập trình Windows nâng cao phần CSDL
Trang 3/16

















Nhập liệu theo thứ tự bảng cha trước con sau. Sinh Viên có thể nhập tên tùy ý nhưng Mã phải
chín xác:

Hướng dẫn thực hành - Lập trình Windows nâng cao phần CSDL
Trang 4/16















Hướng dẫn thực hành - Lập trình Windows nâng cao phần CSDL
Trang 5/16















Hướng dẫn thực hành - Lập trình Windows nâng cao phần CSDL
Trang 6/16


2)Sinh viên đánh giá thao tác nhập liệu Access như thế nào?
3) Giáo viên hướng dẫn đưa CSDL cho Sinh Viên làm cho thống nhất CSDL.
4) Sinh viên tạo Project với tên XemThongTin theo yêu cầu sau.


5) Xóa Form mặc định (Form1.cs) và thêm Form mới là frmChinh.cs, Đây là form MDI
Parent(Form cha). Cách tạo form như sau: vào menu Project->Add Windows Form, hộp thoại
Add New Item xuất hiên:




Chọn đối
tượng là MDI
Parent
Đặt tên form là frmChinh.cs
Hướng dẫn thực hành - Lập trình Windows nâng cao phần CSDL
Trang 7/16


Chọn Add chương trình sẽ tạo ra một form có giao diện mặc định như sau:


Hãy sửa đổi các Menu và Toolbar trên Form như hình sau:
Đặt tên cho các menu và toolbar Button tương ứng. Ví dụ: mnuFile, mnuFileDataGridView,




ợi ý:









6) Thêm 4 form form con vào Project với tên

+ frmSinhVien
Status bar hiển thị
ngày giờ hiện hành
Hướng dẫn thực hành - Lập trình Windows nâng cao phần CSDL
Trang 8/16
+ frmChonBang
+ frmUnboundSinhVien
+ frmTreeVaListKetHop
7) Viết lệnh tương ứng cho các Menu hiên lên các form tương ứng.
8) Thêm một class vào Project bằng cách vào menu Project->Add Class và đặt tên là
clsQuanLyDiemSV sau đó viết hàm Constructor(khởi tạo) và hàm GetdatasetmotTBL trả về mộ
Dataset nhưng chỉ chứa một bảng theo gợi ý sau.

Trước tiên cần khai báo hai dòng sau ở phần trên cùng của class để sử dụng đối
tượng móc nối CSDL:
using System.Data;
using System.Data.OleDb;

//Khai báo biến tòan cục dùng cho class
OleDbConnection con = new OleDbConnection();
//Đây là hàm không có giá trị trả về và sẽ tự động thực hiên khi gọi đối
//tượng(class) bằng từ khóa new instance

public clsQuanLyDiemSV()// constructor trùng tên ClS
{
//Đây là dòng lệnh kết nối với cơ sở dữ liệu SV
phải thuộc
con.ConnectionString =
"Provider=Microsoft.Jet.OleDb.4.0;Data Source=QLDiem.mdb";
//Mở cơ sở dữ liệu vừa kết nối

con.Open();
}

public DataSet getDataSet(string tableName)
{
/*Mục đích của hàm này là lấy dữ liệu từ bảng
* có tên là tableName đổ vào DataSet, dữ liệu
* trả về kiểu DataSet*/
//Khai báo các biến
string sql;
OleDbDataAdapter da = new OleDbDataAdapter();
OleDbCommand cmd = new OleDbCommand();
DataSet ds = new DataSet();

//Dùng câu lệnh SQL để lấy dữ liệu
sql = "select * from " + tableName;

//Gán kết nối cho cmd
cmd.Connection = con;
cmd.CommandType = CommandType.Text;
cmd.CommandText = sql;
da.SelectCommand = cmd;

//Đổ dữ liệu vào ds
Hướng dẫn thực hành - Lập trình Windows nâng cao phần CSDL
Trang 9/16
da.Fill(ds, tableName);

//Trả về ds sau khi đã có dữ liệu
return ds;

}

9) Áp dụng mô hình móc nối CSDL đưa dữ liệu lên form
frmSinhVien theo thiết kế sau.








10)
Xem hướng dẫn thực hiện trong giáo trình.

Yêu cầu:
Khi form vừa load lên thì hiện thông tin bảng SinhVien trong CSDL
Gợi ý:
Trước tiên cần phải khai báo một biến tòan cục kiểu clsQuanLyDiemSV tên là
obj:
clsQuanLyDiemSV obj = new clsQuanLyDiemSV();

Vào sụ kiên form load của form frmDataGridView nhập đọan code sau:
private void frmcon_Load(object sender, EventArgs e)
{
//Khai báo một biến kiểu DataSet
DataSet ds = new DataSet();

//Gọi lại hàm getDataSet của đối tượng obj để đổ dữ liệu
//từ bảng SinhVien vào ds

ds = obj.getDataSet("SinhVien");
//Gán bảng SinhVien vừa lấy ở ds vào DataGridView
//Kiểu dữ liệu của DataSource là một DataTable hoặc DataView
//Do đó chúng ta phải sử dụng properties ds.Tables[Bảng]
//với Bảng là tên của bảng truyền vào hoặc là một số chỉ ra vị
trí của bảng
//đổ ở trong ds
dgrView.DataSource = ds.Tables["SinhVien"];
//có thể dùng
//dgrView.DataSource = ds.Tables[0];
DataGridview (dgrSinhVien)
Hướng dẫn thực hành - Lập trình Windows nâng cao phần CSDL
Trang 10/16
}



10 ) Quay lại Class viết thêm hai hàm GetDataTable và GetDataSetAllTL như sau:

public DataTable getDataTable(string tableName)
{
/*Chỉ cần gọi lại hàm getDataSet ở trên và
* .Tables[tableName] hoặc .Tables[0]*/
return getDataSet(tableName).Tables[tableName];
}

public DataSet getDataSetAllDL()
{
OleDbDataAdapter daSV = new OleDbDataAdapter();
OleDbDataAdapter daLop = new OleDbDataAdapter();

OleDbDataAdapter daKhoa = new OleDbDataAdapter();
OleDbDataAdapter daDiem = new OleDbDataAdapter();
OleDbDataAdapter daMonHoc = new OleDbDataAdapter();
OleDbCommand cmd = new OleDbCommand();
DataSet ds = new DataSet();
cmd.Connection = con;
cmd.CommandType = CommandType.Text;

// Lấy bảng Sinh viên: \\
cmd.CommandText = "select * from SinhVien";
daSV.SelectCommand = cmd;
daSV.Fill(ds, "SinhVien");

// Lấy bảng Lớp: \\
cmd.CommandText = "select * from Lop";
daLop.SelectCommand = cmd;
daLop.Fill(ds, "Lop");

// Lấy bảng Khoa: \\
cmd.CommandText = "select * from Khoa";
daKhoa.SelectCommand = cmd;
daKhoa.Fill(ds, "Khoa");

// Lấy bảng Môn học: \\
cmd.CommandText = "select * from MonHoc";
daMonHoc.SelectCommand = cmd;
daMonHoc.Fill(ds, "MonHoc");
ds
0


1

2

3

4

SinhVien

Diem
MonHoc
Khoa
Lop
Bảng
Vị trí
trong ds
Hướng dẫn thực hành - Lập trình Windows nâng cao phần CSDL
Trang 11/16

// Lấy bảng Điểm: \\
cmd.CommandText = "select * from Diem";
daDiem.SelectCommand = cmd;
daDiem.Fill(ds, "Diem");

return ds;// ds đã chứa 5 bảng
}

11) Thiết kế lại form
frmChonBang

như sau
:















Yêu cầu:
+ Khi form vừa load hiện vào Combobox là tên các bảng
+ Chọn thông tin bảng nào trong Combobox thì hiện thông tin bảng đó vào
DataGridview
Gợi ý:
private void frmDGRViewChonBang_Load(object sender, EventArgs e)
{
DataSet ds = new DataSet();
//Lấy tất cả các bảng
ds = obj.getAllDataSet();

/*Duyệt qua từng bảng và lấy tên bảng đưa vào combobox*/
foreach (DataTable tbl in ds.Tables)

{
cboChonBang.Items.Add(tbl.TableName);
}

}

Đoạn code Đưa vào DataGridview:
private void cboChonBang_SelectedIndexChanged(object sender, EventArgs
e)
{
string tenbang;
DataTable tbl = new DataTable;
//Lấy ra tên bảng từ combobox
tenbang = cboChonBang.SelectedItem.ToString();

//Đổ dữ liệu của bảng này vào tbl
tbl = obj.getDataTable(tenbang);

DataGridview

Hướng dẫn thực hành - Lập trình Windows nâng cao phần CSDL
Trang 12/16
//gán tbl vào dataSource của DataGridView
dgrView.DataSource = tbl;

}






12)

Thiết kế form frmUnboundSinhVien như sau.

Binding data bằng kỹ thuật
UnBoundcontrol
.


Yêu cầu:
• Khi form load đổ dữ liệu từ bảng SinhVien vào Combobox sao cho text xuất hiện
trong Combobox là TenSV và khi chọn phải lấy được MaSV.
Hướng dẫn thực hành - Lập trình Windows nâng cao phần CSDL
Trang 13/16
• Khi chọn một sinh viên từ Combobox thì cho hiện thông tin của sinh viên đó vào
các label tương ứng.
Gợi ý:
• Vào class clsQuanLyDiemSV.cs soan hàm GetDataTableMotSvVtrả về kiểu DataTable
là một bảng chứa thông tin của sinh viên có MaSV bằng mã sinh viên truyền vào, đoạn code như
sau:
public DataTable getDataTableMotSV(string strma)
{
string sql;
OleDbDataAdapter da = new OleDbDataAdapter();
OleDbCommand cmd = new OleDbCommand();
DataSet ds = new DataSet();
sql = "select * from SinhVien where MaSV='" + strma + "'";
cmd.Connection = con;
cmd.CommandType = CommandType.Text;

cmd.CommandText = sql;
da.SelectCommand = cmd;
da.Fill(ds, "SinhVien");
return ds.Tables["SinhVien"];
• }


Trên form đổ dữ liệu vào Combobox bằng cách vào sự kiện form load của form
frmBoundControl nhập đọan code sau:
DataTable tbl = new DataTable();
//lấy dữ liệu từ bảng SinhVien
tbl = obj.getDataTable("sinhvien");
//Cho text hiện trong combobox là TenSV
cboSV.DisplayMember = "TenSV";
//Khi chọn thì dữ liệu trả về là MaSV
cboSV.ValueMember = "MaSV";
//Gán bảng vừa lấy vào combobox
cboSV.DataSource = tbl;


Hướng dẫn thực hành - Lập trình Windows nâng cao phần CSDL
Trang 14/16



• Ở sự kiên selectedIndexChanged của combobox viết như sau:
private void cboSV_SelectedIndexChanged(object sender, EventArgs e)
{
if (cboSV.SelectedValue != null)
{

DataTable tbl = new DataTable();
//tbl chỉ chứa được 1 row duy nhất
tbl = obj.GetDataTableMotSV(cboSV.SelectedValue.ToString());
BidingDataUBoundText(tbl);
}
}

• Soạn hàm BindingDataUBoundText như sau:
void BidingDataUBoundText(DataTable tbl)
{
DataRow drw;
drw = tbl.Rows[0];
lblma.Text= drw["MaSV"].ToString() ;
lblten.Text =drw["TenSV"].ToString() ;
lbldc.Text= drw["DiaChi"].ToString() ;
lblns.Text = drw[3].ToString() ; //lblns.Text=drw["NgaySinh"];

}





Hướng dẫn thực hành - Lập trình Windows nâng cao phần CSDL
Trang 15/16



13 *) Thiết và đưa dữ liệu vào
frmTreeVaListKetHop S

inh viên thiết kết form như sau


Gới ý và yêu cầu:
+ Thiết kế form có SplitContainer một bên Tree và một bên Listview (xem hình)
+ Ápdụng vòng lặp duyệt từng dòng đưa dữ liệu vào Treeview theo nguyên tắc
-

Nút gốc là mã SinhVien
-

Các nút con là thông tin các cột còn lại trong bảng SinhVien
+ Nhấn vào node gốc (Mã Sinh Viên) hiện thông tin điểm của sinh viên đó vào
Listview (xem hình).



14*) Về nhà Sinh Viên làm các bài tập trên nhưng móc nối với CSDL SQL
Gợi ý: Đưa nguồn dữ liệu CSDL SQL từ các bảng Access
15* Tương tự như bài 14 nhưng thay tree bằng giao diên flowlayout và node cha
(mã SV) thay bằng button động được tạo ra khi runtime. Chọn trên các button mã
SV thì cũng hiện thông tin qua listview như ài 14.
Hướng dẫn thực hành - Lập trình Windows nâng cao phần CSDL
Trang 16/16
Thiết kế có dạng

Khi chạy có dạng





Nhấn load DL vào
listview

×