Bài giảng Lập trình trên môi trường Windows - Chương 6: Các đối tượng trong ADO.NET - Dương Thành Phết

NỘI DUNG

1.Đối tượng Connection

2.Đối tượng Command

3.Đối tượng DataReadder

4.Đối tượng Dataset

5.Đối tượng DataAdapter

6.Giao tiếp CSDL theo mô hình 1 lớp

7.Giao tiếp CSDL theo mô hình 1 lớp

pdf 51 trang phuongnguyen 6660
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Lập trình trên môi trường Windows - Chương 6: Các đối tượng trong ADO.NET - Dương Thành Phết", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

Tóm tắt nội dung tài liệu: Bài giảng Lập trình trên môi trường Windows - Chương 6: Các đối tượng trong ADO.NET - Dương Thành Phết

Bài giảng Lập trình trên môi trường Windows - Chương 6: Các đối tượng trong ADO.NET - Dương Thành Phết
1 
Chương 6: 
CÁC ĐỐI TƯỢNG TRONG ADO.NET 
 Giảng Viên: ThS. Dương Thành Phết 
 Email: phetcm@gmail.com – YahooID: phetcm 
 Website:  
 Tel: 0918158670 
2 
NỘI DUNG 
1.Đối tượng Connection 
2.Đối tượng Command 
3.Đối tượng DataReadder 
4.Đối tượng Dataset 
5.Đối tượng DataAdapter 
6.Giao tiếp CSDL theo mô hình 1 lớp 
7.Giao tiếp CSDL theo mô hình 1 lớp 
3 
 Vai trò của Connection trong ADO.net là tạo kết nối 
giữa ứng dụng với CSDL. 
 Khi cthực hiện kết nối cần xác định các thông tin 
cho Connection thông qua thuộc tính Connection 
String. Tùy thuoc vào Data Provider 
 Với SQLServer 
• Server name 
• Database name 
• User name 
• Password 
 Với Access 
• Database name 
• User name 
• Password 
1. ĐỐI TƯỢNG CONNECTION 
4 
 Thuộc tính 
 ConnectionString: Chuỗi kết nối DataSource 
 State: Tình trạng kết nối: Connecting (đang kêt 
nối), Open (đã. kêt nối), Broken (kết nối bị ngắt khi 
đã kết nối), Closed (kết nối đã đóng) . . . 
 Phương thức 
 Open(): Thiết lập kết nối đến DS 
 Close(): Đóng kết nối với DS 
1. ĐỐI TƯỢNG CONNECTION 
5 
Các bước tạo kết nối 
 Bước 1: Khởi tạo đối tượng Connection với tham số 
connection string đối với database tương ứng. 
 Bước 2: Thiết lập kết nối đến database bằng phương 
thức Open. 
 Bước 3: Thực hiện các thao tác khai thác dữ liệu 
(select, insert, delete, update) từ database. 
 Bước 4: đóng kết nối đến database bằng phương 
thức Close. 
1. ĐỐI TƯỢNG CONNECTION 
6 
using System.Data.SqlClient; 
.... 
SqlConnection cnn = new SqlConnection(); 
cnn.ConnectionString = 
server=localhost; database=Northwind; uid=sa; pwd=sa"; 
 cnn.Open(); //Mở kết nối 
//xử lý trong quá trình kết nối 
cnn.Close(); //Đóng két nối 
1. ĐỐI TƯỢNG CONNECTION 
Sử dụng tên miền: System.Data.SqlClient; 
Server: Chỉ định tên máy chứa Database 
Database: Chỉ định tên cơ sở dữ liệu 
Uid: Tên tài khỏan đăng nhập SQLServer (nếu có) 
Pwd: Mật khẩu đăng nhập (nếu có) 
Tạo kết nối với SQLServer (cách 1) 
7 
using System.Data.SqlClient; 
.... 
SqlConnection cnn = new SqlConnection(); 
cnn.ConnectionString = “Data Source=localhost; 
Initial Catalog=Northwind; UserId=sa; Password=sa” 
 cnn.Open(); //Mở kết nối 
