ƯƠ

NG VI: CH ADO.NET Lý thuyết: 3 tiết Thực hành 6 tiết

02/06/17

1

CẤU TRÚC CỦA ADO.NET

02/06/17 2

TỔNG QUAN VỀ ADO.NET

ADO.NET cung cấp khả năng truy cập các nguồn dữ liệu một cách nhất quán như SQL Server, dữ liệu quản lý thông qua OLE DB và XML

ADO.NET bao gồm các trình cung cấp dữ liệu .NET (.NET data provider) cho việc kết nối đến cơ sở dữ liệu, thực thi một câu lệnh và truy xuất kết quả.

02/06/17 3

TỔNG QUAN VỀ ADO.NET

Đối tượng ADO.NET Dataset cũng có thể được sử dụng một cách độc lập với .NET data provider để quản lý dữ liệu thuộc những ứng dụng hoặc những nguồn từ XML

Lớp ADO.NET được

thấy

tìm

trong namespace System.Data, và được tích hợp với lớp XML được tìm thấy trong namespace System.Xml Connection

02/06/17 4

KHÔNG GIAN TÊN

Không gian tên sử dụng trong

ADO.NET gồm:  System.Data  System.Data.Common  System.Data.SqlClient: dùng cho cơ sở dữ liệu

SQL

 System.Data.OleDb dùng cho cơ sở dữ liệu

access

02/06/17 5

CẤU TRÚC CỦA ADO.NET

thành phần chính

ADO.NET Components được thiết kế để quản lý việc truy cập dữ liệu từ nguồn dữ trong liệu. Có 2 ADO.NET:  ADO.NET Dataset là thành phần chính của kiến trúc kết nối gián đoạn của ADO.NET. Dataset bao gồm tập hợp một hoặc nhiều đối tượng DataTable

02/06/17 6

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

02/06/17 7

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:

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); con.Open();

02/06/17 8

Kết nối với cơ sở dữ liệu Sql:

SqlConnection con;// Khai báo String strcon; strCon= “Server=ServerName;Database=DBName;uid=userName;pwd=password”; con = new SqlConnection(strCon); con.Open();

02/06/17 9

Các phương thức của Connection

Phương thức

 Open(): mở kết nối  Close(): đóng kết nối  Dispose()

02/06/17 10

Các đối tượng trong ADO.Net

Đối tượng Command: thực thi câu lệnh

SQL hoặc một Stored procedure

Một Data Command là một thể hiện của class

hoặc

class OleDbCommand SqlCommand

02/06/17 11

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.

02/06/17 12

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 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ột truy vấn dữ liệu. Gửi

 ExecuteReader():

CommandText

đến Connection và xây dựng một SqlDataReader, trả về tập các records

02/06/17 13

Các đối tượng trong ADO.Net

Các thuộc tính của Data Command  Connection: Command tham chiếu đến một connection, đối tượng này dùng để giao tiếp với cơ sở dữ liệu, nhận hay trả về SqlConnection mà command sử dụng  CommandText: nhận hoặc trả về câu lệnh

T-Sql hay thủ tục để thực thi

02/06/17 14

Các đối tượng trong ADO.Net

CommandTimeout: nhận hay trả về thời

gian chờ thực thi

CommandType: nhận/ trả về giá trị cho biết loại commandtext được gán, các giá trị gồm StoredProcedure, TableDirect,Text. Mặc định là Text

OleDbCommand cmd = new OleDbCommand(strsql,con); (với strsql là câu truy vấn cụ thể )

02/06/17 15

Các đối tượng trong ADO.Net

 DataReader: được sử dụng trong những ứng dụng web với những thao tác ngắn với từng yêu cầu, thường là chỉ để hiển thị dữ liệu.

 Có 2 loại DataReader: OleDbDataReader

và SqlDataReader.

 DataReader cung cấp cách truy xuất dữ

liệu forward-only, read – only.

02/06/17 16

Các đối tượng trong ADO.Net

Để dùng SqlDataReader phải khai báo một SqlCommand. SqlCommand cung cấp một phương thức ExecuteReader() mà nó trả về một SqlDataReader khi thi hành một câu lệnh SQL hoặc một stored Procedure

02/06/17 17

Các đối tượng trong ADO.Net

OleDbCommand cmd; String strSql; strSql = "select * from tblsv"; cmd = new OleDbCommand(strSql, con); rd = cmd.ExecuteReader();

ươ

ươ

T

ng đ

