Khoa CNTT
CNPM
LẬP TRÌNH KẾT NỐI CSDL
ADO.NET
Phạm Hoàng Hải
C4W - 1
Khoa CNTT
CNPM
1. NỘI DUNG
Tổng quan về ADO.Net
Mô hình kết nối
Mô hình phi kết nối
Phạm Hoàng Hải
C4W - 2
Khoa CNTT
CNPM
2. TỔNG QUAN VỀ ADO.NET
Các thế hệ của lập trình kết nối CSDL
Phạm Hoàng Hải
C4W - 3
Khoa CNTT
CNPM
2. TỔNG QUAN VỀ ADO.NET
M C TIÊU BÀI HỌC
Tìm hiểu về ADO.Net
Các mô hình kết nối CSDL
(Connected & Disconnected)
Dùng VS.Net (VB.Net) xây dựng ứng
dụng kết nối CSDL ADO.Net
ADO.NET
Phạm Hoàng Hải
C4W - 4
Khoa CNTT
CNPM
2. TỔNG QUAN VỀ ADO.NET
GIỚI THIỆU
ADO.NET là một tập các lớp thư viện
được sử dụng để truy xuất dữ liệu
Thêm/xóa/sửa dữ liệu
Đọc dữ liệu
Chương trình
CSDL, XML…
Nằm trong bộ thư viện các lớp cơ sở
của .Net Framework
Phạm Hoàng Hải
C4W - 5
Khoa CNTT
CNPM
2. TỔNG QUAN VỀ ADO.NET
VỊ TRÍ C A ADO.NET
ADO.NET là thành phần nội tại của
.Net Framework có thể sử dụng
trong các ngôn ngữ hỗ trợ .Net (C#,
VB.Net, ...)
ASP.NET
Windows Forms
Class Framework
Drawing
XML
Data
ADO.NET
Comman language Runtime
System Services
Các lớp ADO.Net đặt trong
System.Data
Chức năng và cách sử dụng hoàn
toàn giống nhau.
Phạm Hoàng Hải
C4W - 6
Khoa CNTT
CNPM
2. TỔNG QUAN VỀ ADO.NET
ADO vs ADO.Net
Phạm Hoàng Hải
C4W - 7
Khoa CNTT
CNPM
2. TỔNG QUAN VỀ ADO.NET
ADO vs ADO.Net
ADO kết nối CSDL tốt, nhưng
Xử lý kết nối CSDL qua Internet khó
khăn và không tốt.
ADO.Net
Đòi hỏi kết nối chuẩn COM và
Windows
Tích hợp chặt chẽ với XML
Làm việc tốt trên môi trường Internet.
ADO.Net là sự cải tiến của ADO
Khác biệt nhau ở mô hình (COM vs
XML)
Giống nhau về các chức năng.
Phạm Hoàng Hải
C4W - 8
Khoa CNTT
CNPM
2. TỔNG QUAN VỀ ADO.NET
ADO vs ADO.Net
Khác biệt
về mô hình
Phạm Hoàng Hải
Thuận lợi/khó
khăn kết nối
Internet
C4W - 9
Khoa CNTT
CNPM
2. TỔNG QUAN VỀ ADO.NET
.Net DATA PROVIDER
.NET Data Provider
Dùng để kết nối đến CSDL, thực hiện
các câu lệnh, và nhận kết quả trả về.
Hiện có 3 loại data provider chính
ODBC
ODBC Driver
OLE DB Provider
OLE DB
RDBMS
SQL Provider
Command
OLE DB
Application
Connection
ODBC
RDBMS
SQL SERVER
.NET Data Provider
Data Reader
Data Adapter
Phạm Hoàng Hải
SQL
Server
C4W - 10
Khoa CNTT
CNPM
2. TỔNG QUAN VỀ ADO.NET
CÁC LỚP ĐỐI TƯỢNG TRONG
ADO.NET
.NET Data Provider
Các thành phần của .NET Data
Provider
Phạm Hoàng Hải
C4W - 11
Khoa CNTT
CNPM
2. TỔNG QUAN VỀ ADO.NET
CÁC LỚP ĐỐI TƯỢNG TRONG
ADO.NET
Connection: Là đối tượng có nhiệm vụ
thực hiện nhiệm vụ kết nối đến CSDL
Command: Dùng để thực hiện các
câu lệnh SQL thao tác với CSDL như:
Insert, Update, Select, Delete
DataReader: Dùng để đón nhận kết
quả trả về từ đối tượng Command
DataAdapter: Có chức năng như một
cầu nối giữa nguồn (tệp) dữ liệu và
các bảng được cached trong bộ nhớ
Phạm Hoàng Hải
C4W - 12
Khoa CNTT
CNPM
3. MÔ HÌNH KẾT NỐI - PHI KẾT
NỐI
Mô hình kết nối (Connected Model)
Chương trình
Mô hình phi kết nối (Disconnected
Model)
Chương trình
Phạm Hoàng Hải
C4W - 13
Khoa CNTT
CNPM
3. MÔ HÌNH KẾT NỐI
CONNECTED MODEL
Kết nối vào CSDL
Thực hiện lệnh
Thêm/Xóa/Sửa dữ liệu
Đọc dữ liệu từ CSDL
Command
Connection
Chương trình
DataReader
Phạm Hoàng Hải
C4W - 14
Khoa CNTT
CNPM
VÍ D
Xây dựng ứng dụng QLHS
Yêu cầu : Tiếp nhận học sinh
Phạm Hoàng Hải
C4W - 15
Khoa CNTT
CNPM
3. MÔ HÌNH KẾT NỐI
CONNECTED MODEL
CONNECTION
Connection: Kết nối vào CSDL
Các lớp phụ trách kết nối
ODBCConnection
OleDBConnection
SqlConnection
OracleConnection
Thuộc tính quan trọng
Phương thức quan trọng
ConnectionString: xác định nguồn
dữ liệu cần kết nối
Open: mở kết nối
Close: đóng kết nối
Phạm Hoàng Hải
C4W - 16
Khoa CNTT
CNPM
3. MÔ HÌNH KẾT NỐI
CONNECTED MODEL
CONNECTION
Kết nối vào CSDL
Ví dụ: kết nối vào Access
OleDbConnection cnn = new OleDbConnection();
cnn.ConnectionString = "Provider=Microsoft.Jet.OleDb.4.0;
Data Source=hocsinh.mdb“;
cnn.Open();
//Các lệnh cần thực hiện
Phạm Hoàng Hải
Khoa CNTT -
1/18/2011
17
C4W - 17
Khoa CNTT
CNPM
3. MÔ HÌNH KẾT NỐI
CONNECTED MODEL
CONNECTION
Kiểm tra kết nối: Sau khi gọi phương
thức Open, có thể xem đã kết nối
thành công hay không thông qua
thuộc tính State của Connection.
Ví dụ:
if (con.State.ToString() = "Open" )
C4W - 18
Phạm Hoàng Hải
18
Khoa CNTT
CNPM
3. MÔ HÌNH KẾT NỐI
CONNECTED MODEL
CONNECTION
Đóng kết nối: Thi hành phương thức
Close() để đóng kết nối
Để tránh lỗi ta nên kiểm tra trạng thái
kết nối
Ví dụ:
If (con.State.ToString() == "Open")
con.Close();
Phạm Hoàng Hải
C4W - 19
Khoa CNTT
CNPM
3. MÔ HÌNH KẾT NỐI
CONNECTED MODEL
COMMAND
Command: Thực hiện lệnh
Các lớp phụ trách
ODBCCommand
OleDBCommand
SqlCommand
OracleCommand
Thuộc tính quan trọng
Connection: xác định CSDL sẽ thực hiện
thao tác
CommandText: xác định thao tác cần thực
hiện
Parameters: xác định các tham số lệnh
Phương thức quan trọng
ExecuteReader: phù hợp lệnh Select trả ra
1 bảng dữ liệu
ExecuteScalar: phù hợp lệnh Select trả ra 1
giá trị
ExecuteNonQuery: phù hợp lệnh Insert,
Delete, Update
Phạm Hoàng Hải
C4W - 20
Khoa CNTT
CNPM
3. MÔ HÌNH KẾT NỐI
CONNECTED MODEL
COMMAND
Các cách để tạo Command
Tạo Command từ phương thức tạo dựng
OleDbCommand com = new OleDbCommand("select
* from sinhvien", con);
Tạo command từ phương thức
CreateCommand của đối tượng Connection
OleDbCommand com = con.CreateCommand();
command.CommandText = "select * from sinhvien“;
Tạo Command bằng cách đặt các thuộc tính
sau khi khai báo
OleDbCommand com =new OleDbCommand();
com.CommandType = CommandType.Text;
com.CommandText ="Select * from sinhvien";
com.Connection = con;
Phạm Hoàng Hải
C4W - 21
Khoa CNTT
CNPM
3. MÔ HÌNH KẾT NỐI
CONNECTED MODEL
COMMAND
Ví d
OleDbCommand cmd = new OleDbCommand();
cmd.Connection = connect;
cmd.CommandText = "insert into Hocsinh
values(@Ma,@HoTen,@Diachi,@NgaySinh,@Toan,@Van)“;
OleDbParameter para =
cmd.Parameters.Add("@Ma",OleDbType.Integer)
para.Value=1;
para=cmd.Parameters.Add("@HoTen",OleDbType.VarWChar)
para.Value="Lê Văn A“;
para=cmd.Parameters.Add("@Diachi",OleDbType.VarWChar)
para.Value="Nguyễn Văn Cừ“;
para = cmd.Parameters.Add("@Ngaysinh", OleDbType.Date)
para.Value = new DateTime(1982,10,1);
para=cmd.Parameters.Add("@Toan",OleDbType.Integer);
para.Value=5;
para=cmd.Parameters.Add("@Van",OleDbType.Integer);
para.Value=7;
cmd.ExecuteNonQuery();
Phạm Hoàng Hải
C4W - 22
Khoa CNTT
CNPM
3. MÔ HÌNH KẾT NỐI
CONNECTED MODEL
READER
Reader: Thực hiện lệnh
Đọc dữ liệu từ CSDL
Dùng lệnh ExecuteReader hoặc
ExecuteScalar
Lớp XXXDataReader
Read
Book BookNam Author
GetXXX
ID e
IsDBNull
Dữ liệu chỉ
đọc theo
chiều tiến
(Readonly)
Phạm Hoàng Hải
1
Book 1
Author
1
2
Book 2
Author
2
3
Book3
Author
3
C4W - 23
Khoa CNTT
CNPM
3. MÔ HÌNH KẾT NỐI
CONNECTED MODEL
READER
Reader: Thực hiện lệnh
Đọc dữ liệu từ CSDL
Ví dụ
OleDbDataReader rd = cmd.ExecuteReader();
while (rd.Read())
{
if (!rd.IsDBNull(3))
Console.WriteLine(rd.GetDateTime(3));
}
Phạm Hoàng Hải
C4W - 24
Khoa CNTT
CNPM
4. MÔ HÌNH PHI KẾT NỐI
DISCONNECTED MODEL
DataAdapter
Chương trình
Phạm Hoàng Hải
C4W - 25
Khoa CNTT
CNPM
4. MÔ HÌNH PHI KẾT NỐI
DISCONNECTED MODEL
Ánh xạ
DataSet
DataSet
Data Source
DataTable
Tables
Relations
Columns
DataColumn
Rows
DataRow
DataRelation
Phạm Hoàng Hải
C4W - 26
Khoa CNTT
CNPM
4. MÔ HÌNH PHI KẾT NỐI
DISCONNECTED MODEL
DataSet
Đối tượng DataSet được coi như một
kho chứa các bảng (Table). Người sử
dụng có thể thay đổi dữ liệu trong các
bảng này và khi muốn cập nhật vào cơ
sở dữ liệu thì thi hành phương thức
Update của đối tượng DataAdapter.
Các bảng trong DataSet có thể do
DataAdapter Fill vào hoặc cũng có thể
là các bảng được tạo thành từ đối
tượng DataTable.
Các bảng này được quản lý bởi tập
hợp Tables của lớp DataSet
Phạm Hoàng Hải
C4W - 27
Khoa CNTT
CNPM
4. MÔ HÌNH PHI KẾT NỐI
DISCONNECTED MODEL
DataTable
TableName: tên bảng.
Columns: danh sách các cột
(DataColumn).
Rows: danh sách các mẫu tin
(DataRow).
PrimaryKey: danh sách các cột làm khóa
chính (DataColumn).
NewRow(): tạo một mẫu tin mới.
Phạm Hoàng Hải
C4W - 28
Khoa CNTT
CNPM
4. MÔ HÌNH PHI KẾT NỐI
DISCONNECTED MODEL
DataTable
Phạm Hoàng Hải
C4W - 29
Khoa CNTT
CNPM
4. MÔ HÌNH PHI KẾT NỐI
DISCONNECTED MODEL
DataRow
RowState: trạng thái của mẫu tin
(Added, Modified, Deleted,
Unchanged…).
Toán tử [ i ]: truy xuất đến cột i của mẫu
tin.
Delete(): đánh dấu xóa mẫu tin.
Phạm Hoàng Hải
C4W - 30
Khoa CNTT
CNPM
4. MÔ HÌNH PHI KẾT NỐI
DISCONNECTED MODEL
DataColumn
ColumnName: tên cột.
DataType: kiểu dữ liệu cột.
Phạm Hoàng Hải
C4W - 31
Khoa CNTT
CNPM
4. MÔ HÌNH PHI KẾT NỐI
DISCONNECTED MODEL
DataAdapter
SelectCommand
DataSet
InsertCommand
UpdateCommand
Data Source
DeleteCommand
Fill: dùng SelectCommand lấy dữ liệu
từ Data Source đổ vào DataSet.
Update:
dùng
InsertCommand,
UpdateCommand và DeleteCommand
cập nhật dữ liệu trong DataSet vào
Data Source.
Phạm Hoàng Hải
C4W - 32
Khoa CNTT
CNPM
4. MÔ HÌNH PHI KẾT NỐI
DISCONNECTED MODEL
Thực hiện lệnh
Đọc dữ liệu từ CSDL
Xử lý dữ liệu
Cập nhật dữ liệu xuống CSDL
DataAdapter
Chương trình
Phạm Hoàng Hải
C4W - 33
Khoa CNTT
CNPM
4. MÔ HÌNH PHI KẾT NỐI
DISCONNECTED MODEL
Đọc dữ liệu từ CSDL
OleDbDataAdapter da = new OleDbDataAdapter(
"select * from HocSinh", cnn);
DataSet dsHocSinh = new DataSet();
da.Fill(dsHocSinh, "HocSinh");
for (int i = 0; i <
dsHocSinh.Tables("HocSinh“).Rows.Count; i++)
{
listBox1.Items.Add(
dsHocSinh.Tables["HocSinh"].Rows[i]["HoTen"].
ToString());
}
Phạm Hoàng Hải
C4W - 34
Khoa CNTT
CNPM
4. MÔ HÌNH PHI KẾT NỐI
DISCONNECTED MODEL
Xử lý dữ liệu
Thêm dữ liệu
DataRow newRow;
newRow = dsHocSinh.Tables["HocSinh"].NewRow();
newRow[0] = 10;
newRow[1] = "Lê Thị B“;
dsHocSinh.Tables["HocSinh"].Rows.Add(newRow);
Xoá dữ liệu
dsHocSinh.Tables["HocSinh"].Rows[0].Delete();
Thay đổi dữ liệu
DataRow row;
row = dsHocSinh.Tables["HocSinh"].Rows[1];
row.BeginEdit();
row[0] = 11;
row[1] = "Lê Thị C";
row.EndEdit();
C4W - 35
Phạm Hoàng Hải
35
Khoa CNTT
CNPM
4. MÔ HÌNH PHI KẾT NỐI
DISCONNECTED MODEL
Cập nhật dữ liệu xuống CSDL
OleDbCommandBuilder buider =
new OleDbCommandBuilder(da);
da.Update(dsHocSinh, "HocSinh");
Phạm Hoàng Hải
C4W - 36
Khoa CNTT
CNPM
5. CÂU HỎI
Phạm Hoàng Hải
C4W - 37