SlideShare una empresa de Scribd logo
1 de 82
Descargar para leer sin conexión
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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.
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Bài gi ng môn h c
L p trình Windows Form v i C#
Trình bày d li u
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
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
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
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
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
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
L p trình Windows Form v i C#
Lương Tr n Hy Hi n © 2010 Khoa CNTT – ĐH Sư Ph m TpHCM75
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
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
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
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
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
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
L p trình Windows Form v i C#
Lương Tr n Hy Hi n © 2010 Khoa CNTT – ĐH Sư Ph m TpHCM82

Más contenido relacionado

Similar a Cs06

Bài 4: Lập trình với CSDL ADO.NET & Kiến trúc không kết nối & Lập trình giao ...
Bài 4: Lập trình với CSDL ADO.NET & Kiến trúc không kết nối & Lập trình giao ...Bài 4: Lập trình với CSDL ADO.NET & Kiến trúc không kết nối & Lập trình giao ...
Bài 4: Lập trình với CSDL ADO.NET & Kiến trúc không kết nối & Lập trình giao ...MasterCode.vn
 
Nghiên Cứu Phân Tích Thiết Kế Hệ Thống Quản Lý Cán Bộ, Công Chức, Viên Chức T...
Nghiên Cứu Phân Tích Thiết Kế Hệ Thống Quản Lý Cán Bộ, Công Chức, Viên Chức T...Nghiên Cứu Phân Tích Thiết Kế Hệ Thống Quản Lý Cán Bộ, Công Chức, Viên Chức T...
Nghiên Cứu Phân Tích Thiết Kế Hệ Thống Quản Lý Cán Bộ, Công Chức, Viên Chức T...Dịch vụ viết đề tài trọn gói 0934.573.149
 
đồ áN thiết kế web tuyển dụng sử dụng asp.net
đồ áN thiết kế web tuyển dụng sử dụng asp.netđồ áN thiết kế web tuyển dụng sử dụng asp.net
đồ áN thiết kế web tuyển dụng sử dụng asp.netnataliej4
 
S vnet.vn 51. [silde bài giảng] lập trình trên môi trường windows với ado.net...
S vnet.vn 51. [silde bài giảng] lập trình trên môi trường windows với ado.net...S vnet.vn 51. [silde bài giảng] lập trình trên môi trường windows với ado.net...
S vnet.vn 51. [silde bài giảng] lập trình trên môi trường windows với ado.net...zzsunzz
 
Bài 2 - Công nghệ ADO.NET với C#
Bài 2 - Công nghệ ADO.NET với C#Bài 2 - Công nghệ ADO.NET với C#
Bài 2 - Công nghệ ADO.NET với C#MasterCode.vn
 
Web course php & csdl
Web course   php & csdlWeb course   php & csdl
Web course php & csdl慂 志慂
 
2012 b01-chuong1-cac lop giao thuc p2 p-sv
2012 b01-chuong1-cac lop giao thuc p2 p-sv2012 b01-chuong1-cac lop giao thuc p2 p-sv
2012 b01-chuong1-cac lop giao thuc p2 p-svBền Văn
 
Web Architecture
Web ArchitectureWeb Architecture
Web ArchitectureHiep Luong
 
C1-Tong-quan-.NET-C.pdf
C1-Tong-quan-.NET-C.pdfC1-Tong-quan-.NET-C.pdf
C1-Tong-quan-.NET-C.pdfTrieuThuHuong1
 
1. giới thiệu về ng￴n ngữ lập trình c#
1. giới thiệu về ng￴n ngữ lập trình c#1. giới thiệu về ng￴n ngữ lập trình c#
1. giới thiệu về ng￴n ngữ lập trình c#Duy Lê Văn
 
Hướng nghiệp Lập trình Web
Hướng nghiệp Lập trình WebHướng nghiệp Lập trình Web
Hướng nghiệp Lập trình WebVKhang Yang
 
Bài 5: ADO.NET & Kiến trúc không kết nối (tiếp) Điều khiển DataGridView,Combo...
Bài 5: ADO.NET & Kiến trúc không kết nối (tiếp) Điều khiển DataGridView,Combo...Bài 5: ADO.NET & Kiến trúc không kết nối (tiếp) Điều khiển DataGridView,Combo...
Bài 5: ADO.NET & Kiến trúc không kết nối (tiếp) Điều khiển DataGridView,Combo...MasterCode.vn
 
CVNguyenThanhLam-102015-Vi
CVNguyenThanhLam-102015-ViCVNguyenThanhLam-102015-Vi
CVNguyenThanhLam-102015-ViLam Nguyen
 

Similar a Cs06 (20)

01 tong-quan-ado
01 tong-quan-ado01 tong-quan-ado
01 tong-quan-ado
 
Dotnet
DotnetDotnet
Dotnet
 