ng

02/06/17 18

OleDbCommand cmd; String strSql; strSql = "select * from tblsv"; cmd = new OleDbCommand(); cmd.Connection = con; cmd.CommandText = strSql; rd = cmd.ExecuteReader();

Các đối tượng trong ADO.Net

ươ

ứ ủ

ng th c c a DataReader

ế ế

ể ọ

ị ủ ừ

Ph ố ọ ớ i record cu i cùng EOF. Read(): Đ c t ể ớ i record k  ti p NextResult(): di chuy n t ử ụ Đ  đ 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”])

02/06/17 19

Từng bước kết nối ADO.Net

Để sử dụng DataReader cần phải thực

hiện các bước sau:  Tạo và mở kết nối CSDL Connection  Tạo đối tượng Command  TạoDataReader từ đối tượng Command  Gọi phương thức ExecuteReader  Sử dụng đối tượng DataReader  Đóng đối tượng DataReader  Đóng đối tượng Connection

02/06/17 20

Từng bước kết nối trong ADO.Net OleDbConnection con; OleDbCommand cmd; OleDbDataReader  rs; String strSQL,strCon; strCon=“Information connect to Database”; strSQL=“SQL statement”; con=new OleDbConnection(strCon); con.Open(); cmd=new OleDbCommand(strSQL); cmd.Connection=con;   rs=cmd.ExecuteReader();// if strSQL is Select statement    02/06/17

21

Từng bước kết nối trong ADO.Net

ử ụ

ể ứ ữ ệ

ấ ượ

c

S  d ng DataReader đ  ch a d  li u truy xu t đ while(rs.Read()) {    //varName=rs[“FieldName”];   //process varName according to application }

02/06/17 22

Example

Database ch a 1 table:

tblCustomer(CustomerID,Name) ế ế ố t k t n i vào database và th c các công vi c sau: ị ể

ở ạ

ự Vi 1) Hi n th  danh sách Customers

ả  d ng b ng sau:

Danh Sach Khach Hang

Mã khách hàng

Họ tên

KH098

Phan Hoai An

ử ổ

2) Thêm 1 customer 3) S a đ i thông tin 1 customer 4) Xóa 1 customer

02/06/17 23

Answer 1) <% …. strSQL=“Select CustomerID,Name from tblCustomer”; ….. rs=cmd.ExecuteReader(); %>

02/06/17 24

….. <%   while (rs.Read())  {%>    <%=Convert.ToString(rs[“CustomerID”]) %> ><%=Convert.ToString(rs[“Name”])%> <%}%>

02/06/17 25

Answer 2) <% …. string varID=“003”, varName=“Minh”; strSQL=“Insert into  tblCustomer(CustomerID,Name)values(‘”; strSQL=strSQL+ varID +”’,’”+varName +”’);”; ….. cmd.ExecuteNonQuery(); %>

02/06/17 26

Answer 3) <% …. strSQL=“Delete from tblCustomer where CustomerID=‘“+ varID +”’”; ….. cmd.ExecuteNonQuery(); %>

02/06/17 27

Answer 4) <% …. strSQL=“update set Name=‘”+varName+”’ where  CustomerID=‘“+ varID +”’”;  ….. cmd.ExecuteNonQuery(); %>

02/06/17 28

Các đối tượng trong ADO.Net

•DataTable •DataSet •DataAdapter

02/06/17 29

DataTable

•DataView •DataRowView •DataColumn •DataRow •DataTable

02/06/17 30

DataTable

DataView  ị ọ

ề ộ

ả ề DataView.  c a 1 c t hay nhi u c t trong

•DataView DataView dv=new DataView(); ủ Thu c tính c a DataView ả ề ố .Count :  Tr  v  s  records có trong the  ế ậ t l p ho c tr  v  giá tr  l c theo 1 hàng  .RowFilter: Thi ị ấ ỳ ẽ ể b t k  s  hi n th  trên  ứ ự ủ ế ắ .Sort: S p x p th  t DataView.

02/06/17 31

DataTable

•DataView ụ ề Ví d  v  các thu c tính c a DataView int num; num=dv.Count; dv.RowFilter=“Expression condition”; dv.RowFilter=“FieldNameColumn>=10”; dv.Sort=“List FieldName sort” ; //ASC, DESC dv.Sort=“FieldName1,FieldName2 DESC”; dv.Sort = "EMpID"; drView = dv.FindRows(EmpIDvalue); //drView is  array

