Tài liệu thực hành Cơ sở dữ liệu nâng cao – Phân tích thiết kế hệ thống thông tin - Bài: Lập trình kết nối cơ sở dữ liệu – C#

C
Ơ
S
D
LI
U NÂNG CAO
PHÂN TÍCH THI
T K
HTTT  
Tháng 5/2014  
LP TRÌNH KT NI CSDL C#  
Tóm tt ni dung bài thc hành:  
- Gii thiu ADO.NET  
- ng dng minh ha  
Bmôn Hthng thông tin  
Khoa Công nghthông tin  
ĐH Khoa h
c t
nhiên TP HCM  
1 Mc tiêu và tóm tt ni dung  
Sau khi hoàn thành bài tp này sinh viên có th:  
- Xây dựng được mt ng dng (C#) window form kết ni CSDL vi các  
chức năng cơ bn  
2 Hướng dn cthể  
2.1 Gii thiu tng quan  
DataSet và DataTable  
- DataSet là trung tâm ca kiến trúc ADO.NET, mc tiêu là htrhiu quả  
thao tác trên dliu tnhiu nguồn, cũng như tương tác dữ liu trong  
mô hình ng dng nhiu lp (multiple tier). DataSet có thể được xem  
như là một cu trúc dliệu để lưu trdliu trong bnhchính.  
- DataSet cha mt tập các đối tượng DataTable (có cấu trúc logic tương  
tự như một bng trong CSDL), các ràng buc trên chúng và cmi quan  
hgia các bng này. Một đối tượng DataTable (hoc mt view ca nó -  
thuc lớp đối DataView), có thể được kết buc với các control như  
ComboBox, DataList, DataGrid, …  
- Các lớp đối tượng DataSet, DataTable, DataView, DataColumn,… nằm  
trong namespace System.Data  
DataProvider  
- Trong namespace System.Data có 3 namespace tương ứng vi 3 loi  
Data Provider: Data Provider for SQL Server (System.Data.SqlClient),  
Data Provider for ODBC (System.Data.Odbc) và Data Provider for OLE  
DB (System.Data.OleDb). Ở đây ta sdng SQL Server, nên ssdng  
trc tiếp Data Provider for SQL Server (tất nhiên ta cũng có thể thông  
qua Provider for ODBC hoặc OLE DB đthao tác vi CSDL SQL Server).  
- Các lớp đối tượng chính để kết ni và thao tác vi CSDL nm trong  
namespace System.Data.SqlClient là: SqlConnection, SqlCommand,  
Bmôn Hthng thông tin | Khoa CNTT | ĐH KHTN TP HCM | 1/2013 Trang 1  
     
SqlDataReader, SqlDataAdapter. (Tương tự đối vi hai Provider còn  
li).  
SQLConnection  
Một đối tượng thuc lp này thhin mt kết nối đến CSDL. Các thông số để  
kết nối được chỉ định trong Connection String  
Ví d:  
ConnectionString = “Data Source = .; Initial Catalog = Northwind;  
Integrated Security = SSPI” //dùng Window Authentication  
hoc :  
ConnectionString = “Data Source = .; Initial Catalog = Northwind;  
User ID = ws01; Password = ”  
(dấu “.” chỉ local host)  
SQLCommand  
Một đối tượng thuc lp này thhin mt lnh thc thi trên HTQ CSDL. Có  
ththiết lp thuc tính CommandType của đối tượng Command để chra  
lệnh được khai báo dng text hay là tên stored procedure.  
SQLDataReader  
Lớp đối tượng dùng để đọc kết qutruy vấn được tCSDL. Có thxem  
SqlDataReader là mt RecordSet chcó thể đọc và đọc tun tmt chiu.  
SQLDataAdapter  
Một đối tượng Data Adapter có thể xem như mt cu ni gia DataSet và  
CSDL, để chuyn dliu tCSDL vào DataSet và cp nht nhng thay đổi  
trên DataSet trli vào CSDL  
2.2 Trình tthao tác CSDL vi ADO.Net  
- To lp và thiết lp các thông số cho đối tượng Connection (nếu chưa  
thiết lập trước đó)  
- Mkết ni bằng phương thức Open của đối tượng Connection  
 
- Thc hin các công vic đọc/ghi vi CSDL va kết ni ti  
- Đóng kết ni  
Lưu ý:  
Không phi luôn luôn mở và đóng kết ni mi khi thc hin mt lnh,  
có thmkết ni mt ln và thc hin nhiu lệnh trước khi đóng nó.  
Luôn sdụng try và catch để bt các li phát sinh tCSDL khi thc  
hin các lnh mkết ni hoc thc thi lệnh trong đối tượng  
command, nếu có li hin thị thông đip li dhiu cho NSD  
2.3 Đọc dliu  
Trong phn này chmô tmt số điểm cần lưu ý, sinh viên tự tìm hiu cách thc  
hin cthtrong các ví dụ và ebook đưc cung cp hoc MSDN.  
DataReader  
- DataReader là mt cách tt (tiết kim tài nguyên - bnhớ) để đọc dữ  
liệu trong trường hp chcn ly dliệu để hin th, không cn thao tác  
phc tp hay thao tác trên nhiu tp dliu (không cần đến datatable  
hay dataset)  
DataAdapter  
- Như đã nói ở trên, ta có thsdụng DataAdapter như là một cu nối để  
ly dliu tCSDL vào DataSet. Ta có thể định nghĩa hoặc không định  
nghĩa trước bảng (đối tượng DataTable) và cu trúc ca bng snhn  
dliu. Nếu lnh trvn tp dliu, n bảng tương ứng sẽ được to ra  
trong dataset đcha các tp dliu này.  
- Để ly dliu, ta sdụng phương thức Fill của đối tượng DataAdapter.  
Phương thức này có nhiu overload, htrnhiu cách truyn tham số  
(DataSet, DataTable, DataSet và tên DataTable, …).  
- Phương thức Fill có thể được gi mà không cn mkết nối trước, trong  
trường hp này, kết nối tương ứng sẽ được mở và đóng lại ngay sau khi  
thc hin xong vic ly dliu.  
Bmôn Hthng thông tin | Khoa CNTT | ĐH KHTN TP HCM | 1/2013 Trang 3  
 
- Ghi chú: Trong trường hp mun dliệu đổ vào đối tượng DataTable  
tha ràng buc khóa chính (tự động loi bdliu trùng trên khóa  
chính nếu có), có ththiết lp thuc tính MissingSchemaAction của đối  
tượng DataAdapter là AddWithKey. Tuy nhiên, thiết lp la chn này sẽ  
làm chậm đáng kể quá trình đọc dliu, thay vào đó, nếu có thnên  
định nghĩa trước cu trúc và khóa chính của đối tượng DataTable này,  
rồi đọc bình thưng, tác dụng cũng sẽ tương tự.  
ExecuteScalar  
- Trong trường hp câu truy vn chtrvmt giá tr, sdụng phương  
thc ExecuteScalar của đối tượng Command để thc thi truy vn và  
nhn giá trtrv.  
- Ghi chú: Trong trường hp gi thc thi mt thtc (vi CommandType  
là stored procedure), giá trca các tham soutput khai báo trong  
Parameters ca Command sẽ được cp nhật tương ng  
2.4 Ghi dliu  
ExecuteNonQuery  
- Cách thông dng nhất để ghi dliệu là đưa trực tiếp các lnh cp nht  
dliu (Insert, Update, Delete, lnh tạo các đối tượng trong CSDL) (và  
hu hết các lnh T-SQL khác), hoc tên ca stored procedure thc hin  
các công vic này vào một đối tượng Command, sau đó gọi phương thức  
ExecuteNonQuery của đối tượng Command để thc hin.  
DataAdapter  
- DataAdapter thc hin cp nht CSDL theo cách ánh xnhững thay đổi  
trên DataSet vào CSDL (thành các thao tác insert, update, delete tương  
ng)  
- Cơ sở ca vic ánh xnày là vic qun lý tình trng ca các dòng  
(DataRow) trong DataTable, thhin qua thuc tính RowState. Khi mt  
dòng trong DataTable được thêm, xóa, cp nht, nó scó trng thái  
tương ứng là Inserted, Deleted, và Updated, sau khi phương thức  
AcceptChanges được gi, nó trli trng thái UnChanged.  
 
- Để thc hin cp nht ta gán InsertCommand, DeleteCommand và  
UpdateCommand cho đối tượng DataAdapter, sau đó gọi phương thức  
Update của nó. Khi đó, tất cnhững thay đổi trên DataSet sẽ được ánh  
xvề CSDL theo cách mà được chỉ định trong các Commands.  
- Phương thức Update của DataAdapter cũng có nhiều overload, cho  
phép ta la chn Update mt dòng, mt table hay toàn bDataSet.  
2.5 Ví dụ  
Cho CSDL QLSV vi 2 bảng LOPHOC và SINHVIEN như hình:  
Thiết kế form Danh sách sinh viên gm combobox Lp hc và datagridview  
danh sách sinh viên như hình dưới:  
Bmôn Hthng thông tin | Khoa CNTT | ĐH KHTN TP HCM | 1/2013 Trang 5  
 
Xây dng ng dng QLSV trên .Net Framework 4.5 vi các chức năng: xem  
danh sách sinh viên ca mi lp hc, thêm/xóa sinh viên khi lp hc. ng  
dụng được thiết kế theo kiến trúc 3 lp (GUI, BUS, DAO).  
Hàm KetNoiCSDL (AbstractDAO.cs) sdụng đối tượng SqlConnection vi  
chui kết nối được lưu ở file App.config là: "Data Source=.; Initial Catalog=QLSV;  
Trusted_Connection=True"  
Load danh sách lp hc vào comboxbox  
- Skin load form Danh sách sinh viên gi hàm  
HienThiDanhSachLopHoc để load danh sách các lp hc trong CSDL vào  
combobox Lp hc  
- Hàm LayDanhSachLopHoc (LopHocDAO.cs) sdụng đối tượng  
SqlDataAdapter để đổ dliu trong bảng LOPHOC vào đối tượng  
DataSet  
- Danh sách các lp học trong CSDL được load vào combox Lp hc khi  
form Danh sách sinh viên được load lên  
Load danh sách sinh viên ca mi lp hc  
Bmôn Hthng thông tin | Khoa CNTT | ĐH KHTN TP HCM | 1/2013 Trang 7  
- Skin click chn mt lp trong danh sách lp combobox Lp hc  
gọi hàm HienThiDanhSachSinhVien để load danh sách các sinh viên  
thuc lp học đó vào datagridview  
- Hàm LayDanhSachSinhVienTheoLop (SinhVienDAO.cs) cũng sử dng  
đối tượng SqlDataAdapter để đổ dliu trvvào đối tượng DataSet  
- Danh sách các sinh viên ca mi lp học được load vào datagridview  
Thêm sinh viên vào lp hc  
Thêm sinh viên tên HHoàng Ánh vào lp TH2005. Skin click button  
Thêm sgi hàm ThemSinhVien (SinhVienDAO.cs)  
Bmôn Hthng thông tin | Khoa CNTT | ĐH KHTN TP HCM | 1/2013 Trang 9  
Xóa sinh viên khi lp hc  
Chn sinh viên tên Nguyen Van B và xóa khi lp TH2005/02. Skin click  
button Xóa sgi hàm XoaSinhVien (SinhVienDAO.cs)  
3 Bài tp vnhà  
Sinh viên txây dng li ng dng QLSV vi các chức năng trong bài hướng  
dn, suy nghĩ và phát trin mt schức năng khác cho ứng dng.  
HT  
Bmôn Hthng thông tin | Khoa CNTT | ĐH KHTN TP HCM | 1/2013  
Trang  
11  
 
pdf 13 trang myanh 29/04/2022 7200
Bạn đang xem tài liệu "Tài liệu thực hành Cơ sở dữ liệu nâng cao – Phân tích thiết kế hệ thống thông tin - Bài: Lập trình kết nối cơ sở dữ liệu – C#", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

File đính kèm:

  • pdftai_lieu_thuc_hanh_co_so_du_lieu_nang_cao_phan_tich_thiet_ke.pdf