chƯƠng v: ado.net

51
06/23/22 1 CHƯƠNG V: ADO.NET Lý thuyết: 3 tiết Thực hành 6 tiết

Upload: talon

Post on 17-Jan-2016

67 views

Category:

Documents


0 download

DESCRIPTION

CHƯƠNG V: ADO.NET. Lý thuyết: 3 tiết Thực hành 6 tiết. ADO.NET. Tổng quan về 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. TỔNG QUAN VỀ ADO.NET. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: CHƯƠNG V: ADO.NET

04/21/23 1

CHƯƠNG V:

ADO.NETLý thuyết: 3 tiết

Thực hành 6 tiết

Page 2: CHƯƠNG V: ADO.NET

ADO.NET

Tổng quan về ADO.NETTạ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

04/21/23 2

Page 3: CHƯƠNG V: ADO.NET

04/21/23 3

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ả.

Page 4: CHƯƠNG V: ADO.NET

04/21/23 4

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 tìm thấy 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

Page 5: CHƯƠNG V: ADO.NET

MôhìnhđốitượngADO.NET

04/21/23 5

Page 6: CHƯƠNG V: ADO.NET

MôhìnhđốitượngADO.NET

04/21/23 6

Page 7: CHƯƠNG V: ADO.NET

04/21/23 7

KHÔNG GIAN TÊN

Không gian tên sử dụng trong ADO.NET gồm:System.DataSystem.Data.CommonSystem.Data.SqlClient: dùng cho cơ sở dữ liệu

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

access

Page 8: CHƯƠNG V: ADO.NET

04/21/23 8

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

ADO.NET Components được thiết kế để quản lý việc truy cập dữ liệu từ nguồn dữ liệu. Có 2 thành phần chính trong 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

Page 9: CHƯƠNG V: ADO.NET

04/21/23 9

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ượngConnection: 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

Page 10: CHƯƠNG V: ADO.NET

04/21/23 10

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

Page 11: CHƯƠNG V: ADO.NET

04/21/23 11

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áoString strcon;strCon ="Provider=Microsoft.Jet.OleDb.4.0;Data Source =";strCon = strCon + Server.MapPath(".") + "\\sv.mdb"; con = new OleDbConnection(strCon);con.Open();

Page 12: CHƯƠNG V: ADO.NET

04/21/23 12

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

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

Page 13: CHƯƠNG V: ADO.NET

Cácphươngthức:ExecuteNonQuery():Thựcthinhữngcâulện

hnhư: INSERT, UPDATE or DELETEExecuteScalar():Trảvềgiátrịđơntừmộttruyv

ấndữliệu. ExecuteReader():Trảvềtậprecord.

04/21/23 13

Page 14: CHƯƠNG V: ADO.NET

04/21/23 14

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

Phương thứcOpen(): mở kết nốiClose(): đóng kết nối

Page 15: CHƯƠNG V: ADO.NET

04/21/23 15

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 OleDbCommand hoặc class SqlCommand

Page 16: CHƯƠNG V: ADO.NET

04/21/23 16

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.

Page 17: CHƯƠNG V: ADO.NET

04/21/23 17

Các đối tượng trong ADO.NetExecuteNonQuery(): 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.

ExecuteReader(): Gửi CommandText đến Connection và xây dựng một SqlDataReader, trả về tập các records

Page 18: CHƯƠNG V: ADO.NET

04/21/23 18

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

Page 19: CHƯƠNG V: ADO.NET

04/21/23 19

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ể )

Page 20: CHƯƠNG V: ADO.NET

04/21/23 20

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.

Page 21: CHƯƠNG V: ADO.NET

04/21/23 21

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

Page 22: CHƯƠNG V: ADO.NET

04/21/23 22

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

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

Page 23: CHƯƠNG V: ADO.NET

04/21/23 23

Phương thức của DataReaderRead(): Đọ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áors[“NameFiled”] or rs[index] Chú ý: Nhớ Convert về kiểu chuỗi Example: varName=Convert.ToString(rs[“Name”])

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

Page 24: CHƯƠNG V: ADO.NET

04/21/23 24

Page 25: CHƯƠNG V: ADO.NET

04/21/23 25

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 ConnectionTạo đối tượng Command TạoDataReader từ đối tượng Command Gọi phương thức ExecuteReaderSử dụng đối tượng DataReaderĐóng đối tượng DataReader Đóng đối tượng Connection

Page 26: CHƯƠNG V: ADO.NET

04/21/23 26

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

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

Page 27: CHƯƠNG V: ADO.NET

04/21/23 27

Sử dụng DataReader để chứa dữ liệu truy xuất đượcwhile(rs.Read()){ //varName=rs[“FieldName”]; //process varName according to application}

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

Page 28: CHƯƠNG V: ADO.NET

04/21/23 28

Example

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:1) Hiển thị danh sách Customers ở dạng bảng sau:

2) Thêm 1 customer3) Sửa đổi thông tin 1 customer4) Xóa 1 customer

Danh Sach Khach Hang

Mã khách hàng Họ tên

KH098 Phan Hoai An

Page 29: CHƯƠNG V: ADO.NET

04/21/23 29

Answer 1) 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="SELECT EmployeeID,FirstName FROM Employees"; SqlCommand cmd=new SqlCommand(sql,conn); conn.Open(); SqlDataReader dr; dr=cmd.ExecuteReader();

while(dr.Read()) { string text=dr["FirstName"].ToString(); string value=dr["EmployeeID"].ToString(); drCategory.Items.Add(new ListItem(text,value)); }

}

Page 30: CHƯƠNG V: ADO.NET

04/21/23 30

Answer 2) string strconn = "server=H52PC14;"; strconn += "database=Northwind;uid=sa;pwd=;";

SqlConnection conn = new SqlConnection(strconn); //string sql ="select UserID,UserName from Users";

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

Page 31: CHƯƠNG V: ADO.NET

04/21/23 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();

Page 32: CHƯƠNG V: ADO.NET

04/21/23 32

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

Page 33: CHƯƠNG V: ADO.NET

04/21/23 33

•DataTable•DataSet•DataAdapter

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

Page 34: CHƯƠNG V: ADO.NET

04/21/23 34

DataTable

•DataView•DataRowView•DataColumn•DataRow•DataTable

Page 35: CHƯƠNG V: ADO.NET

04/21/23 35

DataTable

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

Page 36: CHƯƠNG V: ADO.NET

04/21/23 36

DataTable

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

Page 37: CHƯƠNG V: ADO.NET

04/21/23 37

DataTable

•DataViewDataView dv=new DataView()Method of DataViewFindRows: 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

Page 38: CHƯƠNG V: ADO.NET

04/21/23 38

DataTable

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

Page 39: CHƯƠNG V: ADO.NET

04/21/23 39

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

DataTable

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

Page 40: CHƯƠNG V: ADO.NET

04/21/23 40

Đố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();dr[i] or dr[“FieldName”]: //return valueDataRow dr=new DataRow();dr[i] or dr[“FieldName”]: //return value

Page 41: CHƯƠNG V: ADO.NET

04/21/23 41

Đố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

Page 42: CHƯƠNG V: ADO.NET

04/21/23 42

DataTable•DataTable: Là đối tượng để biểu diễn thông tin trong Dataset.

ColName1 ColName2 …. ColNameN

Data11 Data12 … Data1N

… … … …

DataM1 DataM2 …. DataMN

DataColumn

DataRow

Page 43: CHƯƠNG V: ADO.NET

04/21/23 43

DataTable

•DataTableDataTable 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)

Page 44: CHƯƠNG V: ADO.NET

04/21/23 44

DataTable

•DataTableDefaultView: 1 đối ượng DataView (Dạng hiển thị khác của DataTable)DataTable dt=new DataTable();Phương thức DataTableNewRow():Tạo 1 dòng mới DataRow DataRow dr;dr=dt.NewRow();

Page 45: CHƯƠNG V: ADO.NET

04/21/23 45

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ữ liệu trong DataSet có thể nhất quán bằng cách sử dụng đối tượng UniqueConstraint và ForeignKeyConstraint

Page 46: CHƯƠNG V: ADO.NET

04/21/23 46

DataSet•DataSetDataSet ds; //Khai báoDataSet ds=new DataSet();//Khai báo và khởi tạo.Tables: trả về tất cả các Table chứa trong Dataset.ds.Tables[i] or ds.Tables[“tblName”] : Trả về đối tượng Table thứ i hoặc Table có “tên tblName

Count

Add(objTable)ds.Tables

Page 47: CHƯƠNG V: ADO.NET

DataSet 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; }

04/21/23 47

Page 48: CHƯƠNG V: ADO.NET

04/21/23 48

DataAdapter•DataAdapterThe 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 dsOleDbDataAdapter class.

OleDbDataAdapter da = new OleDbDataAdapter(cmd); DataSet ds = new DataSet(); da.Fill(ds);(với cmd: OleDbCommand (Đã có))

Page 49: CHƯƠNG V: ADO.NET

04/21/23 49

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}

Page 50: CHƯƠNG V: ADO.NET

04/21/23 50

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

<configuration><appSettings><add key="ConnectionString" value="Provider=Microsoft.Jet.OleDb.4.0;Data Source =HOADON.mdb"/>

</appSettings><connectionStrings/>

<configuration><appSettings/><connectionStrings/>

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

Page 51: CHƯƠNG V: ADO.NET

04/21/23 51

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