Cs06
- 1. Bài gi ng môn h c
L p trình Windows Form v i C#
Bài 7: ADO.NET
Lương Tr n Hy Hi n
FIT, HCMUP
- 2. L p trình Windows Form v i C#
Lương Tr n Hy Hi n © 2010 Khoa CNTT – ĐH Sư Ph m TpHCM
N i dung
ADO.NET
Sơ lư c l ch s phát tri n
Ki n trúc ADO.NET
.NET Data Provider
DataSet
H i & Đáp
2
- 3. L p trình Windows Form v i C#
Lương Tr n Hy Hi n © 2010 Khoa CNTT – ĐH Sư Ph m TpHCM
Gi i thi u ADO.NET
ActiveX Data Object .NET (ADO.NET)
– Công ngh c a MS
– Phát tri n t n n t ng ADO
– Cung c p các l p đ i tư ng và hàm thư vi n ph c
v cho vi c k t n i và x lý d li u
.NET Application
ADO.NET
3
- 4. L p trình Windows Form v i C#
Lương Tr n Hy Hi n © 2010 Khoa CNTT – ĐH Sư Ph m TpHCM
Gi i thi u ADO.NET
Mô hình .NET Framework
Microsoft .NET Framework
Common Language Runtime
Base Classes
Web Services User Interface
Data and XML
ADO.NET XML ... ...
4
- 5. L p trình Windows Form v i C#
Lương Tr n Hy Hi n © 2010 Khoa CNTT – ĐH Sư Ph m TpHCM
N i dung
• ADO.NET
Sơ lư c l ch s phát tri n
Ki n trúc ADO.NET
.NET Data Provider
DataSet
H i & Đáp
5
- 6. L p trình Windows Form v i C#
Lương Tr n Hy Hi n © 2010 Khoa CNTT – ĐH Sư Ph m TpHCM
Sơ lư c l ch s phát tri n
Native API
ODBC
Driver
Driver
Driver
Application
Application
Database
Database
DB API
DB API
DB API
ODBC API
DB API
DB API
DB API
Open DataBase Connectivity
6
- 7. L p trình Windows Form v i C#
Lương Tr n Hy Hi n © 2010 Khoa CNTT – ĐH Sư Ph m TpHCM
Sơ lư c l ch s phát tri n (cont)
OLEDB và ADO
ADO
OLE DB
Application
Non-Relational Data
Relational Data
ODBC
Driver
Driver
Driver
Provider
Provider
Provider
Provider
OLE: Object Linking and Embedding
7
- 8. L p trình Windows Form v i C#
Lương Tr n Hy Hi n © 2010 Khoa CNTT – ĐH Sư Ph m TpHCM
Sơ lư c l ch s phát tri n (cont)
ADO.NET
8
- 9. L p trình Windows Form v i C#
Lương Tr n Hy Hi n © 2010 Khoa CNTT – ĐH Sư Ph m TpHCM
Introduction
Stored
into
Database (Oracle, SQL Server)
Client
ADO.NET
Data access technology
9
- 10. L p trình Windows Form v i C#
Lương Tr n Hy Hi n © 2010 Khoa CNTT – ĐH Sư Ph m TpHCM
ADO.NET architecture
Database
XML
XML
10
- 11. L p trình Windows Form v i C#
Lương Tr n Hy Hi n © 2010 Khoa CNTT – ĐH Sư Ph m TpHCM
ADO.NET (tt)
H tr b i .Net Platform
S d ng công ngh XML đ chuy n đ i d
li u.
Tương tác v i t t c các lo i cơ s d li u.
Kh năng th c thi nhanh.
S d ng cho các lo i ng d ng client-
server.
11
- 12. L p trình Windows Form v i C#
Lương Tr n Hy Hi n © 2010 Khoa CNTT – ĐH Sư Ph m TpHCM
N i dung
ADO.NET
Sơ lư c l ch s phát tri n
Ki n trúc ADO.NET
.NET Data Provider
DataSet
H i & Đáp
12
- 13. L p trình Windows Form v i C#
Lương Tr n Hy Hi n © 2010 Khoa CNTT – ĐH Sư Ph m TpHCM
Ki n trúc
Connected Model
Disconnected Model
Chương trình
Chương trình
13
- 14. L p trình Windows Form v i C#
Lương Tr n Hy Hi n © 2010 Khoa CNTT – ĐH Sư Ph m TpHCM
ADO.NET
ADO.NET là m t ph n c a .NET Framework
– Thư vi n l p có ch c năng thao tác d li u trong
ngôn ng MS.NET
ADO.NET là d ng “Disconnected”
– Cho phép l y c m t c u trúc ph c t p c a DL t
CSDL, sau đó ng t k t n i r i m i th c hi n thao tác
x lý!
– Trư c đây ADO luôn ph i duy trì k t n i trong quá
trình làm vi c.
14
- 15. L p trình Windows Form v i C#
Lương Tr n Hy Hi n © 2010 Khoa CNTT – ĐH Sư Ph m TpHCM
Môi trư ng “connected”
M i user có m t k t n i c đ nh t i data
source
Ưu đi m
– Môi trư ng đư c b o v t t
– Ki m soát đư c s đ ng b
– D li u luôn đư c m i
Như c
– Ph i có m t k t n i m ng c đ nh
– Scalability
15
- 16. L p trình Windows Form v i C#
Lương Tr n Hy Hi n © 2010 Khoa CNTT – ĐH Sư Ph m TpHCM
Môi trư ng “disconnected”
M t t p con c a d li u trung tâm đư c sao
chép và b sung đ c l p, sau đó s đư c
merge l i vào d li u trung tâm.
Ưu đi m
– Có th làm vi c b t c lúc nào, cũng như có th k t n i
b t kỳ vào Data Source
– Cho phép user khác có th k t n i
– Nâng cao hi u su t th c hi n c a ng d ng
Khuy t
– D li u không đư c c p nh t m t cách nhanh nh t
– S tranh ch p có th xu t hi n và ph i gi i quy t
16
- 17. L p trình Windows Form v i C#
Lương Tr n Hy Hi n © 2010 Khoa CNTT – ĐH Sư Ph m TpHCM
ADO.NET
ADO.NET m nh m
– K th a các ưu đi m c a ADO
– K t h p v i ý tư ng thi t k hoàn toàn m i
Đ c đi m n i b t
– Thi t k hoàn toàn d a vào XML
• Chu n giao ti p d li u t t nh t trên môi trư ng
Internet hi n nay
– Thi t k hoàn toàn hư ng đ i tư ng
• Đ c trưng c a thư vi n .NET Framework
17
- 18. L p trình Windows Form v i C#
Lương Tr n Hy Hi n © 2010 Khoa CNTT – ĐH Sư Ph m TpHCM
ADO.NET vs. ADO
Đặc Điểm ADO ADO.NET
DL xử lý được
đưa vào bộ nhớ
dưới dạng
Recordset : tương đương 1 bảng
dữ liệu trong database
Dataset : tương đương 1 database
Duyệt dữ liệu Recordset chỉ cho phép duyệt tuần
tự, từng dòng một.
Dataset : duyệt “tự do, ngẫu
nhiên”, truy cập thẳng tới bảng,
dòng ,cột mong muốn.
Dữ liệu ngắt kết
nối
Recordset thiên về hướng kết nối,
nên việc hỗ trợ ngắt kết nối không
mạnh
Dataset hỗ trợ hoàn toàn ngắt kết
nối
Trao đổi dữ liệu
qua Internet
Khả năng trao đổi dữ liệu ADO
qua Internet thường có nhiều hạn
chế. Do dùng chuẩn COM
ADO.NET trao đổi dữ liệu qua
Internet rất dễ dàng vì ADO.NET
được thiết kế theo chuẩn XML, là
chuẩn dữ liệu chính được sử dụng
để trao đổi trên Internet.
- 19. L p trình Windows Form v i C#
Lương Tr n Hy Hi n © 2010 Khoa CNTT – ĐH Sư Ph m TpHCM
ADO.NET
Ki n trúc c a ADO.NET g m 2 ph n chính
Ph n k t n i: s d ng khi k t n i CSDL và thao
tác d li u, ph i th c hi n k t n i khi thao tác
• Connection: qu n lý vi c đóng m DB
– ???Connection: SqlConnection, OleDbConnection
• Command: l nh truy v n, tương tác d li u khi đang l p k t
n i
– ???Command: SqlCommand, OleDbCommand
• DataReader: đ c d li u, ch x lý 1 dòng d li u t i m t
th i đi m
– ???DataReader: SqlDataReader, OleDbDataReader
• DataAdapter: c u n i gi a DataBase và DataSet
19
- 20. L p trình Windows Form v i C#
Lương Tr n Hy Hi n © 2010 Khoa CNTT – ĐH Sư Ph m TpHCM
ADO.NET
Ph n ng t k t n i: là DataSet
– DataSet không quan tâm đ n Database thu c ki u
gì, mà l y d li u t DataAdapter đ x lý
– DataSet xem như m t Database trong b nh : b ng,
quan h …
– DataSet có các thành ph n con như
• DataTable
• DataRow
• DataColumn
• DataRelation
• Các đ i tư ng nhóm: DataTableCollection,
DataRowCollection, DataColumnCollection
20
- 21. L p trình Windows Form v i C#
Lương Tr n Hy Hi n © 2010 Khoa CNTT – ĐH Sư Ph m TpHCM
Mô hình đ i tư ng ADO.NET
21
- 22. L p trình Windows Form v i C#
Lương Tr n Hy Hi n © 2010 Khoa CNTT – ĐH Sư Ph m TpHCM
Namespace
System.Data — All generic data access classes
System.Data.Common — Classes shared (or overridden) by
individual data providers
System.Data.Odbc — ODBC provider classes
System.Data.OleDb — OLE DB provider classes
System.Data.ProviderBase — New base classes and
connection factory classes
System.Data.Oracle — Oracle provider classes
System.Data.Sql — New generic interfaces and classes for
SQL Server data access
System.Data.SqlClient — SQL Server provider classes
System.Data.SqlTypes — SQL Server data types
22
- 23. L p trình Windows Form v i C#
Lương Tr n Hy Hi n © 2010 Khoa CNTT – ĐH Sư Ph m TpHCM
Các l p thư vi n ADO.NET
System.Data.OleDb: Access, SQL Server, Oracle
System.Data.SqlClient: SQL Server
System.Data.OracleClient: Oracle
Đ c đi m:
– C ba thư vi n trên v giao ti p l p trình là gi ng nhau
– Dùng thư vi n SqlClient truy xu t SQL Server nhanh hơn
OleDb
– Tương t cho OracleClient
23
- 24. L p trình Windows Form v i C#
Lương Tr n Hy Hi n © 2010 Khoa CNTT – ĐH Sư Ph m TpHCM
.NET Data Provider
Các thành ph n .NET Data Provider
24
- 25. L p trình Windows Form v i C#
Lương Tr n Hy Hi n © 2010 Khoa CNTT – ĐH Sư Ph m TpHCM
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
25
- 26. L p trình Windows Form v i C#
Lương Tr n Hy Hi n © 2010 Khoa CNTT – ĐH Sư Ph m TpHCM
Connected Model
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
• ConnectionString: xác đ nh ngu n d li u c n k t n i
– Phương th c quan tr ng
• Open: m k t n i
• Close: đóng k t n i
26
- 27. L p trình Windows Form v i C#
Lương Tr n Hy Hi n © 2010 Khoa CNTT – ĐH Sư Ph m TpHCM
.NET Data Provider - Connection
Các đ i tư ng Connection tuân th
IDbConnection interface.
ConnectionString: lo i Data Source c n k t n i.
Open(): thi t l p k t n i đ n Data Source.
Close(): ng t k t n i đ n Data Source.
Data SourceApplication
Connection
27
- 28. L p trình Windows Form v i C#
Lương Tr n Hy Hi n © 2010 Khoa CNTT – ĐH Sư Ph m TpHCM
.NET Data Provider – Connection (cont)
K t n i vào CSDL Access
OleDbConnection cnn = new OleDbConnection();
cnn.ConnectionString = "Provider=Microsoft.Jet.OleDb.4.0;
Data Source=QLHS.mdb";
cnn.Open();
//Các lệnh cần thực hiện
cnn.Close();
28
- 29. L p trình Windows Form v i C#
Lương Tr n Hy Hi n © 2010 Khoa CNTT – ĐH Sư Ph m TpHCM
.NET Data Provider – Connection (cont)
K t n i vào CSDL SQL Server:
SqlConnection cnn = new SqlConnection(“server=
HIENLTH-PCSQLEXPRESS; database = QLHS;
user id=sa; password=sa”);
cnn.Open();
// Th c hi n truy v n d li u
cnn.Close();
29
- 30. L p trình Windows Form v i C#
Lương Tr n Hy Hi n © 2010 Khoa CNTT – ĐH Sư Ph m TpHCM
SQL2005 ConnectionString
Theo đ c quy n c a SQL Server (có user,
pass):
server= HIENLTH-PCSQLEXPRESS; database =
QLHS; user id=sa; password=sa
Theo đ c quy n c a h đi u hành:
server= HIENLTH-PCSQLEXPRESS; database =
QLHS; Trusted Connection = True;
server= HIENLTH-PCSQLEXPRESS; database =
QLHS; Integrated Security = True;
30
- 31. L p trình Windows Form v i C#
Lương Tr n Hy Hi n © 2010 Khoa CNTT – ĐH Sư Ph m TpHCM
T p tin lưu tr k t n i
Cho phép ngư i dùng có th c u hình các giá tr
thu c tính cho chu i k t n i CSDL.
Thư ng có d ng *.ini, *.txt. T .NET 1.0 tr lên có th
s d ng t p tin App.config (đ nh d ng XML) ch a khai
báo các tham s cùng giá tr và các ch th khác.
Ví d : T p tin DBConfig.ini
31
- 32. L p trình Windows Form v i C#
Lương Tr n Hy Hi n © 2010 Khoa CNTT – ĐH Sư Ph m TpHCM
Đ c thông tin t p tin lưu tr k t n i
Lo i *.ini, *.txt s d ng StreamReader
(using System.IO)
StreamReader docfile = new
StreamReader(@"DBConfig.ini");
servername = Tach(docfile.ReadLine());
databasename = Tach(docfile.ReadLine());
username = Tach(docfile.ReadLine());
password = Tach(docfile.ReadLine());
32
- 33. L p trình Windows Form v i C#
Lương Tr n Hy Hi n © 2010 Khoa CNTT – ĐH Sư Ph m TpHCM
Đ c thông tin t p tin lưu tr k t n i
Lo i App.config
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<connectionStrings>
<add name="SqlServer" connectionString="server=HIENLTH-
PCsqlexpress;database=SEQLHS;integrated security=true"
providerName="System.Data.SqlClient"/>
</connectionStrings>
</configuration>
33
- 34. L p trình Windows Form v i C#
Lương Tr n Hy Hi n © 2010 Khoa CNTT – ĐH Sư Ph m TpHCM
Đ c thông tin t p tin lưu tr k t n i
Lo i App.config:
connectionstring =
ConfigurationManager.ConnectionStrings[tên].
ConnectionString;
Ví d :
con.ConnectionString =
ConfigurationManager.ConnectionStrings[“SqlServer "].
ConnectionString;
34
- 35. L p trình Windows Form v i C#
Lương Tr n Hy Hi n © 2010 Khoa CNTT – ĐH Sư Ph m TpHCM
.NET Data Provider - Command
Data SourceApplication
Connection 011010011011010011
Command
35
- 36. L p trình Windows Form v i C#
Lương Tr n Hy Hi n © 2010 Khoa CNTT – ĐH Sư Ph m TpHCM
.NET Data Provider - Command
Các đ i tư ng Command tuân th
IDbCommand interface.
Connection: k t n i dùng đ th c hi n câu l nh.
CommandText: câu l nh SQL c n th c hi n trên Data Source.
CommandType: lo i câu l nh trong CommandText (Text,
TableDirect, StoredProc).
ExecuteScalar(): th c hi n câu l nh trong CommandText, k t
qu tr v là m t giá tr đơn.
ExecuteNonQuery(): th c hi n câu l nh trong CommandText và
không có k t qu tr v .
ExecuteReader(): th c hi n câu l nh trong CommandText, k t
qu tr v là m t DataReader.
36
- 37. L p trình Windows Form v i C#
Lương Tr n Hy Hi n © 2010 Khoa CNTT – ĐH Sư Ph m TpHCM
Command (cont) – SQL Server
SqlConnection cnn = new SqlConnection(“server=HIENLTH-
PCSQLEXPRESS; database=QLHS; user id=sa; password=sa”);
SqlCommand cmd = new SqlCommand();
cmd.Connection = cnn;
cmd.CommandText = “SELECT COUNT(*) FROM HocSinh”;
cmd.CommandType = CommandType.Text;
cnn.Open();
int count = (int)cmd.ExecuteScalar();
cnn.Close();
37
- 38. L p trình Windows Form v i C#
Lương Tr n Hy Hi n © 2010 Khoa CNTT – ĐH Sư Ph m TpHCM
Command (cont) – SQL Server
SqlConnection cnn = new SqlConnection(“server=HIENLTH-
PCSQLEXPRESS; database=QLHS; user id=sa; password=sa”);
SqlCommand cmd = new SqlCommand();
cmd.Connection = cnn;
cmd.CommandText =
“INSERT INTO HocSinh(Ho, Ten, DienThoai)
VALUES(N‘Nguy n Văn’, N‘Trư ng’, ‘0989366990’)”;
cmd.CommandType = CommandType.Text;
cnn.Open();
cmd.ExecuteNonQuery();
cnn.Close();
38
- 39. L p trình Windows Form v i C#
Lương Tr n Hy Hi n © 2010 Khoa CNTT – ĐH Sư Ph m TpHCM
Command (cont) – MS Access
Th c hi n l nh
– Thêm/Xóa/S a d li u
Ví dụ:
OleDbCommand cmd = new OleDbCommand();
cmd.Connection = cnn;
cmd.CommandText = “INSERT INTO Hocsinh VALUES(5, 'Lê
Văn Xiêm','11/12/2006', 'Khánh Hòa', '221 Nguy n Văn C ')";
cmd.ExecuteNonQuery();
39
- 40. L p trình Windows Form v i C#
Lương Tr n Hy Hi n © 2010 Khoa CNTT – ĐH Sư Ph m TpHCM
.NET Data Provider - Parameter
M c đích s d ng:
M t vài giá tr trong câu l nh ch bi t khi th c hi n
câu l nh.
C n th c hi n câu l nh nhi u l n v i các giá tr
khác nhau.
Các bư c th c hi n:
Tham s hóa câu l nh: ? ho c @[tên tham s ].
T o các parameters tương ng cho command.
Đ t giá tr cho các parameter m i khi dùng
command th c hi n câu l nh.
40
- 41. L p trình Windows Form v i C#
Lương Tr n Hy Hi n © 2010 Khoa CNTT – ĐH Sư Ph m TpHCM
.NET Data Provider – Parameter(cont)
Tham s hóa
SQL Data Provider:
cmd.CommandText =
“SELECT * FROM HocSinh WHERE tenhocsinh = @ten”;
cmd.CommandText =
“INSERT INTO HocSinh(id_hocsinh, tenhocsinh, dtb)” +
“ VALUES(@id, @ten, @dtb)”;
Các provider khác:
cmd.CommandText =
“SELECT * FROM HocSinh WHERE tenhocsinh = ?”;
cmd.CommandText =
“INSERT INTO HocSinh(id_hocsinh, tenhocsinh, dtb)” +
“VALUES(?, ?, ?)”;
41
- 42. L p trình Windows Form v i C#
Lương Tr n Hy Hi n © 2010 Khoa CNTT – ĐH Sư Ph m TpHCM
.NET Data Provider – Parameter(cont)
T o các parameter
cmd.Parameters.Add(“@id”, 5);
cmd.Parameters.Add(“@ten”, “Nguy n Văn A”);
cmd.Parameters.Add(“@dtb”, 8.5);
Đ t giá tr cho các parameter
foreach (Student s in studentList)
{
cmd.Parameters[“@id”] = i;
cmd.Parameters[“@ten”] = s.studentName;
cmd.Parameters[“@dtb”] = s.studentMarks;
cmd.ExecuteNonQuery();
}
42
- 43. L p trình Windows Form v i C#
Lương Tr n Hy Hi n © 2010 Khoa CNTT – ĐH Sư Ph m TpHCM
Parameter(cont) – MS Access
Ví d
OleDbCommand cmd = new OleDbCommand();
cmd.Connection = cnn;
cmd.CommandText = "INSERT INTO Hocsinh VALUES
(@Ma,@Ten,@Diachi,@NgaySinh,@Toan,@Van)“;
OleDbParameter para=cmd.Parameters.Add("@Ma",OleDbType.Integer);
para.Value=1;
para=cmd.Parameters.Add("@Ten",OleDbType.VarWChar);
para.Value= N"Lê Văn A";
para=cmd.Parameters.Add("@Diachi",OleDbType.VarWChar);
para.Value= N"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();
43
- 44. L p trình Windows Form v i C#
Lương Tr n Hy Hi n © 2010 Khoa CNTT – ĐH Sư Ph m TpHCM
.NET Data Provider – DataReader
MaHS HoTen DiaChi
i HocSinh I DiaChi i
Data SourceApplication
Connection
Command
DataReader
ExecuteReader()
Read()
011010011011010011
- 45. L p trình Windows Form v i C#
Lương Tr n Hy Hi n © 2010 Khoa CNTT – ĐH Sư Ph m TpHCM
.NET Data Provider – DataReader
DataReader là gì?
– Ch di chuy n t i phía trư c, ch đ c
– truy c p d li u nhanh,
– k t n i đ n ngu n d li u (data source)
– Qu n lý d li u, ho c ràng bu c vào đi u khi n list-
bound
– S d ng tài nguyên
45
- 46. L p trình Windows Form v i C#
Lương Tr n Hy Hi n © 2010 Khoa CNTT – ĐH Sư Ph m TpHCM
.NET Data Provider - DataReader
Các đ i tư ng DataReader tuân th
interface IDataReader.
HasRow: cho bi t còn d li u đ đ c n a không.
Read(): đ c m t m u tin vào DataReader.
Toán t [ i ]: truy xu t đ n c t i trong m u tin đ c đư c.
Close(): đóng DataReader.
Lưu ý:
Truy xu t tu n t và không quay lui.
Không c p nh t d li u.
Cơ ch k t n i.
46
- 47. L p trình Windows Form v i C#
Lương Tr n Hy Hi n © 2010 Khoa CNTT – ĐH Sư Ph m TpHCM
.NET Data Provider – DataReader (cont)
SqlConnection cnn = new SqlConnection(“server=localhost;
database=Northwind; user id=sa; password=sa”);
SqlCommand cmd = new SqlCommand();
cmd.Connection = cnn;
cmd.CommandText = “select * from Orders”;
cmd.CommandType = CommandType.Text;
cnn.Open();
SqlDataReader dr = cmd.ExecuteReader();
while (dr.Read())
{
MessageBox.Show(dr[“CustomerID”].ToString());
}
dr.Close();
cnn.Close();
47
- 48. L p trình Windows Form v i C#
Lương Tr n Hy Hi n © 2010 Khoa CNTT – ĐH Sư Ph m TpHCM
DataReader (cont) – MS Access
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))
MessageBox.Show(dr[“CustomerID”].ToString());
}
48
- 49. L p trình Windows Form v i C#
Lương Tr n Hy Hi n © 2010 Khoa CNTT – ĐH Sư Ph m TpHCM
.NET Data Provider - SqlDataAdapter
B đ c d li u t CSDL ngu n
(SQLServer) và đ vào đ i tư ng DataSet
hay DataTable.
Phân trang d li u
Phương th c:
– Fill(datasource)
– Fill(datasource, start, number, “tablename”)
49
- 50. L p trình Windows Form v i C#
Lương Tr n Hy Hi n © 2010 Khoa CNTT – ĐH Sư Ph m TpHCM
.NET Data Provider - DataAdapter
Các đ i tư ng DataAdapter tuân th interface
IDbDataAdapter.
Fill(DataSet): dùng SelectCommand l y d li u t Data Source
đ vào DataSet.
Update(DataSet): dùng InsertCommand, UpdateCommand và
DeleteCommand c p nh t d li u trong DataSet vào Data
Source.
SelectCommand
UpdateCommand
InsertCommand
DeleteCommand
DataAdapter
Data Source
DataSet
50
- 51. L p trình Windows Form v i C#
Lương Tr n Hy Hi n © 2010 Khoa CNTT – ĐH Sư Ph m TpHCM
.NET Data Provider – DataAdapter (cont)
SqlConnection cnn = new
SqlConnection(“server=localhost;
database=Northwind; user id=sa; password=sa”);
SqlDataAdapter da = new SqlDataAdapter(“select *
from Orders”, cnn)
DataSet ds = new DataSet();
da.Fill(ds);
// Does something on the DataSet.
da.Update(ds);
51
- 52. L p trình Windows Form v i C#
Lương Tr n Hy Hi n © 2010 Khoa CNTT – ĐH Sư Ph m TpHCM
N i dung
Sơ lư c l ch s phát tri n
Ki n trúc ADO.NET
.NET Data Provider
DataSet
H i & Đáp
52
- 53. L p trình Windows Form v i C#
Lương Tr n Hy Hi n © 2010 Khoa CNTT – ĐH Sư Ph m TpHCM
System.Data namespace
DataSet — This object is designed for disconnected use and can
contain a set of DataTables and include relationships between these
tables.
DataTable — A container of data that consists of one or more
DataColumns and, when populated, will have one or more DataRows
containing data.
DataRow — A number of values, akin to a row from a database table, or
a row from a spreadsheet.
DataColumn — This object contains the definition of a column, such as
the name and data type.
DataRelation — A link between two DataTable classes within a DataSet
class. Used for foreign key and master/detail relationships.
Constraint — This class defines a rule for a DataColumn class (or set
of data columns), such as unique values.
53
- 54. L p trình Windows Form v i C#
Lương Tr n Hy Hi n © 2010 Khoa CNTT – ĐH Sư Ph m TpHCM
DataSet
DataSet là cơ s d li u đư c lưu tr trong b nh chính (in-
memory database).
Cơ ch không k t n i.
G m các đ i tư ng
– DataTable
– DataRelation
Data Source
DataSet
DataSet là gì?
Ánh x
54
- 55. L p trình Windows Form v i C#
Lương Tr n Hy Hi n © 2010 Khoa CNTT – ĐH Sư Ph m TpHCM
DataSet (cont)
DataSet
DataTable
Columns
Rows
DataColumn
DataRow
Tables
Relations DataRelation
55
- 56. L p trình Windows Form v i C#
Lương Tr n Hy Hi n © 2010 Khoa CNTT – ĐH Sư Ph m TpHCM
Các phương th c c a DataSet
Thêm 1 đ i tư ng DataTable:
ds.Tables.Add(datatable_name);
Xóa 1 đ i tư ng:
– ds.Tables.Remove(datatable_name);
– ds.Table.RemoveAt(datatable_index);
Lo i b t t c DataTable: ds.Tables.Clear();
Ki m tra t n t i:
ds.Tables.Contains(datatable_name);
Ki m tra t n t i và có th xóa đư c:
ds.Tables.CanRemove(datatable_name);
Đ m s lư ng DataTable: ds.Tables.Count (thu c
tính)
56
- 57. L p trình Windows Form v i C#
Lương Tr n Hy Hi n © 2010 Khoa CNTT – ĐH Sư Ph m TpHCM
Các phương th c c a DataSet
Ghi ra file XML: ds.WriteXml(ten_file_xml);
Đ c t file XML: ds.ReadXml(ten_file_xml);
57
- 58. L p trình Windows Form v i C#
Lương Tr n Hy Hi n © 2010 Khoa CNTT – ĐH Sư Ph m TpHCM
DataSet - DataTable
DataTable th hi n m t b ng trong cơ s
d li u.
G m các đ i tư ng:
– DataColumn
– DataRow
Các thu c tính và phương th c:
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.
58
- 59. L p trình Windows Form v i C#
Lương Tr n Hy Hi n © 2010 Khoa CNTT – ĐH Sư Ph m TpHCM
DataSet - DataColumn
DataColumn th hi n m t c t trong b ng.
Các thu c tính và phương th c:
ColumnName: tên c t.
DataType: ki u d li u c t.
59
- 60. L p trình Windows Form v i C#
Lương Tr n Hy Hi n © 2010 Khoa CNTT – ĐH Sư Ph m TpHCM
DataSet - DataRow
DataRow th hi n m t m u tin trong b ng.
Các thu c tính và phương th c:
RowState: tr ng thái c a m u tin (Added,
Modified, Deleted, Unchanged, Detach).
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.
60
- 61. L p trình Windows Form v i C#
Lương Tr n Hy Hi n © 2010 Khoa CNTT – ĐH Sư Ph m TpHCM
DataSet (cont)
DataTable table = new DataTable(“SinhVien”);
table.Columns.Add(new DataColumn(“MSSV”, Type.GetType(“Int32”));
table.Columns.Add(new DataColumn(“HoTen”, Type.GetType(“string”));
table.PrimaryKey = new DataColumn[] { table.Columns[“MSSV”] };
DataRow row = table.NewRow();
row[“MSSV”] = 123;
row[“HoTen”] = “Nguy n Văn A”;
table.Rows.Add(row);
61
- 62. L p trình Windows Form v i C#
Lương Tr n Hy Hi n © 2010 Khoa CNTT – ĐH Sư Ph m TpHCM
DataSet (cont)
SqlConnection cnn = new
SqlConnection(“server=HIENLTH-PCSQLEXPRESS;
database=Northwind; user id=sa; password=sa”);
SqlDataAdapter da = new SqlDataAdapter(“select * from
Orders”, cnn)
DataSet ds = new DataSet();
da.Fill(ds);
foreach (DataRow row in ds.Tables[0].Rows)
row[“OrderDate”] = DateTime.Now;
da.Update(ds);
62
- 63. L p trình Windows Form v i C#
Lương Tr n Hy Hi n © 2010 Khoa CNTT – ĐH Sư Ph m TpHCM
DataSet (cont)
SqlConnection cnn = new SqlConnection(“server=HIENLTH-
PCSQLEXPRESS; database=Northwind; user id=sa;
password=sa”);
SqlDataAdapter da = new SqlDataAdapter(“select * from Orders”,
cnn)
DataSet ds = new DataSet();
da.Fill(ds);
foreach (DataRow row in ds.Tables[0].Rows)
if (row[“CustomerID”].ToString() == “Nguy n Văn A”)
row.Delete();
da.Update(ds);
63
- 64. L p trình Windows Form v i C#
Lương Tr n Hy Hi n © 2010 Khoa CNTT – ĐH Sư Ph m TpHCM
DataSet (cont)
So sánh DataSet và DataReader:
T c đ truy xu t.
Bô nh lưu tr .
Thu n ti n trong thao tác.
Cơ ch k t n i và không k t n i.
64
- 65. L p trình Windows Form v i C#
Lương Tr n Hy Hi n © 2010 Khoa CNTT – ĐH Sư Ph m TpHCM
DataSet (cont) – MS Access
Đ 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());
}
65
- 66. L p trình Windows Form v i C#
Lương Tr n Hy Hi n © 2010 Khoa CNTT – ĐH Sư Ph m TpHCM
DataSet (cont) – MS Access
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 = dsHocSinh.Tables["HocSinh"].Rows[1];
row.BeginEdit();
row[0] = 11;
row[1] = "Lê Th C";
row.EndEdit();
66
- 67. L p trình Windows Form v i C#
Lương Tr n Hy Hi n © 2010 Khoa CNTT – ĐH Sư Ph m TpHCM
DataSet (cont) – MS Access
C p nh t d li u xu ng CSDL
OleDbCommandBuilder buider =
new OleDbCommandBuilder(da);
da.Update(dsHocSinh, "HocSinh");
67
- 68. Bài gi ng môn h c
L p trình Windows Form v i C#
Trình bày d li u
- 69. L p trình Windows Form v i C#
Lương Tr n Hy Hi n © 2010 Khoa CNTT – ĐH Sư Ph m TpHCM
Nh c l i SqlDataAdapter
SqlDataAdapter đư c dùng đ đi n d li u vào đ i tư ng
DataSet, DataTable và c p nh t d li u t hai đ i tư ng này
tr l i d li u ngu n.
Các trư ng h p t o đ i tư ng SqlDataAdapter:
– SqlDataAdapter(string SQL, SqlConnection cnn);
– SqlDataAdapter(SqlCommand cmd);
Đi n d li u:
– sqlDataAdapter.Fill(datasetname);
– sqlDataAdapter.Fill(datatable);
– sqlDataAdapter(DataSet dataset, int start, int end);
– sqlDataAdapter(int start, int end, DataTable datatable);
Phân
trang
69
- 70. L p trình Windows Form v i C#
Lương Tr n Hy Hi n © 2010 Khoa CNTT – ĐH Sư Ph m TpHCM
C p nh t d li u t DataAdapter
Trong Form khai báo các thu c tính là đ i
tư ng DataSet (hay DataTable)
L y d li u: Đ d li u vào DataSet
dataAdapter.Fill(dataset);
C p nh t d li u: C p nh t d li u t
DataSet vào CSDL
dataAdapter.Update(dataset);
70
- 71. L p trình Windows Form v i C#
Lương Tr n Hy Hi n © 2010 Khoa CNTT – ĐH Sư Ph m TpHCM
DataView
Th hi n c a 1 DataTable.
Đóng vai trò quan tr ng trong DataBinding
1 DataTable có th có nhi u View khác nhau
Dùng đ trình bày d li u dư i hình th c l c, s p
x p, tìm ki m, hi u ch nh và đi u hư ng d li u
trong DataTable
DataTable
DataViewDataViewDataView
71
- 72. L p trình Windows Form v i C#
Lương Tr n Hy Hi n © 2010 Khoa CNTT – ĐH Sư Ph m TpHCM
Khai báo DataView
Có th s d ng các cú pháp sau:
– dataView = new DataView();
dataView.Table = dataTable;
– dataView = new DataView(dataTable);
– dataView = new DataView(dataTable, sortFilter,
sortString, DataViewRowState);
72
- 73. L p trình Windows Form v i C#
Lương Tr n Hy Hi n © 2010 Khoa CNTT – ĐH Sư Ph m TpHCM
DataView
Tên Ý nghĩa
AllowDelete Cho phép xóa trên thể hiện
AllowEdit Cho phép chỉnh sửa
AllowNew Cho phép thêm mới
Item (index) Lấy giá trị value tại column có chỉ số index
RowFilter Thiết lập Expression dùng để lọc row
Sort Sắp xếp tăng hoặc giảm theo column
Table Cho biết view này được tạo bởi table nào
Count Lấy số lượng mẫu tin có trong DataView
Danh sách các thu c tính
73
- 74. L p trình Windows Form v i C#
Lương Tr n Hy Hi n © 2010 Khoa CNTT – ĐH Sư Ph m TpHCM
DataView
Tên Ý nghĩa
AddNew Thêm mới 1 mẫu tin
Delete(index) Xóa mẫu tin thứ index
Danh sách các phương th c
74
- 75. L p trình Windows Form v i C#
Lương Tr n Hy Hi n © 2010 Khoa CNTT – ĐH Sư Ph m TpHCM75
- 76. L p trình Windows Form v i C#
Lương Tr n Hy Hi n © 2010 Khoa CNTT – ĐH Sư Ph m TpHCM
DataBinding
Hi n th d li u trong DataTable, … vào các
control (TextBox, ComboBox, DataGrid, …)
G m 2 lo i:
– Simple Binding
– Complex Binding
Ví d : Đi n n i dung b ng TonGiao vào
ComboBox Tôn Giáo
DataTable bang = ketnoi.GetDataTable(“SELECT * FROM
TonGiao”);
cboTonGiao.DataSource = bang;
cboTonGiao.DisplayMember =
bang.Columns[1].ToString();//TenTG
cboTonGiao.SelectedValue =
bang.Columns[0].ToString();//MaTG
76
- 77. L p trình Windows Form v i C#
Lương Tr n Hy Hi n © 2010 Khoa CNTT – ĐH Sư Ph m TpHCM
Đưa d li u vào lư i DataGridView
77
- 78. L p trình Windows Form v i C#
Lương Tr n Hy Hi n © 2010 Khoa CNTT – ĐH Sư Ph m TpHCM
Đi n d li u vào DataGridView
datagridview.DataSource = datatable;
datagridview.DataSource =
dataset.Tables[index];
78
- 79. L p trình Windows Form v i C#
Lương Tr n Hy Hi n © 2010 Khoa CNTT – ĐH Sư Ph m TpHCM
DataGridView (tt)
Các thu c tính c a DataGridView:
– DataSource: đi n d li u vào DataGridView
– CurrentRow: l y m u tin đang ch n
– CurrentCell: l y ô đang ch n
Các bi n c (Event) c a DataGridView:
– SelectionChanged: x y ra khi ngư i dùng di
chuy n vào vùng d li u
– DoubleClick
79
- 80. L p trình Windows Form v i C#
Lương Tr n Hy Hi n © 2010 Khoa CNTT – ĐH Sư Ph m TpHCM
N i dung
Sơ lư c l ch s phát tri n
Ki n trúc ADO.NET
.NET Data Provider
DataSet
H i & Đáp
80
- 81. L p trình Windows Form v i C#
Lương Tr n Hy Hi n © 2010 Khoa CNTT – ĐH Sư Ph m TpHCM
Tham kh o
Bài gi ng ADO.NET c a th y Nguy n Minh
Huy, ĐH KHTN TpHCM
MSDN
81
- 82. L p trình Windows Form v i C#
Lương Tr n Hy Hi n © 2010 Khoa CNTT – ĐH Sư Ph m TpHCM82