Xem mẫu
- 5/10/2013
ADO.NET
CHƯƠNG IV: Tổng quan về ADO.NET
ADO.NET Tạo kết nối đến CSDL.
Các điều khiển ràng buộc danh sách(List-
Bound)
Hiển thị DataSet vào điều khiển List-Bound
5/10/2013 1 5/10/2013 2
TỔNG QUAN VỀ ADO.NET TỔNG QUAN VỀ ADO.NET
ADO.NET cung cấp khả năng truy cập các Đối tượng ADO.NET Dataset cũng có thể được
nguồn dữ liệu một cách nhất quán như SQL sử dụng một cách độc lập với .NET data
Server, dữ liệu quản lý thông qua OLE DB và provider để quản lý dữ liệu thuộc những ứng
XML dụng hoặc những nguồn từ XML
ADO.NET bao gồm các trình cung cấp dữ liệu Lớp ADO.NET được tìm thấy trong namespace
.NET (.NET data provider) cho việc kết nối đến System.Data, và được tích hợp với lớp XML
cơ sở dữ liệu, thực thi một câu lệnh và truy được tìm thấy trong namespace System.Xml
xuất kết quả. Connection
5/10/2013 3 5/10/2013 4
1
- 5/10/2013
MôhìnhđốitượngADO.NET
MôhìnhđốitượngADO.NET
5/10/2013 5 5/10/2013 6
KHÔNG GIAN TÊN CẤU TRÚC CỦA ADO.NET
Không gian tên sử dụng trong ADO.NET ADO.NET Components được thiết kế để quản lý
gồm: việc truy cập dữ liệu từ nguồn dữ liệu. Có 2
System.Data thành phần chính trong ADO.NET:
System.Data.Common ADO.NET Dataset là thành phần chính của
System.Data.SqlClient: dùng cho cơ sở dữ
kiến trúc kết nối gián đoạn của ADO.NET.
liệu SQL Dataset bao gồm tập hợp một hoặc nhiều đối
tượng DataTable
System.Data.OleDb dùng cho cơ sở dữ liệu
access
5/10/2013 7 5/10/2013 8
2
- 5/10/2013
CẤU TRÚC CỦA ADO.NET CẤU TRÚC CỦA ADO.NET
NET Data Provider - một tập hợp các thành
phần bao gồm các đối tượng
Connection: cung cấp việc kết nối đến CSDL
Command :truy cập các câu lệnh CSDL
DataReader: cung cấp một luồng truy xuất DL
DataAdapter: cung cấp cầu nối giữa đối
tượng Dataset và CSDL. DataAdapter sử
dụng đối tượng Command để thực thi các
câu lệnh SQL
5/10/2013 9 5/10/2013 10
Các đối tượng trong ADO.Net
Đối tượng Connection Kết nối với cơ sở dữ liệu Sql:
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: SqlConnection con;// Khai báo
String strcon;
strCon=
“Server=ServerName;Database=DBName;uid=userName;pwd=password”;
OleDbConnection con;// Khai báo con = new SqlConnection(strCon);
String strcon; con.Open();
strCon ="Provider=Microsoft.Jet.OleDb.4.0;Data Source =";
strCon = strCon + Server.MapPath(".") + "\\sv.mdb";
con = new OleDbConnection(strCon);
con.Open();
5/10/2013 11 5/10/2013 12
3
- 5/10/2013
Các phương thức của
Connection
Cácphươngthức: Phương thức
ExecuteNonQuery():Thựcthinhữngcâulệnh Open(): mở kết nối
như: INSERT, UPDATE or DELETE Close(): đóng kết nối
ExecuteScalar():Trảvềgiátrịđơntừmộttruyvấndữli
ệu.
ExecuteReader():Trảvềtậprecord.
5/10/2013 13 5/10/2013 14
Các đối tượng trong ADO.Net Các đối tượng trong ADO.Net
Đối tượng Command: thực thi câu lệnh SQL Các phương thức của DataCommand
hoặc một Stored procedure Cancel(): Huỷ bỏ thực thi của một
Một Data Command là một thể hiện của class SqlCommand
OleDbCommand hoặc class SqlCommand CreateParameter():Tạo một thể hiện mới
cho đối tượng SqlParameter.
5/10/2013 15 5/10/2013 16
4
- 5/10/2013
Các đối tượng trong ADO.Net Các đối tượng trong ADO.Net
ExecuteNonQuery(): Thực thi một câu lệnh T-SQL
dựa vào Connection và trả về số mẫu tin bị ảnh Các thuộc tính của Data Command
hưởng như UPDATE, INSERT, DELETE. Connection: Command tham chiếu đến một
ExecuteScalar(): Trả về giá trị đơn (Giá trị cụ thể connection, đối tượng này dùng để giao tiếp với
như 1 table, 1 record, 1 filed …) từ một truy vấn dữ cơ sở dữ liệu, nhận hay trả về SqlConnection mà
liệu. command sử dụng
ExecuteReader(): Gửi CommandText đến CommandText: nhận hoặc trả về câu lệnh
Connection và xây dựng một SqlDataReader, trả về T-Sql hay thủ tục để thực thi
tập các records
5/10/2013 17 5/10/2013 18
Các đối tượng trong ADO.Net Các đối tượng trong ADO.Net
CommandTimeout: nhận hay trả về thời gian
DataReader: được sử dụng trong những ứng
chờ thực thi dụng web với những thao tác ngắn với từng
CommandType: nhận/ trả về giá trị cho biết yêu cầu, thường là chỉ để hiển thị dữ liệu.
loại commandtext được gán, các giá trị gồm Có 2 loại DataReader: OleDbDataReader và
StoredProcedure, TableDirect,Text. Mặc định là SqlDataReader.
Text DataReader cung cấp cách truy xuất dữ liệu
forward-only, read – only.
OleDbCommand cmd = new OleDbCommand(strsql,con);
(với strsql là câu truy vấn cụ thể )
5/10/2013 19 5/10/2013 20
5
- 5/10/2013
Các đối tượng trong ADO.Net
Các đối tượng trong ADO.Net
OleDbCommand cmd;
Để dùng SqlDataReader phải khai báo một String strSql;
SqlCommand. SqlCommand cung cấp một strSql = "select * from tblsv";
phương thức ExecuteReader() mà nó trả về cmd = new OleDbCommand(strSql, con);
một SqlDataReader khi thi hành một câu lệnh rd = cmd.ExecuteReader();
SQL hoặc một stored Procedure OleDbCommand cmd;
String strSql; Tương đương
strSql = "select * from tblsv";
cmd = new OleDbCommand();
cmd.Connection = con;
cmd.CommandText = strSql;
5/10/2013 21 rd = cmd.ExecuteReader();
5/10/2013 22
Các đối tượng trong ADO.Net
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 23 5/10/2013 24
6
- 5/10/2013
Từng bước kết nối trong
ADO.Net
Từng bước kết nối ADO.Net OleDbConnection con;
OleDbCommand cmd;
Để sử dụng DataReader cần phải thực hiện OleDbDataReader rs;
các bước sau: String strSQL,strCon;
Tạo và mở kết nối CSDL Connection strCon=“Information connect to Database”;
Tạo đối tượng Command strSQL=“SQL statement”;
TạoDataReader từ đối tượng Command con=new OleDbConnection(strCon);
Gọi phương thức ExecuteReader con.Open();
Sử dụng đối tượng DataReader
cmd=new OleDbCommand(strSQL);
cmd.Connection=con;
Đóng đối tượng DataReader
rs=cmd.ExecuteReader();// if strSQL is Select statement
Đóng đối tượng Connection
5/10/2013 25 5/10/2013 26
Từng bước kết nối trong
ADO.Net Example
Database chứa 1 table:
tblCustomer(CustomerID,Name)
Sử dụng DataReader để chứa dữ liệu truy xuất được Viết kết nối vào database và thực các công việc sau:
while(rs.Read()) 1) Hiển thị danh sách Customers ở dạng bảng sau:
{ Danh Sach Khach Hang
//varName=rs[“FieldName”]; Mã khách hàng Họ tên
//process varName according to application KH098 Phan Hoai An
} 2) Thêm 1 customer
3) Sửa đổi thông tin 1 customer
4) Xóa 1 customer
5/10/2013 27 5/10/2013 28
7
- 5/10/2013
Answer 1) Answer 2)
protected void Page_Load(object sender, EventArgs e) string strconn = "server=H52PC14;";
{ strconn += "database=Northwind;uid=sa;pwd=;";
string strconn = "server=H52PC14;";
strconn += "database=Northwind;uid=sa;pwd=;"; SqlConnection conn = new SqlConnection(strconn);
//string sql ="select UserID,UserName from Users";
SqlConnection conn=new SqlConnection(strconn);
string sql="SELECT EmployeeID,FirstName FROM Employees"; string sql="Insert into Users(UserName,UserID,Pass) values
SqlCommand cmd=new SqlCommand(sql,conn); ('miny','002','dfgg')";
conn.Open(); //sql = sql + UserName + "'" + "," + "'" + UserID + "')";
SqlDataReader dr; SqlCommand cmd = new SqlCommand(sql, conn);
dr=cmd.ExecuteReader(); conn.Open();
SqlDataReader dr;
while(dr.Read()) dr = cmd.ExecuteReader();
{ while (dr.Read())
string text=dr["FirstName"].ToString(); {
string value=dr["EmployeeID"].ToString(); ListBox1.Items.Add(dr[0].ToString());
drCategory.Items.Add(new ListItem(text,value));
}
5/10/2013 29 5/10/2013 30
Answer 3) Delete record
protected void Page_Load(object sender, EventArgs e)
{
string strconn = "server=H52PC14;";
strconn += "database=Northwind;uid=sa;pwd=;"; Answer 4)
SqlConnection conn = new SqlConnection(strconn);
5/10/2013 31 5/10/2013 32
8
- 5/10/2013
Các đối tượng trong ADO.Net
DataTable
•DataTable •DataView
•DataSet •DataRowView
•DataAdapter •DataColumn
•DataRow
•DataTable
5/10/2013 33 5/10/2013 34
DataTable
DataTable •DataView
Ví dụ về các thuộc tính của DataView
•DataView int num;
DataView dv=new DataView(); num=dv.Count;
Thuộc tính của DataView dv.RowFilter=“Expression condition”;
.Count : Trả về số records có trong the DataView dv.RowFilter=“FieldNameColumn>=10”;
.RowFilter: Thiết lập hoặc trả về giá trị lọc theo 1 hàng bất dv.Sort=“List FieldName sort” ; //ASC, DESC
kỳ sẽ hiển thị trên DataView. dv.Sort=“FieldName1,FieldName2 DESC”;
.Sort: Sắp xếp thứ tự của 1 cột hay nhiều cột trong dv.Sort = "EMpID";
DataView. drView = dv.FindRows(EmpIDvalue); //drView is
array
5/10/2013 35 5/10/2013 36
9
- 5/10/2013
DataTable DataTable
•DataView
DataView dv=new DataView() •DataRowView
Method of DataView DataRowView drView=new DataRowView()
FindRows: Trả về 1 mảng đối tượng DataRowView mà drView[i] or drView[“FieldNameColumn”] : giá trị trả về
hàng đó sẽ tìm. String valueF;
DataRowView[] drView; valueF=drView[“StudentID”];
dv.Sort=“FieldName”; Or
drView=dv.FindRows(value) valueF=drView[0];
// Với value: FieldName
5/10/2013 37 5/10/2013 38
DataTable Đối tượng DataTable
DataColumn: Trình bày lược đồ của một cột
DataRow: trình bày một dòng dữ liệu trong
trong một DataTable. Mỗi DataColumn có
DataTable
một thuộc tính DataType để xác định kiểu dữ
liệu được lưu trữ trong DataColumn Khởi tạo:
DataRow dr=new DataRow();
DataColumn objColumn=new DataColumn(“ColumnName”); dr[i] or dr[“FieldName”]: //return value
DataTable dt=new DataTable();
Dt.Columns.Add(objColumn);
5/10/2013 39 5/10/2013 40
10
- 5/10/2013
DataTable
Đối tượng DataTable •DataTable: Là đối tượng để biểu diễn thông tin trong
Các thuộc tính- phương thức của DataTable Dataset.
.Columns: trả về các cột trong Datatable DataColumn
.Columns.Count: trả về số cột trong bảng DataRow
.Columns.Add(DataColumn): Thêm cột vào bảng ColName1 ColName2 …. ColNameN
.Rows :trả về các dòng, mỗi dòng là một đối Data11 Data12 … Data1N
tượng datarow
… … … …
.Rows.Count :trả về số dòng trong bảng
DataM1 DataM2 …. DataMN
.Rows.Add(DataRow):thêm một dòng vào bảng
5/10/2013 41 5/10/2013 42
DataTable
•DataTable
DataTable
DataTable dt=new DataTable(); •DataTable
.Columns:Trả về tập hợp các columns có trong table DefaultView: 1 đối ượng DataView (Dạng hiển thị khác của
Count DataTable)
dt.
dt.Columns DataTable dt=new DataTable();
Add(objColumn) Phương thức DataTable
NewRow():Tạo 1 dòng mới DataRow
.Rows: Trả về tập hợp các rows có trong table dt. DataRow dr;
Count
dt.Rows dr=dt.NewRow();
Add(objRow)
5/10/2013 43 5/10/2013 44
11
- 5/10/2013
DataSet DataSet
DataSet bao gồm tập các đối tượng DataTable
•DataSet
mỗi DataTable điển hình tương đương với một
DataSet ds; //Khai báo
table hoặc là một view mà ta có thể thiết lập
mối quan hệ giữa chúng thông qua đối tượng DataSet ds=new DataSet();//Khai báo và khởi tạo
DataRelation. .Tables: trả về tất cả các Table chứa trong Dataset.
Dữ liệu trong DataSet có thể nhất quán bằng ds.Tables[i] or ds.Tables[“tblName”] : Trả về đối
cách sử dụng đối tượng UniqueConstraint và tượng Table thứ i hoặc Table có “tên tblName
ForeignKeyConstraint Count
ds.Tables Add(objTable)
5/10/2013 45 5/10/2013 46
DataSet Laydulieu(string sql)
public DataSet DataAdapter
•DataAdapter
{
The DataAdapter : Là đối tượng trung gian giữa 1 DataSet
OleDbCommand cmd;
cmd = new OleDbCommand(sql);
và nguồn dữ liệu nhận được, dùng để lưu dữ liệu.
OleDbDataAdapter da = new OleDbDataAdapter(sql,con); DataAdapter.Fill(ds) : Hiển thị data lên Dataset ds
DataSet ds = new DataSet(); OleDbDataAdapter class.
da.Fill(ds); OleDbDataAdapter da = new OleDbDataAdapter(cmd);
return ds; } DataSet ds = new DataSet();
da.Fill(ds);
(với cmd: OleDbCommand (Đã có))
5/10/2013 47 5/10/2013 48
12
- 5/10/2013
Khai báo chuỗi kết nối trong file
Example
Web.Config:
OleDbDataAdapter da;
da=new OleDbDataAdapter(strSQL,con);
DataSet ds=new DataSet(“tblA”);
da.Fill(ds);
DataTable dt;
dt=ds.Tables[“tblA”]; //ds.Tables[0]
varName1= Convert.ToString(dr[“StudentID”]);
varName2= Convert.ToString(dr[“Name”]);
//process varName1, varName2 Database được lưu trong thư mục gốc trong Visual Studio.Net:
} C:\Program Files\Microsoft Visual Studio 8\Common7\IDE\HOADON.mdb
5/10/2013 49 5/10/2013 50
Truy xuất chuỗi kết nối tại trang bất
kỳ
string strcon;
strcon=ConfigurationManager.AppSettings["ConnectionString"];
con= new OleDbConnection(strcon);
con.ConnectionString=strcon;
con.Open();
5/10/2013 51
13
nguon tai.lieu . vn