CHNG V ADO NET L thuyt 3 tit

  • Slides: 51
Download presentation
CHƯƠNG V: ADO. NET Lý thuyết: 3 tiết Thực hành 6 tiết 10/28/2020 1

CHƯƠNG V: ADO. NET Lý thuyết: 3 tiết Thực hành 6 tiết 10/28/2020 1

ADO. NET l Tổng quan về ADO. NET l Tạo kết nối đến CSDL.

ADO. NET l Tổng quan về ADO. NET l Tạo kết nối đến CSDL. l Các điều khiển ràng buộc danh sách(List. Bound) l Hiển thị Data. Set vào điều khiển List-Bound 10/28/2020 2

TỔNG QUAN VỀ ADO. NET l ADO. NET cung cấp khả năng truy cập

TỔNG QUAN VỀ ADO. NET l 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 l 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ả. 10/28/2020 3

TỔNG QUAN VỀ ADO. NET l Đối tượng ADO. NET Dataset cũng có thể

TỔNG QUAN VỀ ADO. NET l Đố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 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 10/28/2020 4

Môhìnhđốitượng. ADO. NET 10/28/2020 5

Môhìnhđốitượng. ADO. NET 10/28/2020 5

Môhìnhđốitượng. ADO. NET 10/28/2020 6

Môhìnhđốitượng. ADO. NET 10/28/2020 6

KHÔNG GIAN TÊN l Không gian tên sử dụng trong ADO. NET gồm: ¡System.

KHÔNG GIAN TÊN l Không gian tên sử dụng trong ADO. NET gồm: ¡System. Data. Common ¡System. Data. Sql. Client: dùng cho cơ sở dữ liệu SQL ¡System. Data. Ole. Db dùng cho cơ sở dữ liệu access 10/28/2020 7

CẤU TRÚC CỦA ADO. NET l ADO. NET Components được thiết kế để quản

CẤU TRÚC CỦA ADO. NET l 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 Data. Table 10/28/2020 8

CẤU TRÚC CỦA ADO. NET ¡ NET Data Provider - một tập hợp các

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 Data. Reader: cung cấp một luồng truy xuất DL Data. Adapter: cung cấp cầu nối giữa đối tượng Dataset và CSDL. Data. Adapter sử dụng đối tượng Command để thực thi các câu lệnh SQL 10/28/2020 9

CẤU TRÚC CỦA ADO. NET 10/28/2020 10

CẤU TRÚC CỦA ADO. NET 10/28/2020 10

Các đối tượng trong ADO. Net Đối tượng Connection l Chức năng: Thiết lập

Các đối tượng trong ADO. Net Đối tượng Connection l Chức năng: Thiết lập kết nối đến cơ sở dữ liệu l Kết nối với cơ sở dữ liệu access: Ole. Db. Connection con; // Khai báo String strcon; str. Con ="Provider=Microsoft. Jet. Ole. Db. 4. 0; Data Source ="; str. Con = str. Con + Server. Map. Path(". ") + "\sv. mdb"; con = new Ole. Db. Connection(str. Con); con. Open(); 10/28/2020 11

Kết nối với cơ sở dữ liệu Sql: Sql. Connection con; // Khai báo

Kết nối với cơ sở dữ liệu Sql: Sql. Connection con; // Khai báo String strcon; str. Con= “Server=Server. Name; Database=DBName; uid=user. Name; pwd=password”; con = new Sql. Connection(str. Con); con. Open(); 10/28/2020 12

l Cácphươngthức: l Execute. Non. Query(): Thựcthinhữngcâulệnh l như: INSERT, UPDATE or DELETE l

l Cácphươngthức: l Execute. Non. Query(): Thựcthinhữngcâulệnh l như: INSERT, UPDATE or DELETE l Execute. Scalar(): Trảvềgiátrịđơntừmộttruyv ấndữliệu. l Execute. Reader(): Trảvềtậprecord. 10/28/2020 13

Các phương thức của Connection l Phương thức ¡Open(): mở kết nối ¡Close(): đóng