//xử lý trong quá trình kết nối 
cnn.Close(); //Đóng két nối 
1. ĐỐI TƯỢNG CONNECTION 
DataSource: Chỉ định tên máy chứa Database 
Initial Catalog: Chỉ định tên cơ sở dữ liệu 
Userid: Tên tài khỏan đăng nhập SQLServer (nếu có) 
Password: Mật khẩu đăng nhập (nếu có) 
Tạo kết nối với SQLServer (cách 2) 
8 
using System.Data.OleDb; 
.... 
OleDBConnection cnn = new OleDbSqlConnection(); 
cnn.ConnectionString = “Provider = Microsoft.Jet.OLEDB.4.0; 
Data Source=QLHOCSINH.MDB"; 
cnn.Open(); 
//xử lý trong quá trình kết nối 
cnn.Close(); 
Tạo kết nối với MS Access 
Đối với MS Access 2007/2010 thì Provider=Microsoft.ACE.OLEDB.12.0 
1. ĐỐI TƯỢNG CONNECTION 
9 
Minh họa: 
1. ĐỐI TƯỢNG CONNECTION 
using System.Data.SqlClient; 
.... 
SqlConnection cnn = new SqlConnection(); 
 private void btLogin_Click(object sender, EventArgs e) 
 { 
 String Tenmay = txtServername.Text; 
 String TenDN = txtUsername.Text; 
 String Matkhau = txtPassword.Text; 
 String TenCSDL = txtDatabasename.Text; 
 cnn.ConnectionString = "Server=" + Tenmay + "; Database=" + TenCSDL + " ; 
 User Id=" + TenDN + "; Password= " + Matkhau; 
 try 
 { 
 cnn.Open(); 
 MessageBox.Show("Kết nối thành công", "Thông báo"); 
 cnn.Close(); 
 } 
 catch 
 { 
 MessageBox.Show("Kết nối thất bại", "Thông báo"); 
 } 
 } 
10 
2. ĐỐI TƯỢNG COMMAND 
 Quá trình tương tác với database cần phải biết 
hành động nào muốn xảy ra. Điều này được thực 
hiện bởi đối tượng command. 
 Dùng đối tượng command để gửi một câu lệnh SQL 
tới database. 
 Một đối tượng command dùng một đối tượng 
connection để xác định database nào sẽ được truy 
xuất. 
 Có thể dùng một đối tượng command riêng lẻ để 
thực thi lệnh trực tiếp, hoặc gắn cho một 
SqlDataAdapter 
11 
 Thuộc tính: 
 Connection:Kết nối để thực hiện lệnh 
 CommandText:Câu lệnh cần thực hiện 
 CommandType:Loại câu lệnh (Text, TableDirect, 
StoredProc) 
 Phương thức: 
 ExecuteScalar(): Thực hiện lệnh và trả về giá trị đơn 
 ExecuteNonQuery(): Gọi các lệnh SQL, store, trả về số 
row bị tác động (Insert, Update, Delete) 
 ExecuteReader():Thực hiện lệnh và trả về DataReader 
2. ĐỐI TƯỢNG COMMAND 
12 
SqlConnection cnn = new SqlConnection(); 
cnn.ConnectionString = “Data Source=localhost; 
Initial Catalog=QLsinhvien; User Id=sa; Password=sa” 
 cnn.Open(); //Mở kết nối 
SqlCommand cmd = new SqlCommand(); 
cmd.Connection = cnn; 
cmd.CommandText = 
“Select Count(*) From TableName”; 
int n = (int) cmd.ExecuteScalar(); 
cnn.Close(); 
2. ĐỐI TƯỢNG COMMAND 
 SQL Command với câu lệnh Select 
13 
. . . . . 
SqlCommand cmd = new SqlCommand(); 
cmd.Connection = cnn; 
String MaMH = txtMaMH.Text; 
String TenMH = txtTenMH.Text; 
int Sotiet = int.Parse(txtSotiet.Text); 
cmd.CommandText = "Insert into Monhoc(MaMH,TenMH, Sotiet) 
values('" + MaMH + "',N'" + TenMH +"'," + Sotiet +")"; 
cmd.ExecuteNonQuery(); 
2. ĐỐI TƯỢNG COMMAND 
 SQL Command với câu lệnh Insert, Update, Delete 
14 
3. ĐỐI TƯỢNG DATAREADER 
 Nhiều thao tác dữ liệu chỉ lấy một luồng dữ liệu để 
đọc. Đối tượng data Reader cho phép lấy được kết 
quả của câu lệnh SELECT từ đối tượng command. 
 Để tăng hiệu suất, dữ liệu trả về từ một data reader 
là một luồng dữ liệu fast forward-only có lợi về mặt 
tốc độ. 
 Là đối tượng truy cập dữ liệu trực tiếp sử dụng con 
