5/10/2013
1
CHƯƠNG IV:
ADO.NET
5/10/2013 1
ADO.NET
Tổng quan về ADO.NET
Tạokếtnối đếnCSDL.
Các điềukhiểnràngbuộc danh sách(List-
Bound)
Hiểnthị DataSet vào điềukhiển List-Bound
5/10/2013 2
TỔNG QUAN VỀ ADO.NET
ADO.NET cung cấpkhả năng truy cậpcác
nguồndữ liệumộtcáchnhấtquánnhư SQL
Server, dữ liệuquản lý thông qua OLE DB và
XML
ADO.NET bao gồmcáctrìnhcungcấpdữ liệu
.NET (.NET data provider) cho việckếtnối đến
cơ sở dữ liệu, thựcthimộtcâulệnh và truy
xuấtkếtquả.
5/10/2013 3
TỔNG QUAN VỀ ADO.NET
Đốitượng ADO.NET Dataset cũng có thểđược
sử dụng mộtcáchđộclậpvới.NETdata
provider để quảnlýdữ liệuthuộcnhững ứng
dụng hoặcnhững nguồntừ XML
Lớp ADO.NET đượctìmthấy trong namespace
System.Data
,vàđượctíchhợpvớilớpXML
đượctìmthấytrongnamespace
5/10/2013
3
CẤU TRÚC CỦA ADO.NET
NET Data Provider -mộttậphợp các thành
phầnbaogồmcácđốitượng
Connection:
cung cấpviệckếtnối đếnCSDL
Command
:truy cậpcáccâulệnh CSDL
DataReader:
cung cấpmộtluồng truy xuấtDL
DataAdapter:
cung cấpcầunốigiữa đối
tượng Dataset và CSDL. DataAdapter sử
dụng đốitượng Command để thựcthicác
câu lệnh SQL
5/10/2013 9
CẤU TRÚC CỦA ADO.NET
5/10/2013 10
Các đối tượng trong ADO.Net
Đối tượng Connection
Chức năng: Thiết lập kết nối đến cơ sở dữ liệu
Kết nối với cơ sở dữ liệu access:
5/10/2013 11
OleDbConnection con;// Khai báo
String strcon;
strCon ="Provider=Microsoft.Jet.OleDb.4.0;Data Source =";
strCon = strCon + Server.MapPath(".") + "\\sv.mdb";
con = new OleDbConnection(strCon);
5/10/2013 15
Các đối tượng trong ADO.Net
Các phương thức của DataCommand
Cancel(): Huỷ bỏ thực thi của một
SqlCommand
CreateParameter():Tạo một thể hiện mới
cho đối tượng SqlParameter.
5/10/2013 16
5/10/2013
5
Các đối tượng trong ADO.Net
ExecuteNonQuery(): Thựcthimộtcâulệnh T-SQL
dựa vào Connection và trả về số mẫutinbịảnh
hưởng như UPDATE, INSERT, DELETE.
ExecuteScalar(): Trả về giá trịđơn(Giátrị cụ thể
như 1 table, 1 record, 1 filed …) từ mộttruyvấndữ
liệu.
ExecuteReader(): GửiCommandTextđến
Connection và xây dựng mộtSqlDataReader,trả về
tập các records
5/10/2013 17
Các đối tượng trong ADO.Net
Các thuộc tính của Data Command
Connection:Commandthamchiếu đếnmột
connection, đốitượng này dùng để giao tiếpvới
cơ sở dữ liệu, nhậnhaytrả về SqlConnection mà
command sử dụng
CommandText:nhậnhoặctrả về câu lệnh
T-Sql hay thủ tục để thựcthi
5/10/2013 18
5/10/2013 21
Các đối tượng trong ADO.Net
5/10/2013 22
OleDbCommand cmd;
String strSql;
strSql = "select * from tblsv";
cmd = new OleDbCommand(strSql, con);
rd = cmd.ExecuteReader();
OleDbCommand cmd;
String strSql;
strSql = "select * from tblsv";
cmd = new OleDbCommand();
cmd.Connection = con;
cmd.CommandText = strSql;
rd = cmd.ExecuteReader();
Tương đương
Các đối tượng trong ADO.Net
5/10/2013 23
Phương thức của DataReader
Read(): Đọc tới record cuối cùng EOF.
NextResult(): di chuyển tới record kế tiếp
Để đọc giá trị của từng field. Sử dụng câu lệnh:
DataReader rs;// Khai báo
rs[“NameFiled”] or rs[index]
Chú ý: Nhớ Convert về kiểu chuỗi
Example: varName=Convert.ToString(rs[“Name”])
5/10/2013 24
5/10/2013
7
Từng bước kết nối ADO.Net
cmd=new OleDbCommand(strSQL);
cmd.Connection=con;
rs=cmd.ExecuteReader();
// if strSQL is Select statement
Từng
bước
kết
nối
trong
ADO.Net
5/10/2013 27
Sử dụng DataReader để chứa dữ liệu truy xuất được
while(rs.Read())
{
//varName=rs[“FieldName”];
//process varName according to application
}
Example
Danh Sach Khach Hang
Mã khách hàng Họ tên
KH098 Phan Hoai An
5/10/2013 28
Database chứa 1 table:
tblCustomer(CustomerID,Name)
Viết kết nối vào database và thực các công việc sau:
string sql="Insert into Users(UserName,UserID,Pass) values
('miny','002','dfgg')";
//sql = sql + UserName + "'" + "," + "'" + UserID + "')";
SqlCommand cmd = new SqlCommand(sql, conn);
conn.Open();
SqlDataReader dr;
dr = cmd.ExecuteReader();
while (dr.Read())
{
ListBox1.Items.Add(dr[0].ToString());
5/10/2013 31
Answer 3) Delete record
protected void Page_Load(object sender, EventArgs e)
{
string strconn = "server=H52PC14;";
strconn += "database=Northwind;uid=sa;pwd=;";
SqlConnection conn = new SqlConnection(strconn);
string sql = "delete from Users where UserID='01'";
SqlCommand cmd = new SqlCommand(sql, conn);
conn.Open();
string a = cmd.ExecuteReader().ToString();
5/10/2013 32
Answer 4)
<%
….
strSQL=“update set Name=‘”+varName+”’ where
CustomerID=‘“+ varID +”’”;
…
cmd.ExecuteNonQuery();
%>
dv.RowFilter=“Expression condition”;
dv.RowFilter=“FieldNameColumn>=10”;
dv.Sort=“List FieldName sort” ; //ASC, DESC
dv.Sort=“FieldNam
e1,FieldName2 DESC”;
dv.Sort = "EMpID";
drView = dv.FindRows(EmpIDvalue); //drView is
array
5/10/2013
10
DataTable
5/10/2013 37
•DataView
DataView dv=new DataView()
Method of DataView
FindRows: Trả về 1 mảng đối tượng DataRowView mà
hàng đó sẽ tìm.
DataRowView[] drView;
dv.Sort=“FieldName”;
drView=dv.FindRows(value)
// Với value: FieldName
DataTable
5/10/2013 38
•DataRowView
DataRowView drView=new DataRowView()
drView[i] or drView[“FieldNameColumn”] : giá trị trả về
String valueF;
valueF=drView[“StudentID”];
Or
valueF=drView[0];
DataTable
ColName1 ColName2 …. ColNameN
Dat
a11 Data12
… Data1N
…………
DataM1 DataM2 …. DataMN
5/10/2013 42
•DataTable: Là đối tượng để biểu diễn thông tin trong
Dataset.
DataColumn
DataRow
DataTable
5/10/2013 43
•DataTable
DataTable
dt=new DataTable();
.Columns:Trả về tập hợp các columns có trong table
dt.
.Rows: Trả về tập hợp các rows có trong table dt.
dt.Columns
dt.Rows
Count
Add(objColumn)
Count
Add(objRow)
DataTable
5/10/2013 44
•DataTable
DefaultView: 1 đối ượng DataView (Dạng hiển thị khác của
public DataSet Laydulieu(string sql)
{
OleDbCommand cmd;
cmd = new OleDbCommand(sql);
OleDbDataAdapter da = new OleDbDataAdapter(sql,con);
DataSet ds = new DataSet();
da.Fill(ds);
return ds; }
5/10/2013 47
DataAdapter
5/10/2013 48
•DataAdapter
The DataAdapter : Là đối tượng trung gian giữa 1 DataSet
và nguồn dữ liệu nhận được, dùng để lưu dữ liệu.
DataAdapter.Fill(ds) : Hiển thị data lên Dataset ds
OleDbDataAdapter class.
OleDbDataAdapter da = new OleDbDataAdapter(cmd);
DataSet ds = new DataSet();
da.Fill(ds);
(với cmd: OleDbCommand (Đã có))
5/10/2013
13
Example
5/10/2013 49
OleDbDataAdapter da;
da=new OleDbDataAdapter(strSQL,con);
DataSet ds=new DataSet(“tblA”);
da.Fill(ds);
DataTable dt;
dt=ds.Tables[“tblA”]; //ds.Tables[0]