Các phương thức của Connection l Phương thức ¡Open(): mở kết nối ¡Close(): đóng kết nối 10/28/2020 14

Các đối tượng trong ADO. Net l Đối tượng Command: thực thi câu lệnh

Các đối tượng trong ADO. Net l Đối tượng Command: thực thi câu lệnh SQL hoặc một Stored procedure l Một Data Command là một thể hiện của class Ole. Db. Command hoặc class Sql. Command 10/28/2020 15

Các đối tượng trong ADO. Net Các phương thức của Data. Command l Cancel():

Các đối tượng trong ADO. Net Các phương thức của Data. Command l Cancel(): Huỷ bỏ thực thi của một Sql. Command l Create. Parameter(): Tạo một thể hiện mới cho đối tượng Sql. Parameter. 10/28/2020 16

Các đối tượng trong ADO. Net l Execute. Non. Query(): Thực thi một câu

Các đối tượng trong ADO. Net l Execute. Non. Query(): 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. l Execute. Scalar(): 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. l Execute. Reader(): Gửi Command. Text đến Connection và xây dựng một Sql. Data. Reader, trả về tập các records 10/28/2020 17

Các đối tượng trong ADO. Net Các thuộc tính của Data Command l Connection:

Các đối tượng trong ADO. Net Các thuộc tính của Data Command l 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ề Sql. Connection mà command sử dụng l Command. Text: nhận hoặc trả về câu lệnh T-Sql hay thủ tục để thực thi 10/28/2020 18

Các đối tượng trong ADO. Net l Command. Timeout: nhận hay trả về thời

Các đối tượng trong ADO. Net l Command. Timeout: nhận hay trả về thời gian chờ thực thi l Command. Type: nhận/ trả về giá trị cho biết loại commandtext được gán, các giá trị gồm Stored. Procedure, Table. Direct, Text. Mặc định là Text Ole. Db. Command cmd = new Ole. Db. Command(strsql, con); (với strsql là câu truy vấn cụ thể ) 10/28/2020 19

Các đối tượng trong ADO. Net l Data. Reader: được sử dụng trong những

Các đối tượng trong ADO. Net l Data. Reader: đượ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. l Có 2 loại Data. Reader: Ole. Db. Data. Reader và Sql. Data. Reader. l Data. Reader cung cấp cách truy xuất dữ liệu forward-only, read – only. 10/28/2020 20

Các đối tượng trong ADO. Net l Để dùng Sql. Data. Reader phải khai

Các đối tượng trong ADO. Net l Để dùng Sql. Data. Reader phải khai báo một Sql. Command cung cấp một phương thức Execute. Reader() mà nó trả về một Sql. Data. Reader khi thi hành một câu lệnh SQL hoặc một stored Procedure 10/28/2020 21

Các đối tượng trong ADO. Net Ole. Db. Command cmd; String str. Sql; str.

Các đối tượng trong ADO. Net Ole. Db. Command cmd; String str. Sql; str. Sql = "select * from tblsv"; cmd = new Ole. Db. Command(str. Sql, con); rd = cmd. Execute. Reader(); Ole. Db. Command cmd; Tương đương String str. Sql; str. Sql = "select * from tblsv"; cmd = new Ole. Db. Command(); cmd. Connection = con; cmd. Command. Text = str. Sql; rd 10/28/2020 = cmd. Execute. Reader(); 22

Các đối tượng trong ADO. Net Phương thức của Data. Reader Read(): Đọc tới

Các đối tượng trong ADO. Net Phương thức của Data. Reader Read(): Đọc tới record cuối cùng EOF. Next. Result(): di chuyển tới record kế tiếp Để đọc giá trị của từng field. Sử dụng câu lệnh: Data. Reader rs; // Khai báo rs[“Name. Filed”] or rs[index] Chú ý: Nhớ Convert về kiểu chuỗi Example: var. Name=Convert. To. String(rs[“Name”]) 10/28/2020 23

10/28/2020 24

10/28/2020 24

