Open ; cmd ExecuteNonQuery; cmd .ExecuteNonQuery; cnn.. ConnectionString ConnectionString = " Initial Catalog Initial Catalog =Northwind; Northwind; Data Source =localhost; user =sa; pas
Trang 1L p trình và Thi t k Web 2
Bài 7
Thao
Thao tác tác CSDL CSDL v i v i ADO NET ADO NET
Ths Tr n Th Bích H nh
Khoa CNTT
© 2009 Khoa Công ngh thông tin
N i
N i dung dung
N i
N i dung dung
Gi i thi u ADO NET
Ki n trúc ADO NET
Mô hình s d ng ADO NET
NET Data Provider
© 2009 Khoa CNTT - HKHTN
2
L p trình và Thi t k Web 2 – Bài 7: Thao tác CSDL v i ADO NET
N i dung
Gi i thi u ADO NET
Ki n trúc ADO.NET
Mô hình s d ng ADO NET
NET Data Provider
L p trình và Thi t k Web 2 – Bài 7: Thao tác CSDL v i ADO NET
ADO NET ADO NET là là gì gì? ? ADO.NET ADO.NET là là gì gì? ?
ADO.NET
A ti X D t Obj t NET – ActiveX Data Object NET – Công ngh c a Microsoft Phát t i t ADO
– Phát tri n t ADO – Cung c p các đ i t ng và hàm th vi n dùng đ k t
n i và x lý trên CSDL ý
Trang 2S l l c c l ch l ch s s phát phát tri n tri n
S
S l l c c l ch l ch s s phát phát tri n tri n
Native API
DB API
DB API
DB API
Application
Database
D i
DB API
O pen D ata B ase C onnectivity
ODBC
Driver Driver
Driver
DB API
© 2009 Khoa CNTT - HKHTN
Application
Database
5
S
S l l c c l ch l ch s s phát phát tri n tri n ((tt tt)) S
S l l c c l ch l ch s s phát phát tri n tri n ((tt tt))
Provider Provider
ADO OLE DB
Non-Relational Data
Provider Provider Provider
Application
ODBC Driver Driver
o de
Relational Data Driver
© 2009 Khoa CNTT - HKHTN
6
L p trình và Thi t k Web 2 – Bài 7: Thao tác CSDL v i ADO NET
S
S l l c c l ch l ch s s phát phát tri n tri n ((tt tt))
S
S l l c c l ch l ch s s phát phát tri n tri n ((tt tt))
.NET Data Provider
Oracle SQL Server
Relational Data OLE DB
Oracle
OLE DB ADO.NET
Application
ODBC
Non-Relational Data ODBC
L p trình và Thi t k Web 2 – Bài 7: Thao tác CSDL v i ADO NET
N i dung
Gi i thi u ADO.NET
Ki n trúc ADO NET
Mô hình s d ng ADO NET
NET Data Provider
Trang 3Ki n trúc c a ADO NET
© 2009 Khoa CNTT - HKHTN
9
Namespaces
N u ng d ng NET c n truy xu t d li u Ph i khai báo namespace ADO NET t ng ng v i d li u cho ng d ng namespace ADO.NET t ng ng v i d li u cho ng d ng
i v i d li u OLE
i v i d li u OLE
– using System.Data;
– using g System.Data.OleDB; y ;
i v i d d li u SQL Server u SQ Se e
– using System.Data;
– using System.Data.SqlClient;
© 2009 Khoa CNTT - HKHTN
10
L p trình và Thi t k Web 2 – Bài 7: Thao tác CSDL v i ADO NET
N i dung
Gi i thi u ADO.NET
Ki n trúc ADO NET
Mô hình s d ng ADO NET
NET Data Provider
L p trình và Thi t k Web 2 – Bài 7: Thao tác CSDL v i ADO NET
Mô hình s d ng ADO.NET v i Ph n m m
SqlDataReader DataSet
SqlConnection SqlDataAdapter
SqlCommand
SQL
12
Trang 4Mô hình s d ng ADO NET v i Ph n m m
Mô hình s d ng ADO NET v i Ph n m m
Mô hình s d ng ADO.NET v i Ph n m m
3 SqlDataReader
Select 1
3
SqlConnection
1
1 Insert
Delete Update
StoreProcedure
Functions
© 2009 Khoa CNTT - HKHTN 13
13
Mô hình s d ng ADO NET v i Ph n m m
Mô hình s d ng ADO NET v i Ph n m m
Mô hình s d ng ADO.NET v i Ph n m m
4
DataSet
5
SqlConnection
5
Select Insert
1
Delete Update
SqlCommand
© 2009 Khoa CNTT - HKHTN 14
14
L p trình và Thi t k Web 2 – Bài 7: Thao tác CSDL v i ADO NET
N i dung
Gi i thi u ADO.NET
Ki n trúc ADO NET
Mô hình s d ng ADO NET
NET Data Provider
L p trình và Thi t k Web 2 – Bài 7: Thao tác CSDL v i ADO NET
NET Data Provider NET Data Provider
Connection
Command & Parameter
DataReader
DataSet & DataAdapter
Transaction
Trang 5NET Data Provider
NET Data Provider Connection Connection
.NET Data Provider
.NET Data Provider Connection Connection
Data Source Connection
Application
SQL
Thi t l p k t n i đ n Data Source
Data Source Application
Thu c tính
ConnectionString: L u chu i k t n i đ n Data Source
State: cho bi t tình tr ng c a k t n i g
Ph ng th c
Open(): thi t l p k t n i đ n Data Source.
© 2009 Khoa CNTT - HKHTN
Close(): ng t k t n i đ n Data Source.
17
Ví
Ví d d Ví
Ví d d
using System.Data.SqlClient;
string sConnectionString =
Data Source =localhost;
user =sa; ;
password =sa;”;
SqlConnection cnn = new SqlConnection ();
SqlConnection cnn = new SqlConnection ();
cnn ConnectionString = sConnectionString;
// do somethings
© 2009 Khoa CNTT - HKHTN
cnn Close ();
18
L p trình và Thi t k Web 2 – Bài 7: Thao tác CSDL v i ADO NET
Connection string (Access, SQL Server,…)
T o connection string
T o connection string
Database ODBC/OLEDB Connection String
Microsoft Access Provider=Microsoft.Jet.OLEDB.4.0; Data Source= ngD n nFileAccess
Microsoft SQL Provider=SQLOLEDB;Data Source=ServerName; Initial Catalog=DatabaseName;
UserId=Username; Password=Password;
String strConn = string.Format(“ Provider=Microsoft.Jet.OLEDB.4.0; Data
Source= {0}”, HttpContext.Current.Server.MapPath(“database/mydb.mdb”));
REF: http://www.connectionstrings.com/
L p trình và Thi t k Web 2 – Bài 7: Thao tác CSDL v i ADO NET
ng d n t i t p tin Access
HttpContext.Current Server.MapPath (StringPath) – ánh x đ ng d n t ng đ i StringPath thành đ ng d n
đ n th m c v t lý trên Server
– Ví d : Gi s t p tin aspx s d ng hàm Server MapPath
– Ví d : Gi s t p tin aspx s d ng hàm Server.MapPath
đ c l u t i D:\MyWebsite
K t qu
S M P th(“ DB db”) D \M W b it \ DB db
Server.MapPath(myDB.mdb); D:\MyWebsite\myDB.mdb
Server.MapPath(“Database/myDB.mdb”); D:\MyWebsite\Database\myDB.mdb
Server.MapPath(“ /myDB.mdb”); D:\myDB.mdb
Trang 6C u
C u hình hình l u l u ConnectionString ConnectionString trong trong Web Config Web Config
C u
C u hình hình l u l u ConnectionString ConnectionString trong trong Web.Config Web.Config
// Web.Config
<configuration>
<connectionStrings>
<add name=“ OleDbConnectionString "
connectionString=“ Provider=Microsoft.Jet.OLEDB.4.0; Data
Source= |DataDirectory|\ DatabasePath" />
<add name=“ SqlConnectionString "
connectionString=" SQLOLEDB;Data Source= ServerName ; Initial
Catalog= DatabaseName ; UserId= Username ; Password= Password" />
</connectionStrings>
b
<system.web>
…
</system.web>
</configuration>
// WebForm.aspx.cs
using System.Configuration;
string strConn
© 2009 Khoa CNTT - HKHTN
21
string strConn =
ConfigurationManager.ConnectionStrings[“ SqlConnectionString "].ToString();
Connection Pooling
SqlConnection conn = new SqlConnection();
conn.ConnectionString =
"Integrated Security=SSPI;Initial Catalog=northwind";
conn.Open(); // Pool A is created .
SqlConnection conn = new SqlConnection();
conn.ConnectionString =
"Integrated Security=SSPI;Initial Catalog=pubs";
conn.Open();
// Pool B is created because the connection strings differ.
SqlConnection conn = new SqlConnection();
conn.ConnectionString =
"Integrated Security=SSPI;Initial Catalog=northwind";
© 2009 Khoa CNTT - HKHTN
conn.Open(); // The connection string matches pool A.
22
L p trình và Thi t k Web 2 – Bài 7: Thao tác CSDL v i ADO NET
NET Data Provider
.NET Data Provider
Connection
Command & Parameter
DataReader
DataSet & DataAdapter
Transaction
L p trình và Thi t k Web 2 – Bài 7: Thao tác CSDL v i ADO NET
.NET Data Provider NET Data Provider – – Command & Parameter Command & Parameter SqlDataReader
3
SqlConnection SqlCommand
Select
2
1
1
2 2
Insert
SqlParameter
SQL
Delete Update StoreProcedure Functions
Th c thi câu truy v n
Functions
H tr tham s vào, tham s ra, và giá tr tr v
Trang 7Command Hàm Hàm kh i kh i t o t o và và Thu c Thu c tính tính
Command
Command Hàm Hàm kh i kh i t o t o và và Thu c Thu c tính tính
Các hàm kh i t o
new ???Command()
new ???Command(cmdText)
new ???Command(cmdText, connection)
new ???Command(cmdText, connection, transaction)
Thu c tính Ý ngh a
Connection Tr đ n đ i t ng k t n i
.Connection Tr đ n đ i t ng k t n i
.CommandType CommandType.Text (m c đ nh)
CommandType.StoreProcedure CommandType.TableDirectyp
.CommandText Câu truy v n SQL ho c tên Store, tên B ng
.CommandTimeOut Th i gian ch đ i th c thi 1 câu sql
Parameters Danh sách các tham s truy n vào
© 2009 Khoa CNTT - HKHTN
.Parameters Danh sách các tham s truy n vào
25
Command Command Ph Ph ng ng th c th c Command
Command Ph Ph ng ng th c th c
Ph ng th c Ý ngh a
Ph ng th c Ý ngh a
.ExecuteReader() Tr v m t DataReader
.ExecuteNonQuery() Tr v s l ng dòng b nh h ng trên CSDL
.ExecuteScaler() Tr v 1 giá tr đ u tiên (VD: giá tr tính t ng)
.ExecuteXMLReader() Tr v 1 XMLReader
© 2009 Khoa CNTT - HKHTN
26
L p trình và Thi t k Web 2 – Bài 7: Thao tác CSDL v i ADO NET
Ví
Ví
using System.Data.OleDb;
OleDbConnection cnn = new OleDbConnection();
cnn ConnectionString =
string.Format ("Provider=Microsoft.Jet.OLEDB.4.0; Data
string.Format ( Provider Microsoft.Jet.OLEDB.4.0; Data
Source={0}", Server.MapPath ("~/App_Data/QLHS.mdb"));
OleDbCommand cmd = new OleDbCommand();
cmd Connection = cnn ;
cmd CommandText = "INSERT INTO HocSinh(id_hocsinh,
tenhocsinh, dtb)VALUES(5, 'Nguy n V n A', 8.5)";
cmd CommandType = CommandType.Text;
cnn Open ();
cmd ExecuteNonQuery();
cmd ExecuteNonQuery();
cnn Close ();
L p trình và Thi t k Web 2 – Bài 7: Thao tác CSDL v i ADO NET
Ví
Ví
using System.Data.SqlClient ;
SqlConnection cnn = new SqlConnection ();
cnn cnn ConnectionString ConnectionString = " Initial Catalog Initial Catalog =Northwind; Northwind;
Data Source =localhost; user =sa; password =sa;”;
SqlCommand cmd = new SqlCommand ();
cmd Connection = cnn;
cmd CommandText = "SELECT COUNT(*) FROM Orders";
cmd CommandType yp = CommandType.Text yp ;
cnn Open();
int count = (int)cmd.ExecuteScalar();
cnn Close();
Trang 8NET Data Provider
NET Data Provider Parameter Parameter
.NET Data Provider
.NET Data Provider Parameter Parameter
nh ngh a tham s tr n ào cho đ i t ng Command
nh ngh a tham s truy n vào cho đ i t ng Command
Có các thu c tính sau :
Thu c tính Ý ngh a
ParameterName Tên tham s
SqlDbType Ki u d li u c a tham s t ng ng v i ki u d li u c a SqlServer
Direction Input, Output, InputOutput, ReturenValue, …
Size Kích th c t i đa c a d li u
Value Giá tr c a tham s (input / Output)
© 2009 Khoa CNTT - HKHTN
29
Parameter Parameter – – Cách Cách s s d ng Parameter
Parameter – – Cách Cách s s d ng
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 truy v n: ? ho c @[tên tham s ]
Tham s hóa câu truy v n: ? 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
câu l nh.
© 2009 Khoa CNTT - HKHTN
30
L p trình và Thi t k Web 2 – Bài 7: Thao tác CSDL v i ADO NET
Parameter
Parameter – – Tham Tham s s hóa hóa câu câu truy truy v n v n
Parameter
Parameter – – Tham Tham s s hóa hóa câu câu truy truy v n v n
cmd CommandTe t
cmd.CommandText =
“SELECT * FROM HocSinh WHERE tenhocsinh = @ten ”;
cmd.CommandText =
“INSERT INTO HocSinh(id hocsinh, tenhocsinh, dtb)” + INSERT INTO HocSinh(id_hocsinh, tenhocsinh, dtb) +
“VALUES( @id, @ten, @dtb )”;
cmd.CommandText =
“SELECT * FROM HocSinh WHERE tenhocsinh = ? ”;
cmd.CommandText =
“INSERT INTO HocSinh(id_hocsinh, tenhocsinh, dtb)” +
“VALUES( ?, ?, ? )”;
L p trình và Thi t k Web 2 – Bài 7: Thao tác CSDL v i ADO NET
Parameter Parameter – – T o T o các các tham tham s s cho cho Command Command Parameter
Parameter – – T o T o các các tham tham s s cho cho Command Command
Sql Data Provider:
cmd.Parameters.Add(“ id ”, SqlDbType.Int);
cmd.Parameters.Add(“ ten ”, SqlDbType.NVarChar);
cmd.Parameters.Add(“ dtb ”, SqlDbType.Float);
cmd Parameters Add(“ id ” OleDbType Integer);
cmd.Parameters.Add( id , OleDbType.Integer);
cmd.Parameters.Add(“ ten ”, OleDbType.VarWChar);
cmd.Parameters.Add(“ dtb ”, OleDbType.Numeric);
Trang 9Parameter – – tt giá giá tr tr cho cho các các tham tham s s và và th c th c thi thi
Parameter
Parameter – – tt giá giá tr tr cho cho các các tham tham s s và và th c th c thi thi
foreach (Student s in studentList)
{
cmd.Parameters[“ id ”].Value = i;
cmd.Parameters[“ [ ten ”].Value = s.studentName; ] ;
cmd.Parameters[“ dtb ”].Value = s.studentMarks;
cmd.ExecuteNonQuery();
}
© 2009 Khoa CNTT - HKHTN
33
Ví
Ví d d G i G i StoredProcedure StoredProcedure Ví
Ví d d G i G i StoredProcedure StoredProcedure
© 2009 Khoa CNTT - HKHTN 34
34
L p trình và Thi t k Web 2 – Bài 7: Thao tác CSDL v i ADO NET
NET Data Provider
.NET Data Provider
Connection
Command & Parameter
DataReader
DataSet & DataAdapter
Transaction
L p trình và Thi t k Web 2 – Bài 7: Thao tác CSDL v i ADO NET
NET Data Provider NET Data Provider DataReader DataReader NET Data Provider
.NET Data Provider DataReader DataReader SqlDataReader
3
ExecuteReader()
SqlConnection
ExecuteReader()
SQL
Select
1
Select
BookID BookName Author
ii Book i Author Author ii
Truy xu t tu n t và không quay lui
Ch đ c, Không c p nh t d li u
Ch l u l i 1 record k t qu trong b nh v i m i l n truy xu t
Trang 10M t s th c tính & ph ng th c
M t s thu c tính & ph ng th c :
Thu c tính Ý ngh a
HasRows Tr v xem DataReader có đ c đ c d li u nào không
FieldCount Tr v s l ng thu c tính trong dòng hi n t i (đang đ c)
[int/string] Tr v giá tr c a thu c tínhđang yêu c u
[int/string] Tr v giá tr c a thu c tínhđang yêu c u
Ph ng th c Ý ngh a
Read() c record d li u k ti p
IsDBNull(i) Ki m tra xem giá tr c t i có b null không
Close() óng DataReader
© 2009 Khoa CNTT - HKHTN
37
Ví
Ví d d : Load : Load d d li u li u vào vào List List Ví
Ví d d : Load : Load d d li u li u vào vào List List
© 2009 Khoa CNTT - HKHTN
38
L p trình và Thi t k Web 2 – Bài 7: Thao tác CSDL v i ADO NET
NET Data Provider
.NET Data Provider
Connection
Command & Parameter
DataReader
DataSet & DataAdapter
Transaction
L p trình và Thi t k Web 2 – Bài 7: Thao tác CSDL v i ADO NET
ii t t ng ng DataSet DataSet và và DataAdapter DataAdapter
ii t t ng ng DataSet DataSet và và DataAdapter DataAdapter
DataSet
Data source
DataAdapter
DataTable
Fill
Update
DataTable DataAdapter
Fill
Update Fill
Trang 11ii t t ng ng DataSet DataSet và và DataAdapter DataAdapter
ii t t ng ng DataSet DataSet và và DataAdapter DataAdapter
DataSet
Là c s d li u đ c l u tr trong b nh chính ( in memory
– Là c s d li u đ c l u tr trong b nh chính ( in-memory
database)
– M i thao tác thay đ i d li u đ c th c hi n trên DataSet ,
khô là h h đ CSDL
không làm nh h ng đ n CSDL
DataAdapter
– Fill : L y d li u t CSDL đ vào DataSet
– Update : Theo v t các thay đ i trên d li u trên DataSet và
c p nh t d li u ng c vào CSDL
© 2009 Khoa CNTT - HKHTN
41
Mô
Mô hình hình đ i đ i t ng t ng DataAdapter DataAdapter Mô
Mô hình hình đ i đ i t ng t ng DataAdapter DataAdapter
S lD t Ad t SelectCommand UpdateCommand InsertCommand DeleteCommand
SqlDataAdapter
SqlDataReader
SqlCommand SqlCommand SqlCommand SqlCommand
SELECT
SqlConnection
© 2009 Khoa CNTT - HKHTN
sp_SELECT sp_UPDATE sp_INSERT sp_DELETE
42
L p trình và Thi t k Web 2 – Bài 7: Thao tác CSDL v i ADO NET
i t ng SqlDataAdapter
i t ng SqlDataAdapter
i t ng SqlDataAdapter
i t ng SqlDataAdapter
M t s thu c tính và ph ng th c
Thu c tính Ý ngh a
SelectCommand
UpdateCommand
InsertCommand
D l t C d
DeleteCommand
Ph ng th c Ý ngh a
Fill(Dataset) L y d li u t CSDL vàđ vào Dataset
FillSchema()
Update(…) Ti n hành c p nh t d li u trên DataSet v i CSDL
L p trình và Thi t k Web 2 – Bài 7: Thao tác CSDL v i ADO NET
i t ng DataSet
i t ng DataSet
i t ng DataSet
i t ng DataSet
M t s thu c tính và ph ng th c
Thu c tính Ý ngh a
DataSetName Relations Tables Danh sách các table có trong Dataset
Ph ng th c Ý ngh a
GetChange() Tr v DataSet ch a các thay đ i trên DataSet đang xét
RejectChanges() AcceptChanges() GetXML(), ReadXML(), WriteXML()