Tải bản đầy đủ (.pdf) (30 trang)

Bài giảng Phát triển web nâng cao Bài 5 ADO.NET

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (583.03 KB, 30 trang )

Bài 5: ADO.NET
5.1. Khái niệm
5.2. Các lớp và không gian tên cơ bản của ADO.NET
5.3. Thao tác với dữ liệu kết nối – Connected
5.4. Thao tác với dữ liệu không kết nối - Disconnected


5.1 Khái niệm ADO.NET
• Khi phát triển các ứng dụng trên nền web thì cơng
việc chủ yếu phải giải quyết là xử lý Cơ sở dữ liệu
• ADO.NET (Active Data Object) cho phép thao tác Cơ
sở dữ liệu :
– Các ứng dụng webform
– Các ứng dụng winform



Mục tiêu chính của ADO.NET là
• Cung cấp các lớp để thao tác CSDL trong cả hai môi
trường là phi kết nối (Disconected data) và kết nối
(Connected data)
• Tích hợp chặt chẽ với XML (Extensible Markup
Language)
• Tương tác với nhiều nguồn dữ liệu thơng qua mơ tả
dữ liệu chung
• Tối ưu truy cập nguồn dữ liệu (OLE DB & SQL server)
• Làm việc trên mơi trường Internet


ADO vs. ADO.NET



5.2 Các lớp và khơng gian tên cơ bản của
ADO.NET
• 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
• Khơng gian tên sử dụng trong ADO.NET gồm:
– System.Data
– System.Data.Common:
• 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
• .NET Data Provider: Một tập hợp các thành phần bao gồm các
đối tượng
– System.Data.SqlClient: Dùng cho cơ sở dữ liệu SQL
– System.Data.OleDb: Dùng cho cơ sở dữ liệu access
– System.Data.OracleClient: Dùng cho cơ sở dữ liệu Oracle


Đón nhận kết
quả trả về từ
đối tượng
Command
Thực hiện các
câu lệnh SQL
thao tác với
CSDL
Thực hiện
nhiệm vụ kết
nối đến CSDL


Cấu trúc

Kho chứa các
bảng

Cầu nối giữa
nguồn dữ liệu và
các bảng được
cached trong bộ
nhớ

ADO.NET cho phép làm việc ở cả hai chế độ:
• Chế độ Kết nối (Connected)
• Phi kết nối (Disconnected)


Connection
Connection
Application

• Ý nghĩa: Kết nối đến CSDL
• Thuộc tính:
• ConnectionString: chuỗi kết nối DataSource

• Phương thức:
• Open(): thiết lập kết nối đến DataSource
• Close(): đóng kết nối với DataSource

Database



Command
Connection

Application

Command

Database

• Ý nghĩa: Thực hiện các câu lệnh SQL để thao tác với CSDL
• Thuộc tính:
• Connection: kết nối để thực hiện lệnh
• CommandText: câu lệnh cần thực hiện
• CommandType: loại câu lệnh (Text, TableDirect, StoredProc)

• Phương thức:

• ExecuteScalar(): thực hiện câu lệnh và trả về giá trị đơn
• ExecuteNonQuery(): gọi các lệnh SQL, store, trả về số row bị tác
động (Insert, Update, Delete…)
• ExecuteReader(): thực hiện lệnh và trả về DataReader


Command với Parameter
• Khái niệm: Câu lệnh truy vấn SQL nhận giá trị thông
qua các tham số tại thời điểm thực thi
• Cách sử dụng:
– Tạo tham số trong câu lệnh SQL

– Khai báo Parameter với những thơng tin chính:
• tên tham số
• kiểu dữ liệu
• loại tham số vào/ra
• giá trị
– Liên kết Parameter với Command


Command với Parameter
• Tạo tham số trong câu
lệnh SQL

