Professional Documents
Culture Documents
NET
Lng Tr n Hy Hi n hienlth@hcmup.edu.vn
N i dung
ADO.NET S l c l ch s pht tri n Ki n trc ADO.NET .NET Data Provider DataSet H i & p
Gi i thi u ADO.NET
ActiveX Data Object .NET (ADO.NET)
Cng ngh c a MS Pht tri n t n n t ng ADO Cung c p cc l p i t ng v hm th vi n ph c v cho vi c k t n i v x l d li u
Gi i thi u ADO.NET
M hnh .NET Framework
Microsoft .NET Framework
Web Services
User Interface
Data and XML ADO.NET XML Base Classes Common Language Runtime ... ...
N i dung
ADO.NET
S l c l ch s
Native API
pht tri n
DB API DB API DB API
Application Database
Driver
ODBC API
DB API DB API
ODBC
Driver Driver
Application Database
6
S l c l ch s
OLEDB v ADO
Provider
Non-Relational Data
Provider Provider
Driver
ODBC Driver
Driver
Relational Data
Introduction
Stored into
ADO.NET
Client Data access technology
9
ADO.NET architecture
XML XML
Database
10
ADO.NET (tt)
H tr b i .Net Platform S d ng cng ngh XML chuy n i d li u. Tng tc v i t t c cc lo i c s d li u. Kh nng th c thi nhanh. S d ng cho cc lo i ng d ng client-server.
11
N i dung
ADO.NET S l c l ch s pht tri n Ki n trc ADO.NET .NET Data Provider DataSet H i & p
12
Ki n trc
Connected Model
Chng trnh
Disconnected Model
Chng trnh
13
ADO.NET
ADO.NET l m t ph n c a .NET Framework
Th vi n l p c ch c nng x l d li u trong ngn ng MS.NET
14
ADO.NET
ADO.NET m nh m
K th a cc u i m c a ADO K t h p v i t ng thi t k hon ton m i
c i m n i b t
Thi t k hon ton d a vo XML
Chu n giao ti p d li u t t nh t trn mi tr ng Internet hi n nay
15
ADO
Recordset : tng ng 1 bng d liu trong database Recordset ch cho php duyt tun t, tng dng mt. Recordset thin v hng kt ni, nn vic h tr ngt kt ni khng mnh Kh nng trao i d liu ADO qua Internet thng c nhiu hn ch. Do dng chun COM
ADO.NET
Dataset : tng ng 1 database
Dataset : duyt t do, ngu nhin, truy cp thng ti bng, dng ,ct mong mun. Dataset h tr hon ton ngt kt ni
D liu ngt kt ni
ADO.NET trao i d liu qua Internet rt d dng v ADO.NET c thit k theo chun XML, l chun d liu chnh c s dng trao i trn Internet.
16
Mi tr ng connected
M i user c m t k t n i c nh t i data source u i m
Mi tr ng c b o v t t Ki m sot c s ng b D li u lun c m i
Nh c
Ph i c m t k t n i m ng c nh Scalability
17
Mi tr ng disconnected
M t t p con c a d li u trung tm c sao chp v b sung c l p, sau s c merge l i vo d li u trung tm. u i m
C th lm vi c b t c lc no, cng nh c th k t n i b t k vo Data Source Cho php user khc c th k t n i Nng cao hi u su t th c hi n c a ng d ng
Khuy t
D li u khng c c p nh t m t cch nhanh nh t S tranh ch p c th xu t hi n v ph i gi i quy t
18
ADO.NET
Ki n trc c a ADO.NET g m 2 ph n chnh Ph n k t n i s d ng khi k t n i CSDL v thao i: tc d li u, ph i th c hi n k t n i khi thao tc
Connection: Connection qu n l vi c ng m DB ???Connection: SqlConnection, OleDbConnection Command: Command l nh truy v n, tng tc d li u khi ang l p k tn i ???Command: SqlCommand, OleDbCommand DataReader: DataReader c d li u, ch x l 1 dng d li u t i m t th i i m ???DataReader: SqlDataReader, OleDbDataReader DataAdapter: DataAdapter c u n i gi a DB v DataSet
19
ADO.NET
Ph n ng t k t n i l DataSet i:
DataSet khng quan tm n Database thu c ki u g, v l y d li u t DataAdapter x l DataSet xem nh m t Database trong b nh : b ng, quan h DataSet c cc thnh ph n con nh
DataTable DataRow DataColumn DataRelation Cc i t ng nhm: DataTableCollection, DataRowCollection, DataColumnCollection
20
M hnh i t ng ADO.NET
21
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
Cc 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 trn v giao ti p l p trnh l gi ng nhau Dng th vi n SqlClient truy xu t SQL Server nhanh hn OleDb Tng t cho OracleClient
23
N i dung
ADO.NET S l c l ch s pht tri n Ki n trc ADO.NET .NET Data Provider DataSet H i & p
24
Database-Specific Classes
IDbCommand Used as wrappers for SQL statements or stored procedure calls. IDbCommandBuilder Used to generate SQL commands (such as INSERT, UPDATE, and DELETE statements) from a SELECT statement. IDbConnection Used to connect to the database. Similar to an ADO Connection. IDbDataAdapter Used to hold select, insert, update, and delete commands, which are then used to populate a DataSet and update the Database. IDbDataReader Used as a forward only, connected data reader. IDbParameter Used to define a parameter to a stored procedure. IDbTransaction Used for a database transaction, wrapped in an object.
25
???DataAdapter
SelectCommand
???Command
Parameters ???Parameter
InsertCommand
UpdateCommand
???DataReader
DeleteCommand 26
Connected Model
K t n i vo CSDL Th c hi n l nh
Thm/Xa/S a d li u c d li u t CSDL
27
Connected Model
K t n i vo CSDL
Cc l p ph trch k t n i
ODBCConnection OleDBConnection SqlConnection OracleConnection
Phng th c quan tr ng
Open: m k t n i Close: ng k t n i
28
29
30
31
SQL2005 ConnectionString
Theo c quy n c a SQL Server (c user, pass):
server= HIENLTH-PC\SQLEXPRESS; database = QLHS; user id=sa; password=sa
32
T p tin lu tr
k tn i
Cho php ng i dng c th c u hnh cc gi tr thu c tnh cho chu i k t n i CSDL. Th ng c d ng *.ini, *.txt. T .NET 1.0 tr ln c th s d ng t p tin App.config ( nh d ng XML) ch a khai bo cc tham s cng gi tr v cc ch th khc. V d : T p tin DBConfig.ini
33
k t
34
k t
<?xml version="1.0" encoding="utf-8" ?> <configuration> <connectionStrings> <add name="SqlServer" connectionString="server=HIENLTHPC\sqlexpress;database=SEQLHS;integrated security=true" providerName="System.Data.SqlClient"/> </connectionStrings> </configuration>
35
k t
con.ConnectionString =
ConfigurationManager.ConnectionStrings[SqlServer "]. ConnectionString;
36
Command
37
38
40
V d:
OleDbCommand cmd = new OleDbCommand(); cmd.Connection = cnn; cmd.CommandText = INSERT INTO Hocsinh VALUES(5, 'L Vn Xim','11/12/2006', 'Khnh Ha', '221 Nguy n Vn C ')"; cmd.ExecuteNonQuery();
41
Cc b c th c hi n:
Tham s ha cu l nh: ? ho c @[tn tham s ]. T o cc parameters tng ng cho command. t gi tr cho cc parameter m i khi dng command th c hi n cu l nh.
42
Cc provider khc:
cmd.CommandText = SELECT * FROM HocSinh WHERE tenhocsinh = ?; cmd.CommandText = INSERT INTO HocSinh(id_hocsinh, tenhocsinh, dtb) + VALUES(?, ?, ?);
43
t gi tr cho cc parameter
foreach (Student s in studentList) { cmd.Parameters[@id] = i; cmd.Parameters[@ten] = s.studentName; cmd.Parameters[@dtb] = s.studentMarks; cmd.ExecuteNonQuery(); }
44
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 Vn A"; para=cmd.Parameters.Add("@Diachi",OleDbType.VarWChar); para.Value= N"Nguy n Vn 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();
45
Command
MaHS i HoTen HocSinh I DiaChi DiaChi i
46
47
Lu :
Truy xu t tu n t v khng quay lui. Khng c p nh t d li u. C ch k t n i.
48
49
51
DataSet
InsertCommand UpdateCommand
Data Source
DeleteCommand
52
53
N i dung
S l c l ch s pht tri n Ki n trc ADO.NET .NET Data Provider DataSet H i & p
54
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.
55
DataSet
DataSet l g?
nh x DataSet Data Source
DataSet l c s d li u c lu tr trong b nh chnh (in-memory database). C ch khng k t n i.
G m cc i t ng
DataTable DataRelation
56
DataSet (cont)
DataSet
Tables
Columns
DataTable
DataColumn
Rows
DataRow
Relations
DataRelation
57
Cc phng th c c a DataSet
Thm 1 i t ng DataTable: ds.Tables.Add(datatable_name); Xa 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 xa c: ds.Tables.CanRemove(datatable_name); m s l ng DataTable: ds.Tables.Count (thu c tnh)
58
Cc phng th c c a DataSet
Ghi ra file XML: ds.WriteXml(ten_file_xml); c t file XML: ds.ReadXml(ten_file_xml);
59
DataSet - DataTable
DataTable th hi n m t b ng trong c s d li u. G m cc i t ng:
DataColumn DataRow
60
DataSet - DataColumn
DataColumn th hi n m t c t trong b ng. Cc thu c tnh v phng th c:
ColumnName: tn c t. DataType: ki u d li u c t.
61
DataSet - DataRow
DataRow th hi n m t m u tin trong b ng. Cc thu c tnh v phng th c:
RowState: tr ng thi c a m u tin (Added, Modified, Deleted, Unchanged, Detach). Ton t [i]: truy xu t n c t i c a m u tin. Delete(): nh d u xa m u tin.
62
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 Vn A; table.Rows.Add(row);
63
DataSet (cont)
SqlConnection cnn = new SqlConnection(server=HIENLTH-PC\SQLEXPRESS; 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);
64
DataSet (cont)
SqlConnection cnn = new SqlConnection(server=HIENLTH-PC\SQLEXPRESS; 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 Vn A) row.Delete(); da.Update(ds);
65
DataSet (cont)
So snh DataSet v DataReader:
T c truy xu t. B nh lu tr . Thu n ti n trong thao tc. C ch k t n i v khng k t n i.
66
69
Trnh by d li u
70
Nh c l i SqlDataAdapter
SqlDataAdapter c dng i n d li u vo i t ng DataSet, DataTable v c p nh t d li u t hai i t ng ny tr l i d li u ngu n. Cc 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);
71
Phn trang
C p nh t d li u t DataAdapter
Trong Form khai bo cc thu c tnh l i t ng DataSet (hay DataTable) L y d li u: d li u vo DataSet dataAdapter.Fill(dataset); C p nh t d li u: C p nh t d li u t DataSet vo CSDL dataAdapter.Update(dataset);
72
DataView
Th hi n c a 1 DataTable. ng vai tr quan tr ng trong DataBinding 1 DataTable c th c nhi u View khc nhau Dng trnh by d li u d i hnh th c l c, s p x p, tm ki m, hi u ch nh v i u h ng d li u trong DataTable
DataView
DataView
DataView
DataTable
73
Khai bo DataView
C th s d ng cc c php sau:
dataView = new DataView(); dataView.Table = dataTable; dataView = new DataView(dataTable); dataView = new DataView(dataTable, sortFilter, sortString, DataViewRowState);
74
DataView
Danh sch cc thu c tnh
Tn AllowDelete AllowEdit AllowNew Item (index) RowFilter Sort Table Count ngha Cho php xa trn th hin Cho php chnh sa Cho php thm mi Ly gi tr value ti column c ch s index Thit lp Expression dng lc row Sp xp tng hoc gim theo column Cho bit view ny c to bi table no Ly s lng mu tin c trong DataView
75
DataView
Danh sch cc phng th c
Tn AddNew Delete(index) ngha Thm mi 1 mu tin Xa mu tin th index
76
77
DataBinding
Hi n th d li u trong DataTable, vo cc control (TextBox, ComboBox, DataGrid, ) G m 2 lo i:
Simple Binding Complex Binding
a d li u vo l i DataGridView
79
i n d
li u vo DataGridView
80
DataGridView (tt)
Cc thu c tnh c a DataGridView:
DataSource: i n d li u vo DataGridView CurrentRow: l y m u tin ang ch n CurrentCell: l y ang ch n
Cc bi n c (Event) c a DataGridView:
SelectionChanged: x y ra khi ng i dng di chuy n vo vng d li u DoubleClick
81
N i dung
S l c l ch s pht tri n Ki n trc ADO.NET .NET Data Provider DataSet H i & p
82
Tham kh o
Bi gi ng ADO.NET c a th y Nguy n Minh Huy, H KHTN TpHCM
83