02/06/17 32

DataTable

ố ượ

ng

DataRowView mà

•DataView DataView dv=new DataView() Method of DataView ả ề FindRows:  Tr  v  1 m ng đ i t hàng đó s  tìm. DataRowView[] drView; dv.Sort=“FieldName”; drView=dv.FindRows(value)  // V i ớ value: FieldName

02/06/17 33

DataTable

ị ả ề

•DataRowView DataRowView drView=new DataRowView() drView[i] or drView[“FieldNameColumn”] : giá tr  tr  v String valueF; valueF=drView[“StudentID”]; Or valueF=drView[0];

02/06/17 34

DataTable

 DataColumn: Trình bày lược đồ của một cột trong một DataTable. Mỗi DataColumn có một thuộc tính DataType để xác định kiểu dữ liệu được lưu trữ trong DataColumn

DataColumn objColumn=new DataColumn(“ColumnName”); DataTable dt=new DataTable(); Dt.Columns.Add(objColumn);

02/06/17 35

Đối tượng DataTable

DataRow: trình bày một dòng dữ liệu

trong DataTable  Khởi tạo:

DataRow dr=new DataRow(); DataRow dr=new DataRow(); dr[i] or dr[“FieldName”]: //return value dr[i] or dr[“FieldName”]: //return value

02/06/17 36

Đối tượng DataTable

Các thuộc tính- phương thức của

DataTable  .Columns: trả về các cột trong Datatable  .Columns.Count: trả về số cột trong bảng  .Columns.Add(DataColumn): Thêm cột vào bảng  .Rows :trả về các dòng, mỗi dòng là một đối tượng

datarow

 .Rows.Count :trả về số dòng trong bảng  .Rows.Add(DataRow):thêm một dòng vào bảng

02/06/17 37

ố ượ

ể ể

ng đ  bi u di n thông tin trong

DataTable •DataTable: Là đ i t Dataset.

DataColumn

DataRow

ColName1

ColName2 ….

ColNameN

… Data1N

Data11

Data12

… …

DataM1

DataM2

….

DataMN

02/06/17 38

DataTable

ả ề ậ

ợ Count

•DataTable DataTable dt=new DataTable(); .Columns:Tr  v  t p h p các columns có trong table  dt.

dt.Columns

Add(objColumn)

ả ề ậ

.Rows: Tr  v  t p h p các rows có trong table dt.

ợ Count

dt.Rows

Add(objRow)

02/06/17 39

DataTable

ố ượ

ạ ng DataView (D ng hi n th  khác

ươ

ớ DataRow

•DataTable DefaultView: 1 đ i  ủ c a DataTable) DataTable dt=new DataTable(); Ph ng th c DataTable ạ NewRow():T o 1 dòng m i  DataRow dr; dr=dt.NewRow();

02/06/17 40

DataSet

DataSet bao gồm tập các đối tượng DataTable mỗi DataTable điển hình tương đương với một 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 DataRelation.

dụng

cách

đối

sử

Dữ liệu trong DataSet có thể nhất quán tượng và

bằng UniqueConstraint ForeignKeyConstraint

02/06/17 41

DataSet

ả ề ấ ả

ứ t c  các Table ch a trong Dataset.

ả ề ố

•DataSet DataSet ds; //Khai báo ở ạ DataSet ds=new DataSet();//Khai báo và kh i t o .Tables: tr  v  t ds.Tables[i] or ds.Tables[“tblName”] : Tr  v  đ i  ượ ng Table th  i ho c Table có “tên tblName t

Count

ds.Tables

Add(objTable)

02/06/17 42

ố ượ

ng trung gian gi a 1

ồ ữ ệ

ậ ượ

ữ ể ư ữ c, dùng đ  l u d

DataAdapter •DataAdapter The DataAdapter : Là đ i t DataSet và ngu n d  li u nh n đ 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ó))

02/06/17 43

Example

OleDbDataAdapter da; da=new OleDbDataAdapter(strSQL,con); DataSet ds=new DataSet(“tblA”); da.Fill(ds); DataTable dt; dt=ds.Tables[“tblA”]; //ds.Tables[0] foreach(DataRow dr in dt.Rows) {    varName1= Convert.ToString(dr[“StudentID”]);    varName2= Convert.ToString(dr[“Name”]);   //process varName1, varName2 }

02/06/17 44

Khai báo chuỗi kết nối trong file Web.Config:

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

02/06/17 45

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();

02/06/17 46