Khoa CNTT
CNPM
LẬP TRÌNH KẾT NỐI CSDL
ADO.NET
Th.S Phạm Hồng Hải
LTUDQL - 1
Khoa CNTT
CNPM
1. NI DUNG
ă
Tng quan v ADO.Net
ă
Mụ hỡnh kt ni
ă
Mụ hình phi kết nối
Th.S Phạm Hồng Hải
LTUDQL - 2
Khoa CNTT
CNPM
2. TNG QUAN V ADO.NET
ă
Cỏc th h ca lp trình kết nối CSDL
Th.S Phạm Hồng Hải
LTUDQL - 3
Khoa CNTT
CNPM
2. TNG QUAN V ADO.NET
MC TIấU BI HC
ă
ă
ă
Tỡm hiu 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
Th.S Phạm Hoàng Hải
LTUDQL - 4
Khoa CNTT
CNPM
2. TNG QUAN V ADO.NET
GII THIU
ă
ADO.NET l mt tp các lớp thư viện
được sử dụng để truy xuất dữ liu
Thờm/xúa/sa d liu
c d liu
Chng trỡnh
ă
CSDL, XML
Nm trong b th viện các lớp cơ sở
của .Net Framework
Th.S Phạm Hoàng Hải
LTUDQL - 5
Khoa CNTT
CNPM
2. TNG QUAN V ADO.NET
V TR CA 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
ADO.NET
Data
Comman language Runtime
System Services
ă
Cỏc lp ADO.Net t trong
System.Data
ă
Chc nng v cách sử dụng hoàn
toàn giống nhau.
Th.S Phạm Hoàng Hải
LTUDQL - 6
Khoa CNTT
CNPM
2. TỔNG QUAN VỀ ADO.NET
ADO vs ADO.Net
Th.S Phạm Hoàng Hải
LTUDQL - 7
Khoa CNTT
CNPM
2. TNG QUAN V ADO.NET
ADO vs ADO.Net
ă
ă
ă
ADO kt ni CSDL tốt, nhưng
•
Địi hỏi kết nối chuẩn COM và
Windows
•
Xử lý kết nối CSDL qua Internet khó
khăn và khơng tốt.
ADO.Net
•
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.
Th.S Phạm Hồng Hải
LTUDQL - 8
Khoa CNTT
CNPM
2. TỔNG QUAN VỀ ADO.NET
ADO vs ADO.Net
Khác biệt
về mô hình
Th.S Phạm Hồng Hải
Thuận lợi/khó
khăn kết nối
Internet
LTUDQL - 9
Khoa CNTT
CNPM
2. TNG 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
Th.S Phạm Hoàng Hải
SQL
Server
LTUDQL - 10
Khoa CNTT
CNPM
2. TNG QUAN V ADO.NET
CC LP I TNG TRONG
ADO.NET
ă
.NET Data Provider
•
Các thành phần của .NET Data
Provider
Th.S Phạm Hồng Hải
LTUDQL - 11
Khoa CNTT
CNPM
2. TNG QUAN V ADO.NET
CC LP I TNG TRONG
ADO.NET
ă
Connection: Là đối tượng có nhiệm vụ
thực hiện nhiệm vụ kết ni n CSDL
ă
Command: Dựng thc hin cỏc
cõu lnh SQL thao tỏc vi CSDL nh:
Insert, Update, Select, Delete
ă
DataReader: Dựng ún nhn kt
qu tr v t i tng 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ớ
Th.S Phạm Hoàng Hải
LTUDQL - 12
Khoa CNTT
CNPM
3. Mễ HèNH KT NI - PHI KT
NI
ă
Mụ hỡnh kt ni (Connected Model)
Chng trỡnh
ă
Mụ hỡnh phi kt ni (Disconnected
Model)
Chng trình
Th.S Phạm Hồng Hải
LTUDQL - 13
Khoa CNTT
CNPM
3. Mễ HèNH KT NI
CONNECTED MODEL
ă
Kt ni vo CSDL
ă
Thc 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
Th.S Phạm Hoàng Hải
LTUDQL - 14
Khoa CNTT
CNPM
V D
ă
Xõy dng ng dng QLHS
ã
Yờu cu : Tip nhận học sinh
Th.S Phạm Hoàng Hải
LTUDQL - 15
Khoa CNTT
CNPM
3. Mễ HèNH KT NI
CONNECTED MODEL
CONNECTION
ă
Connection: Kt ni vo CSDL
•
Các lớp phụ trách kết nối
vODBCConnection
vOleDBConnection
vSqlConnection
vOracleConnection
•
Thuộc tính quan trọng
vConnectionString: xác định nguồn
dữ liệu cần kết nối
•
Phương thức quan trọng
vOpen: mở kết nối
vClose: đóng kết nối
Th.S Phạm Hồng Hải
LTUDQL - 16
Khoa CNTT
CNPM
3. Mễ HèNH KT NI
CONNECTED MODEL
CONNECTION
ă
Kt ni vo 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
Th.S Phạm Hoàng Hải
Khoa CNTT -
10/17/17
17
LTUDQL - 17
Khoa CNTT
CNPM
3. Mễ HèNH KT NI
CONNECTED MODEL
CONNECTION
ă
Kim tra kt ni: 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" )
LTUDQL - 18
Th.S Phạm Hoàng Hải
18
Khoa CNTT
CNPM
3. Mễ HèNH KT NI
CONNECTED MODEL
CONNECTION
ă
úng kt ni: Thi hnh phng thc
Close() úng kt ni
ă
trỏnh li ta nên kiểm tra trạng thái
kết nối
•
Ví dụ:
If (con.State.ToString() == "Open")
con.Close();
Th.S Phạm Hoàng Hải
LTUDQL - 19
Khoa CNTT
CNPM
3. Mễ HèNH KT NI
CONNECTED MODEL
COMMAND
ă
Command: Thc hin lnh
ã
Cỏc lớp phụ trách
v ODBCCommand
v OleDBCommand
v SqlCommand
v OracleCommand
•
Thuộc tính quan trọng
v Connection: xác định CSDL sẽ thực hiện
thao tác
v CommandText: xác định thao tác cần thực
hiện
v Parameters: xác định các tham số lệnh
•
Phương thức quan trọng
v ExecuteReader: phù hợp lệnh Select trả ra
1 bảng dữ liệu
v ExecuteScalar: phù hợp lệnh Select trả ra 1
giá trị
v ExecuteNonQuery: phù hợp lệnh Insert,
Delete, Update
Th.S Phạm Hoàng Hải
LTUDQL - 20
Khoa CNTT
CNPM
3. Mễ HèNH KT NI
CONNECTED MODEL
COMMAND
ă
Cỏc cỏch to 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;
Th.S Phạm Hoàng Hải
LTUDQL - 21
Khoa CNTT
CNPM
3. Mễ HèNH KT NI
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();
Th.S Phạm Hoàng Hải
LTUDQL - 22
Khoa CNTT
CNPM
3. Mễ HèNH KT NI
CONNECTED MODEL
READER
ă
Reader: Thc hin lnh
ã
n
n
c dữ liệu từ CSDL
Dùng lệnh ExecuteReader hoặc
ExecuteScalar
Lớp XXXDataReader
u Read
Book BookNam Author
u GetXXX
ID e
u IsDBNull
Dữ liệu chỉ
đọc theo
chiều tiến
(Readonly)
Th.S Phạm Hoàng Hải
1
Book 1
Author
1
2
Book 2
Author
2
3
Book3
Author
3
LTUDQL - 23
Khoa CNTT
CNPM
3. Mễ HèNH KT NI
CONNECTED MODEL
READER
ă
Reader: Thc hin lnh
ã
c dữ liệu từ CSDL
•
Ví dụ
OleDbDataReader rd = cmd.ExecuteReader();
while (rd.Read())
{
if (!rd.IsDBNull(3))
Console.WriteLine(rd.GetDateTime(3));
}
Th.S Phạm Hoàng Hải
LTUDQL - 24
Khoa CNTT
CNPM
4. MƠ HÌNH PHI KẾT NỐI
DISCONNECTED MODEL
DataAdapter
Chương trình
Th.S Phạm Hoàng Hải
LTUDQL - 25