Từng bước kết nối ADO. Net l Để sử dụng Data. Reader cần phải

Từng bước kết nối ADO. Net l Để sử dụng Data. Reader 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ạo. Data. Reader từ đối tượng Command ¡Gọi phương thức Execute. Reader ¡Sử dụng đối tượng Data. Reader ¡Đóng đối tượng Connection 10/28/2020 25

Từng bước kết nối trong ADO. Net Ole. Db. Connection con; Ole. Db. Command

Từng bước kết nối trong ADO. Net Ole. Db. Connection con; Ole. Db. Command cmd; Ole. Db. Data. Reader rs; String str. SQL, str. Con; str. Con=“Information connect to Database”; str. SQL=“SQL statement”; con=new Ole. Db. Connection(str. Con); con. Open(); cmd=new Ole. Db. Command(str. SQL); cmd. Connection=con; rs=cmd. Execute. Reader(); // if str. SQL is Select statement 10/28/2020 26

Từng bước kết nối trong ADO. Net Sử dụng Data. Reader để chứa dữ

Từng bước kết nối trong ADO. Net Sử dụng Data. Reader để chứa dữ liệu truy xuất được while(rs. Read()) { //var. Name=rs[“Field. Name”]; //process var. Name according to application } 10/28/2020 27

Example Database chứa 1 table: tbl. Customer(Customer. ID, Name) Viết kết nối vào database

Example Database chứa 1 table: tbl. Customer(Customer. ID, 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: Danh Sach Khach Hang Mã khách hàng Họ tên KH 098 Phan Hoai An 2) Thêm 1 customer 3) Sửa đổi thông tin 1 customer 4) Xóa 1 customer 10/28/2020 28

Answer 1) protected void Page_Load(object sender, Event. Args e) { string strconn = "server=H

Answer 1) protected void Page_Load(object sender, Event. Args e) { string strconn = "server=H 52 PC 14; "; strconn += "database=Northwind; uid=sa; pwd=; "; Sql. Connection conn=new Sql. Connection(strconn); string sql="SELECT Employee. ID, First. Name FROM Employees"; Sql. Command cmd=new Sql. Command(sql, conn); conn. Open(); Sql. Data. Reader dr; dr=cmd. Execute. Reader(); while(dr. Read()) { string text=dr["First. Name"]. To. String(); string value=dr["Employee. ID"]. To. String(); dr. Category. Items. Add(new List. Item(text, value)); } 10/28/2020 29

Answer 2) string strconn = "server=H 52 PC 14; "; strconn += "database=Northwind; uid=sa;

Answer 2) string strconn = "server=H 52 PC 14; "; strconn += "database=Northwind; uid=sa; pwd=; "; Sql. Connection conn = new Sql. Connection(strconn); //string sql ="select User. ID, User. Name from Users"; string sql="Insert into Users(User. Name, User. ID, Pass) values ('miny', '002', 'dfgg')"; //sql = sql + User. Name + "'" + ", " + "'" + User. ID + "')"; Sql. Command cmd = new Sql. Command(sql, conn); conn. Open(); Sql. Data. Reader dr; dr = cmd. Execute. Reader(); while (dr. Read()) { List. Box 1. Items. Add(dr[0]. To. String()); 10/28/2020 30

Answer 3) Delete record protected void Page_Load(object sender, Event. Args e) { string strconn

Answer 3) Delete record protected void Page_Load(object sender, Event. Args e) { string strconn = "server=H 52 PC 14; "; strconn += "database=Northwind; uid=sa; pwd=; "; Sql. Connection conn = new Sql. Connection(strconn); string sql = "delete from Users where User. ID='01'"; Sql. Command cmd = new Sql. Command(sql, conn); conn. Open(); string a = cmd. Execute. Reader(). To. String(); 10/28/2020 31

Answer 4) <% …. str. SQL=“update set Name=‘”+var. Name+”’ where Customer. ID=‘“+ var. ID