Bài 4: Lập trình với CSDL ADO.NET & Kiến trúc không kết nối & Lập trình giao ...
Bài 4: Lập trình với CSDL ADO.NET & Kiến trúc không kết nối & Lập trình giao ...Bài 4: Lập trình với CSDL ADO.NET & Kiến trúc không kết nối & Lập trình giao ...
Bài 4: Lập trình với CSDL ADO.NET & Kiến trúc không kết nối & Lập trình giao ...
 
Nghiên Cứu Phân Tích Thiết Kế Hệ Thống Quản Lý Cán Bộ, Công Chức, Viên Chức T...
Nghiên Cứu Phân Tích Thiết Kế Hệ Thống Quản Lý Cán Bộ, Công Chức, Viên Chức T...Nghiên Cứu Phân Tích Thiết Kế Hệ Thống Quản Lý Cán Bộ, Công Chức, Viên Chức T...
Nghiên Cứu Phân Tích Thiết Kế Hệ Thống Quản Lý Cán Bộ, Công Chức, Viên Chức T...
 
đồ áN thiết kế web tuyển dụng sử dụng asp.net
đồ áN thiết kế web tuyển dụng sử dụng asp.netđồ áN thiết kế web tuyển dụng sử dụng asp.net
đồ áN thiết kế web tuyển dụng sử dụng asp.net
 
S vnet.vn 51. [silde bài giảng] lập trình trên môi trường windows với ado.net...
S vnet.vn 51. [silde bài giảng] lập trình trên môi trường windows với ado.net...S vnet.vn 51. [silde bài giảng] lập trình trên môi trường windows với ado.net...
S vnet.vn 51. [silde bài giảng] lập trình trên môi trường windows với ado.net...
 
Bài 2 - Công nghệ ADO.NET với C#
Bài 2 - Công nghệ ADO.NET với C#Bài 2 - Công nghệ ADO.NET với C#
Bài 2 - Công nghệ ADO.NET với C#
 
Luận văn: Tìm hiểu kỹ thuật lập trình Network Service, HOT
Luận văn: Tìm hiểu kỹ thuật lập trình Network Service, HOTLuận văn: Tìm hiểu kỹ thuật lập trình Network Service, HOT
Luận văn: Tìm hiểu kỹ thuật lập trình Network Service, HOT
 
Web course php & csdl
Web course   php & csdlWeb course   php & csdl
Web course php & csdl
 
2012 b01-chuong1-cac lop giao thuc p2 p-sv
2012 b01-chuong1-cac lop giao thuc p2 p-sv2012 b01-chuong1-cac lop giao thuc p2 p-sv
2012 b01-chuong1-cac lop giao thuc p2 p-sv
 
08 web course php ket noi csdl
08 web course   php ket noi csdl08 web course   php ket noi csdl
08 web course php ket noi csdl
 
Web Architecture
Web ArchitectureWeb Architecture
Web Architecture
 
C1-Tong-quan-.NET-C.pdf
C1-Tong-quan-.NET-C.pdfC1-Tong-quan-.NET-C.pdf
C1-Tong-quan-.NET-C.pdf
 
1. giới thiệu về ng￴n ngữ lập trình c#
1. giới thiệu về ng￴n ngữ lập trình c#1. giới thiệu về ng￴n ngữ lập trình c#
1. giới thiệu về ng￴n ngữ lập trình c#
 
Slide Bao cao
Slide Bao caoSlide Bao cao
Slide Bao cao
 
Bai1.pdf
Bai1.pdfBai1.pdf
Bai1.pdf
 
Hướng nghiệp Lập trình Web
Hướng nghiệp Lập trình WebHướng nghiệp Lập trình Web
Hướng nghiệp Lập trình Web
 
Bài 5: ADO.NET & Kiến trúc không kết nối (tiếp) Điều khiển DataGridView,Combo...
Bài 5: ADO.NET & Kiến trúc không kết nối (tiếp) Điều khiển DataGridView,Combo...Bài 5: ADO.NET & Kiến trúc không kết nối (tiếp) Điều khiển DataGridView,Combo...
Bài 5: ADO.NET & Kiến trúc không kết nối (tiếp) Điều khiển DataGridView,Combo...
 
CVNguyenThanhLam-102015-Vi
CVNguyenThanhLam-102015-ViCVNguyenThanhLam-102015-Vi
CVNguyenThanhLam-102015-Vi
 
Đề tài: Xây dựng Web bán và giới thiệu văn phòng phẩm, HAY
Đề tài: Xây dựng Web bán và giới thiệu văn phòng phẩm, HAYĐề tài: Xây dựng Web bán và giới thiệu văn phòng phẩm, HAY
Đề tài: Xây dựng Web bán và giới thiệu văn phòng phẩm, HAY
 

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