trỏ phí Server và duy trì kết nối trong suốt quá trình 
đọc dữ liệu. 
 Tuy nhiên nếu phải thao tác dữ liệu, thì một DataSet 
sẽ là một đối tượng tốt hơn để làm việc 
15 
3. ĐỐI TƯỢNG DATAREADER 
Các thuộc tính 
 FieldCout: Số cột trên dòng hiện hành của 
DataReader 
 IsClosed: Cho biết dataReader đã đóng 
 Item: Trị của cột truyền vào. Tham số truyền vào là 
tên cột (hoặc số thứ tự từ 0) 
16 
3. ĐỐI TƯỢNG DATAREADER 
Các phương thức 
 Close: Đóng DataReader 
 GetFieldType: Trả về kiểu dữ liệu của cột truyền vào. 
 GetName: Trả về tên của cột truyền vào 
 GetValue: Trả về trị của cột truyền vào 
 Read : Di chuyển đến dòng kế tiếp và trả về true nếu 
còn dòng để di chuyển, ngược lại trả về False. 
 Trong khi dataReader đang mở các thao tác dữ 
liệu trên nguồn dữ liệu đều không thể cho đến khi 
dataRaeder đóng lại bằng lệnh Close. 
17 
3. ĐỐI TƯỢNG DATAREADER 
. . . . . 
SqlCommand cmd = new SqlCommand(); 
cmd.Connection = cnn; 
cmd.CommandText = "Select * From Monhoc"; 
cmd.CommandType = CommandType.Text; 
SqlDataReader dr ; 
dr = cmd.ExecuteReader(); 
lstMonhoc.Items.Clear(); 
while (dr.Read()) 
 lstMonhoc.Items.Add(dr["TenMH"]); 
18 
4. DATA ADAPTER 
4.1. Giới thiệu 
 Để lầy dữ liệu từ nguồn dữ liệu vầ cho ứng dụng, 
chúng ta sử dụng một đối tượng gọi là DataAdapter. 
Đối tượng này cho phép ta lấy cấu trúc và dữ liệu 
của các bảng trong nguồn dữ liệu. 
 DataAdapte là một bộ gồm 4 đối tượng command: 
 SelectCommand: Cho phép lấy thông tin từ nguồn. 
 InsertCommand: Cho phép thêm dữ liệu vào bảng. 
 UpdateCommand: Cho phép điều chỉnh dữ liệu 
của bảng. 
 DeleteCommand: Cho phép xóa dữ liệu của bảng. 
19 
4. DATA ADAPTER 
 Đôi khi cần làm việc ở chế độ read-only và ít khi cần 
thay đổi dữ liệu nguồn, cần lưu trữ tạm dữ liệu trong 
bộ nhớ để hạn chế truy xuất đến database. Data 
adapter làm điều này dễ dàng bằng cách giúp quản lý 
dữ liệu trong chế độ ngắt kết nối. 
 Data Adapter sẽ đổ vào DataSet khi đọc dữ liệu và 
thực hiện thay đổi dữ liệu một lượt vào database. 
Data adapter chứa một tham chiếu đến đối tượng 
connection và mở/đóng kết nối tự động khi đọc và ghi 
dữ liệu vào database. 
20 
4. DATA ADAPTER 
4.2. Tạo DataAdapter 
DataAdapter = 
 new DataAdapter(Lệnh, biến connnection); 
Với SQLSever: 
sqlDataAdapterDataAdapter = 
new SQLDataAdapter(Lệnh, biến connection); 
DataAdapter chỉ thao tác với một nguồn dữ liệu qua một 
đối tượng connection đang kết nối, khi Connection chưa 
mở thì DataAdapter sẽ tự động mở kết nối khi cần và 
đóng lại. 
21 
4. DATA ADAPTER 
4.3. Các thuộc tính của DataAdapter 
 DeleteCommand: Đối tượng Command chứa nội 
dung lệnh hủy các mẫu tin trên nguồn dữ liệu. 
 InsertCommand: Đối tượng Command chứa nội dung 
lệnh thêm các mẫu tin trên nguồn dữ liệu. 
 SelectCommand: Đối tượng Command chứa nội 
dung lệnh truy xuất các mẫu tin trên nguồn dữ liệu. 
 UpdateCommand: Đối tượng Command chứa nội 
dung lệnh sửa các mẫu tin trên nguồn dữ liệu. 
22 
4. DATA ADAPTER 
4.4. Các chức năng của DataAdapter 
 Lấy dữ liệu từ nguồn: Sử dụng DataAdapter để lấy dữ 