Answer 4) <% …. str. SQL=“update set Name=‘”+var. Name+”’ where Customer. ID=‘“+ var. ID +”’”; …. . cmd. Execute. Non. Query(); %> 10/28/2020 32

Các đối tượng trong ADO. Net • Data. Table • Data. Set • Data.

Các đối tượng trong ADO. Net • Data. Table • Data. Set • Data. Adapter 10/28/2020 33

Data. Table • Data. View • Data. Row. View • Data. Column • Data.

Data. Table • Data. View • Data. Row. View • Data. Column • Data. Row • Data. Table 10/28/2020 34

Data. Table • Data. View dv=new Data. View(); Thuộc tính của Data. View. Count

Data. Table • Data. View dv=new Data. View(); Thuộc tính của Data. View. Count : Trả về số records có trong the Data. View. Row. Filter: 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 Data. View. . Sort: Sắp xếp thứ tự của 1 cột hay nhiều cột trong Data. View. 10/28/2020 35

Data. Table • Data. View Ví dụ về các thuộc tính của Data. View

Data. Table • Data. View Ví dụ về các thuộc tính của Data. View int num; num=dv. Count; dv. Row. Filter=“Expression condition”; dv. Row. Filter=“Field. Name. Column>=10”; dv. Sort=“List Field. Name sort” ; //ASC, DESC dv. Sort=“Field. Name 1, Field. Name 2 DESC”; dv. Sort = "EMp. ID"; dr. View = dv. Find. Rows(Emp. IDvalue); //dr. View is array 10/28/2020 36

Data. Table • Data. View dv=new Data. View() Method of Data. View Find. Rows:

Data. Table • Data. View dv=new Data. View() Method of Data. View Find. Rows: Trả về 1 mảng đối tượng Data. Row. View mà hàng đó sẽ tìm. Data. Row. View[] dr. View; dv. Sort=“Field. Name”; dr. View=dv. Find. Rows(value) // Với value: Field. Name 10/28/2020 37

Data. Table • Data. Row. View dr. View=new Data. Row. View() dr. View[i] or

Data. Table • Data. Row. View dr. View=new Data. Row. View() dr. View[i] or dr. View[“Field. Name. Column”] : giá trị trả về String value. F; value. F=dr. View[“Student. ID”]; Or value. F=dr. View[0]; 10/28/2020 38

Data. Table l Data. Column: Trình bày lược đồ của một cột trong một

Data. Table l Data. Column: Trình bày lược đồ của một cột trong một Data. Table. Mỗi Data. Column có một thuộc tính Data. Type để xác định kiểu dữ liệu được lưu trữ trong Data. Column obj. Column=new Data. Column(“Column. Name”); Data. Table dt=new Data. Table(); Dt. Columns. Add(obj. Column); 10/28/2020 39

Đối tượng Data. Table l Data. Row: trình bày một dòng dữ liệu trong

Đối tượng Data. Table l Data. Row: trình bày một dòng dữ liệu trong Data. Table ¡Khởi tạo: Data. Row dr=new Data. Row(); dr[i] or dr[“Field. Name”]: //return value 10/28/2020 40

Đối tượng Data. Table l Các thuộc tính- phương thức của Data. Table ¡.

Đối tượng Data. Table l Các thuộc tính- phương thức của Data. Table ¡. Columns: trả về các cột trong Datatable ¡. Columns. Count: trả về số cột trong bảng ¡. Columns. Add(Data. Column): 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(Data. Row): thêm một dòng vào bảng 10/28/2020 41

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

Data. Table • Data. Table: Là đối tượng để biểu diễn thông tin trong Dataset. Data. Column Data. Row Col. Name 1 Col. Name 2 …. Col. Name. N Data 11 Data 12 … Data 1 N … … Data. M 1 Data. M 2 …. Data. MN 10/28/2020 42

Data. Table • Data. Table dt=new Data. Table(); . Columns: Trả về tập hợp

Data. Table • Data. Table dt=new Data. Table(); . Columns: Trả về tập hợp các columns có trong table Count dt. Columns Add(obj. Column) . Rows: Trả về tập hợp các rows có trong table dt. Rows 10/28/2020 Count Add(obj. Row) 43