SqlCommand dc = new
SqlCommand("select * from sinhvien
where phai=@phai", ketnoi);

• Khai báo Parameter với
những thơng tin chính:

SqlParameter thamso = new
SqlParameter();
thamso.ParameterName = "tham_so";
string gtthamso
= "nu";
thamso.SqlDbType
= SqlDbType.NChar;
thamso.Direction =
ParameterDirection.Input;
dc.Parameters.AddWithVal
thamso.SqlValue = "nu";







tên tham số
kiểu dữ liệu
loại tham số vào/ra
giá trị

• Liên kết Parameter với
Command

?

ue("@phai", gtthamso);

dc.Parameters.Add("tham_so");


DataReader
DataReader

Application

Connection
Command

Database


• Ý nghĩa: Nhận kết quả trả về từ Command
• Thuộc tính:
• HasRow: cho biết câu truy vấn có trả về dữ liệu

• Phương thức:
• Read(): đọc một mẫu tin
• [i]: truy xuất đến cột i của mẫu tin được đọc
• Close(): đóng


Data Provider
• Tạo kết nối đến nguồn dữ liệu.
• Thực hiện các lệnh truy vấn SQL trên nguồn dữ liệu.
• Cung cấp thư viện xử lý cho 3 loại nguồn dữ liệu khác
nhau (3 provider): SQL Server, OLE DB và ODBC.
• Mỗi provider được quản lý bởi một namespace, nằm
trong namespace System.Data.
• Có 4 thành phần chính trong một provider:





Connection
Command
DataReader
DataAdapter



DataAdapter
• Ý nghĩa: Cầu nối giữa CSDL và DataSet
• Thuộc tính và phương thức:
• Fill(DataSet): Sử dụng SelectCommand lấy dữ liệu từ Data
Source đổ vào DataSet
• Update(DataSet): Cập nhật dữ liệu trong DataSet vào
DataSource
• Các thành phần: InsertCommand, UpdateCommand,
DeleteCommand
• *.AcceptChanges();

14


DataSet
DataSet
.Tables[...]

DataTable
DataTable

schema

.Columns[...]
.Columns[..]

DataColumn DataColumn

.Rows[...]
.Rows[..]


DataRow
DataRow

.DefaultView
...
.Relations[...]
...
15

DataView

DataRelation
DataRelation

data


DataSet
• Là thành phần lưu trữ dữ liệu
• Đặc điểm:
– Không kết nối với nguồn dữ liệu.
– Không phân biệt dữ liệu thuộc nguồn nào (SQL Server, OLE DB,
ODBC, …).
– Có thể lưu trữ dữ liệu từ nhiều bảng (Table), nhiều nguồn (Data
Source) khác nhau.
– Dữ liệu trong DataSet được quản lý bởi các DataTable.

• Dữ liệu được đưa vào bởi DataSet thành phần
DataAdapter của .Net data provider



DataSet - DataTable
• Ý nghĩa: Thể hiện một bảng trong CSDL
• Thuộc tính:





TableName: tên của bảng dữ liệu
Columns: danh sách các cột
Rows: danh sách các mẫu tin
PrimaryKey: danh sách các cột là khóa chính

• Phương thức:
• NewRow(): tạo một mẫu tin mới

17


DataSet - DataColumn
• Ý nghĩa: Đại diện cho một cột trong bảng
• Thuộc tính và phương thức:







ColumnName: tên cột
DataType: kiểu dữ liệu
.Columns.Count: Số cột
.Columns.[chỉ số]: Truy xuất một DataColumn
.Columns.[“Tên cột”]: Truy xuất một DataColumn


DataSet - DataRow
• Ý nghĩa: Đại diện cho mẫu tin trong bảng
• Thuộc tính và :

– RowState: trạng thái Added, Modified, Deleted,…

• Phương thức:





.Rows.Count:
.Rows[chỉ số dịng][chỉ số cột]: truy xuất đến cột I
.Rows[chỉ số dòng][tên cột] : truy xuất đến cột I
Delete(): đánh dấu xóa mẫu tin
DataTable
Row

19

Column1


Column2



Column n

abc

xyz

omt














5.3 Kết nối để thao tác với dữ liệu
• Khái niệm
• Lấy dữ liệu về
• Thao tác với dữ liệu



Khái niệm

• Mỗi user có một kết nối cố định tới data source
• Ưu điểm:
– Mơi trường được bảo vệ tốt
– Kiểm sốt được sự đồng bộ
– Dữ liệu ln được mới
• Nhược:
– Phải có một kết nối mạng cố định


Lấy dữ liệu về
• b1. Tạo Connection đến CSDL
• b2. Tạo một biến DataCommand gắn với biến
DataConnection đã mở
• b3. Tạo biến DataReader:



Thi hành phương thức ExcuteReader()
Đọc và trình bày dữ liệu

• b.4 Đóng và giải phóng các biến đối tượng


Thao tác với dữ liệu
• b1. Khai báo một biến đối tượng DataConnection, và mở kết
nối đến cơ sở dữ liệu
• b2. Tạo một biến DataCommand gắn với biến DataConnection

đã mở
• b3. Gán giá trị cho thuộc tính CommandType của biến đối
tượng DataCommand
• b4. Gán câu lệnh truy vấn (insert, update, delete, gọi store
procedure…) cho thuộc tính CommandText của biến đối tượng
DataCommand
• b5. Thi hành phương thức ExcuteNonquery() của biến đối
tượng DataCommand
• b6. Đóng và giải phóng các biến đối tượng nếu không cần
thiết


Demo 1
Thực hiện các cơng việc:
• Kết nối CSDL
• Đọc dữ liệu trên CSDL rồi đưa lên web thơng qua
ListBox
• Đọc dữ liệu trên CSDL với tham số rồi đưa lên web
thơng qua ListBox
• Chèn vào CSDL 1 bản ghi
• Sửa 1 bản ghi trong CSDL
• Xóa 1 bản ghi trong CSDL


5.3 Thao tác với dữ liệu (phi kết nối)






Khái niệm
Các bước
Lấy dữ liệu về để thao tác
Thực hiện thao tác trên CSDL


×