liệu về cho các đối tượng 
 DataTable: Fill() 
 DataSet: Fill() 
 Dữ liệu lấy về DataSet dưới dạng các dataTable 
với tên mặc định là: Table0,Table1, Table2. . .: 
 Đổ dữ liệu vào Datset cho bảng DataTable nếu 
chưa có sẽ tạo mới: 
 Fill(,) 
23 
4. DATA ADAPTER 
 Lấy dữ liệu từ nguồn: Sử dụng DataAdapter để lấy dữ 
liệu về cho các đối tượng 
 DataTable: Fill() 
 DataSet: Fill() 
 Dữ liệu lấy về DataSet dưới dạng các dataTable 
với tên mặc định là: Table0,Table1, Table2. . .: 
 Đổ dữ liệu vào Datset cho bảng DataTable nếu 
chưa có sẽ tạo mới: 
 Fill(,) 
24 
4. DATA ADAPTER 
 Phương thức trả về mẫu tin lấy được 
 Dataset DS as New Dataset() 
 Integer so; 
 so= DA.Fill(DS,”Sinhvien”) 
 Để cập nhật dữ liệu về nguồn 
Update(): Cập nhật các dòng (Các 
đối tượng DataRow) vào nguồn dữ liệu. 
Update(): Cập nhật các thay đổi trên 
tất cả các bảng của Dataset vào nguồn dữ liệu. 
Update(): Cập nhật tất cả các thay 
đổi trên DataTable vào nguồn dữ liệu. 
Update(,) Cập nhật các 
thay đổi trên bảng trong Dataset vào nguồn. 
25 
5. DATASET 
5.1. Giới thiệu 
 Dataset là một mô hình CSDL quan hệ thu nhỏ đáp 
ứng nhu cầu của ứng dụng. 
 Dataset chứa các bảng (DataTable) các quanhệ 
(DataRelation) và các ràng buộc (constraint) 
 Trong DataTable có nhiều column và row. Như các 
Database thông thường. 
26 
5. DATASET 
5.2. Khai báo 
DataSet = new DataSet(); 
Ví dụ: 
DataSet ds = new DataSet(); 
27 
5. DATASET 
5.3. Các phương thức 
 Thêm một bảng vào Dataset 
 Tables.Add() 
 Một bảng mới tự động được tạo ra với tên mặc định 
Table1, Table2 . . . 
 Tables.Addd() 
 Xóa bảng ra khỏi Dataset 
 Tables.Remove() 
 Kiểm tra bảng có thuộc về Dataset 
 Tables.Contains() 
 Lấy chỉ số của bảng 
 Tables.IndexOf() 
28 
5. DATASET 
5.3. Các phương thức 
 Lấy số bảng trong Dataset 
 Tables.Count 
 Lấy ra một bảng trong Dataset 
 Tables() 
 Để cập nhật các thay đổi trên Dataset 
 AcceptChanges() 
 Để hủy các thay đổi trên Dataset 
 RejectChanges() 
 Để xóa bỏ mọi dữ liệu trên dataSet 
 Clear() 
 Để tạo một bản sao của Dataset 
 Clone() 
29 
5. DATASET 
5.3. Các phương thức 
 Để xóa bỏ Dataset 
 Gọi phương thức Dispone() để giải phóng mọi tài 
nguyên trên vùng nhớ Dataset đang sử dụng. 
 Tạo quan hệ giữa hai bảng trong Dataset. 
 Relations.Add(, 
) 
 Xóa quan hệ giữa hai bảng trong Dataset. 
 Relations.Remove() 
30 
5. DATASET 
 Có thể định nghĩa dữ liệu giữa các table để tạo các 
quan hệ. 
 DataSet được thiết kế đặc biệt để giúp quản lý dữ liệu 
không cần kết nối (disconnected) trên dữ liệu. 
 Nhờ đối tượng DataAdapter làm trung gian 
 DataSet là một đối tượng được dùng bởi tất cả Data 
Provider. 
31 
6. GIAO TIẾP CSDL VỚI MÔ HÌNH 1 LỚP 
Để load thông tin của nhân viên từ table NHANVIEN cũng 
như là thêm, sửa, xóa,.. thì ta cần thực hiện như sau 
32 
6. GIAO TIẾP CSDL VỚI MÔ HÌNH 1 LỚP 
33 
6. GIAO TIẾP CSDL VỚI MÔ HÌNH 1 LỚP 
34 
6. GIAO TIẾP CSDL VỚI MÔ HÌNH 1 LỚP 
 Qua đây, chúng ta thấy rằng khi dùng mô hình 1 lớp 