Data. Table • Data. Table Default. View: 1 đối ượng Data. View (Dạng hiển

Data. Table • Data. Table Default. View: 1 đối ượng Data. View (Dạng hiển thị khác của Data. Table) Data. Table dt=new Data. Table(); Phương thức Data. Table New. Row(): Tạo 1 dòng mới Data. Row dr; dr=dt. New. Row(); 10/28/2020 44

Data. Set l Data. Set bao gồm tập các đối tượng Data. Table mỗi

Data. Set l Data. Set bao gồm tập các đối tượng Data. Table mỗi Data. Table đ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 Data. Relation. l Dữ liệu trong Data. Set có thể nhất quán bằng cách sử dụng đối tượng Unique. Constraint và Foreign. Key. Constraint 10/28/2020 45

Data. Set • Data. Set ds; //Khai báo Data. Set ds=new Data. Set(); //Khai

Data. Set • Data. Set ds; //Khai báo Data. Set ds=new Data. Set(); //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[“tbl. Name”] : Trả về đối tượng Table thứ i hoặc Table có “tên tbl. Name Count ds. Tables 10/28/2020 Add(obj. Table) 46

Data. Set l public Data. Set Laydulieu(string sql) l { l Ole. Db. Command

Data. Set l public Data. Set Laydulieu(string sql) l { l Ole. Db. Command cmd; l cmd = new Ole. Db. Command(sql); l Ole. Db. Data. Adapter da = new Ole. Db. Data. Adapter(sql, con); l Data. Set ds = new Data. Set(); l da. Fill(ds); l 10/28/2020 return ds; } 47

Data. Adapter • Data. Adapter The Data. Adapter : Là đối tượng trung gian

Data. Adapter • Data. Adapter The Data. Adapter : Là đối tượng trung gian giữa 1 Data. Set và nguồn dữ liệu nhận được, dùng để lưu dữ liệu. Data. Adapter. Fill(ds) : Hiển thị data lên Dataset ds Ole. Db. Data. Adapter class. Ole. Db. Data. Adapter da = new Ole. Db. Data. Adapter(cmd); Data. Set ds = new Data. Set(); da. Fill(ds); (với cmd: Ole. Db. Command (Đã có)) 10/28/2020 48

Example Ole. Db. Data. Adapter da; da=new Ole. Db. Data. Adapter(str. SQL, con); Data.

Example Ole. Db. Data. Adapter da; da=new Ole. Db. Data. Adapter(str. SQL, con); Data. Set ds=new Data. Set(“tbl. A”); da. Fill(ds); Data. Table dt; dt=ds. Tables[“tbl. A”]; //ds. Tables[0] foreach(Data. Row dr in dt. Rows) { var. Name 1= Convert. To. String(dr[“Student. ID”]); var. Name 2= Convert. To. String(dr[“Name”]); //process var. Name 1, var. Name 2 } 10/28/2020 49

Khai báo chuỗi kết nối trong file Web. Config: <configuration> <app. Settings/> <connection. Strings/>

Khai báo chuỗi kết nối trong file Web. Config: <configuration> <app. Settings/> <connection. Strings/> <configuration> <app. Settings> <add key="Connection. String" value="Provider=Microsoft. Jet. Ole. Db. 4. 0; Data Source =HOADON. mdb"/> </app. Settings> <connection. Strings/> Database được lưu trong thư mục gốc trong Visual Studio. Net: C: Program FilesMicrosoft Visual Studio 8Common 7IDEHOADON. mdb 10/28/2020 50

Truy xuất chuỗi kết nối tại trang bất kỳ string strcon; strcon=Configuration. Manager. App.

Truy xuất chuỗi kết nối tại trang bất kỳ string strcon; strcon=Configuration. Manager. App. Settings["Connection. String"]; con= new Ole. Db. Connection(strcon); con. Connection. String=strcon; con. Open(); 10/28/2020 51