crosoft cung cấp hai sản phẩm giúp tích hợp một số ứng dụng đang tồn tại: BizTalk Server cho sự tích hợp ứng dụng, quản lý quá trình trong doanh nghiệp và vấn đề thương mại giữa các doanh nghiệp. Host Integration Server cho tích hợp và cấu hình bảo mật tin cậy cho người dùng với IBM zSeries mainframe, các ứng dụng host tầm trung bình iSeries và các cơ sở dữ liệu IBM DB2. Cả hai sản p
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()