kết nối CSDL thì không có sự phân loại trong khi cài 
đặt. 
 Code xử lý CSDL, code xử lý nghiệp vụ và code xử 
lý thể hiện nằm chung với nhau, làm chương trình 
rất khó quản lý. 
 Để khắc phục các nhược điểm trên, chúng ta 
chuyển sang mô hình 3 lớp 
35 
7. GIAO TIẾP CSDL VỚI MÔ HÌNH 3 LỚP 
Ta xây dựng 3 lớp như sau cho NHANVIEN: 
 Lớp thao tác CSDL : Database.cs 
 Lớp xử lý nghiệp vụ : NhanVien.cs 
 Lớp xử lý giao diện : frmNhanvien.cs 
36 
7. GIAO TIẾP CSDL VỚI MÔ HÌNH 3 LỚP 
Bước 1: Xây dựng lớp thao tác CSDL Database.cs 
 Chức năng: Lớp Database đảm nhiệm việc giao tiếp 
với cơ sở dữ liệu cho toàn ứng dụng. Tất cả việc 
tương tác với CSDL dữ liệu diễn ra ở bất cứ nơi nào 
trong ứng dụng đều được thực hiện thông qua lớp 
này. 
 Mục đích: Sở dĩ chúng ta phải xây dựng lớp này là 
nhằm mang lại tính dễ bảo trì cũng như tính tiến hóa 
cho hệ thống. Nếu sau này cần thay đổi môi trường 
ứng dụng (sang Oracle, Access, Db2 ...) thì chúng ta 
chỉ việc chỉnh sửa lớp Database này mà không cần 
quan tâm đến phần còn lại của ứng dụng 
37 
7. GIAO TIẾP CSDL VỚI MÔ HÌNH 3 LỚP 
Thuộc tính Ý nghĩa 
sqlconn Thuộc lớp SqlConnection 
Phương thức Ý nghĩa 
Database Hàm khởi tạo (Constructor) 
Execute Thực thi một câu lệnh truy vấn và trả về kết 
quả là một DataTable. Dùng cho các câu lệnh 
Select ... 
ExecuteNonQuery Thực thi một câu lệnh không quan tâm đến kết 
quả trả về. Dùng cho các câu lệnh Insert, 
Delete, Update ... 
38 
7. GIAO TIẾP CSDL VỚI MÔ HÌNH 3 LỚP 
Right-Click project ThuVien, chọn Add Class 
39 
7. GIAO TIẾP CSDL VỚI MÔ HÌNH 3 LỚP 
Nhập vào tên lớp là Database.cs và click Add. 
40 
7. GIAO TIẾP CSDL VỚI MÔ HÌNH 3 LỚP 
Viết code cho Database.cs như sau: 
41 
7. GIAO TIẾP CSDL VỚI MÔ HÌNH 3 LỚP 
42 
7. GIAO TIẾP CSDL VỚI MÔ HÌNH 3 LỚP 
Bước 2 : Xây dựng lớp xử lý nghiệp vụ cho Nhân viên: Nhanvien.cs 
43 
7. GIAO TIẾP CSDL VỚI MÔ HÌNH 3 LỚP 
44 
7. GIAO TIẾP CSDL VỚI MÔ HÌNH 3 LỚP 
Bước 3: Xây dựng lớp xử lý giao diện cho frmNhanVien.cs 
Thiết kế giao diện như sau, đặt tên là frmNhanVien 
45 
7. GIAO TIẾP CSDL VỚI MÔ HÌNH 3 LỚP 
46 
7. GIAO TIẾP CSDL VỚI MÔ HÌNH 3 LỚP 
47 
7. GIAO TIẾP CSDL VỚI MÔ HÌNH 3 LỚP 
48 
7. GIAO TIẾP CSDL VỚI MÔ HÌNH 3 LỚP 
49 
7. GIAO TIẾP CSDL VỚI MÔ HÌNH 3 LỚP 
50 
7. GIAO TIẾP CSDL VỚI MÔ HÌNH 3 LỚP 
51 

File đính kèm:

  • pdfbai_giang_lap_trinh_tren_moi_truong_windows_chuong_6_cac_doi.pdf