11
Chương 6
Lập Trình Web Form Với ADO.Net
Khoa CNTT, Trường CĐ CNTT TP.HCM
© Dương Thành Phết-www.thayphet.net
1 Tổng quan về ADO.Net
2 Các đối tượng trong ADO.Net
3 Xây dựng lớp xử lý dữ liệu
4 Xử lý giỏ hàng cho website thương mại điện tử
22
1. Tổng Quan Về ADO.Net
1.1 Giới thiệu
Khoa CNTT, Trường CĐ CNTT TP.HCM
© Dương Thành Phết-www.thayphet.net
1.2 Kiến trúc ADO .Net
1.3 Minh họa tạo kết nối CSDL
33
Hầu hết ứng dụng windows hay website đều cần
có CSDL, để lưu trữ, xử lý, tìm kiếm và báo cáo…
Khi dữ liệu trở thành trung tâm của ứng dụng thì
việc cung cấp các chức năng tới người dùng phụ thuộc
vào khả năng thao tác dữ liệu, vấn đề cần quan tâm là:
Lưu dữ liệu tập trung.
Đảm bảo toàn vẹn dữ liệu.
Đảm bảo khả năng truy xuất đồng thời.
Đảm bảo thời gian hồi đáp ngắn.
Bảo mật dữ liệu.
Trao đổi dữ liệu giữa các hệ thống khác nhau
Khoa CNTT, Trường CĐ CNTT TP.HCM
© Dương Thành Phết-www.thayphet.net
1.1 Giới Thiệu
44
Vấn đề này được giải quyết dựa vào khả năng
của các Hệ QTCSDL.
.Net truy xuất DL qua ADO.NET, đặc điểm chính
của ADO.NET là:
Khả năng làm việc với DL không kết nối: DL được
lưu trữ trong bộ nhớ như một CSDL thu nhỏ (dataset),
nhằm tăng tốc độ xử lý tính toán và hạn chế sử dụng
tài nguyên.
Khả năng xử lý dữ iệu chuẩn XML (Có thể trao đổi
giữa bất kỳ hệ thống nào)
Khoa CNTT, Trường CĐ CNTT TP.HCM
© Dương Thành Phết-www.thayphet.net
55
1.2 Kiến Trúc ADO.Net
Khoa CNTT, Trường CĐ CNTT TP.HCM
© Dương Thành Phết-www.thayphet.net
66
Kiến trúc ADO.NET có thể chia làm 2 phần chính:
Managed Provider Component: Bao gồm các đối
tượng như DataAdapter, DataReader,… giữ nhiệm vụ
làm việc trực tiếp với dữ liệu như database, file,…
Content Component: Bao gồm các đối tượng như
DataSet, DataTable,… đại diện cho dữ liệu thực sự
cần làm việc.
Khoa CNTT, Trường CĐ CNTT TP.HCM
© Dương Thành Phết-www.thayphet.net
77
DataReader: Là đối tượng giúp truy cập dữ liệu
nhanh chóng.
DataSet: Là một bản sao thu nhỏ của CSDL trong
bộ nhớ với nhiều bảng và các mối quan hệ.
DataAdapter: Là đối tượng kết nối giữa DataSet và
CSDL, nó bao gồm 2 đối tượng Connection và
Command để cung cấp dữ liệu cho DataSet cũng như
cập nhật dữ liệu từ DataSet xuống CSDL.
Khoa CNTT, Trường CĐ CNTT TP.HCM
© Dương Thành Phết-www.thayphet.net
88
1.3 Minh họa tạo kết nối CSDL
Khoa CNTT, Trường CĐ CNTT TP.HCM
© Dương Thành Phết-www.thayphet.net
Cơ bản các bước thực hiện với database
Bước 1: Tạo kết nối
Bước 2: Mở kết nối dữ liệu
Bước 3: Tạo lệnh điều khiển truy vấn SQL
Bước 4: Thực thi lệnh
Bước 5: Đóng kết nối
Bước 6: in kết quả
99
Khoa CNTT, Trường CĐ CNTT TP.HCM
© Dương Thành Phết-www.thayphet.net
using System;
using System.Data;
using System.Data.SqlClient;
public partial class vd1 : System.Web.UI.Page{
protected void Page_Load(object sender, EventArgs e) {
//Khai báo và khởi tạo biến Connection
SqlConnection cnn = new SqlConnection("Data Source=(local);
Initial Catalog=QLbansach;User ID=sa;Password=");
cnn.Open(); //Mở kết nối
//Command điều khiển truy vấn sql
SqlCommand cmd = cnn.CreateCommand();
cmd.CommandText="select TenKH from Khachhang where MaKH=5";
//lấy về chuỗi giá trị trong cơ sở dữ liệu
string result = (string)cmd.ExecuteScalar();
cnn.Close(); //đóng kết nối
Response.Write(result); //in giá trị ra màn hình
}
}
Ví dụ:
1010
2. Các đối tượng trong ADO.Net
2.1 Connection
2.2 Command
Khoa CNTT, Trường CĐ CNTT TP.HCM
© Dương Thành Phết-www.thayphet.net
1111
2.1 Connection
Vai trò của Connection trong ADO.net là tạo kết
nối giữa ứng dụng với CSDL
Data Provider
System.Data.Oledb : Sử dụng với Access
System.Data.SqlCient : Sử dụng với SQLServer
Ứng với mỗi tên miền:
System.Data.Oledb.OledbConnection
System.Data.SqlClient.SqlConnection
Và các Data Provider khác:
System.data.OcracleClient(Ocracle)
MicroSoft.data.Odbc(Thông qua ODBC của HĐH)
Microsoft.Data.Sqlxml (XML trên Sqlserver)
Khoa CNTT, Trường CĐ CNTT TP.HCM
© Dương Thành Phết-www.thayphet.net
1212
Connection String:
Khi thực hiện kết nối cần khai báo các thông tin
cho Connection thông qua thuộc tính Connection String.
Tùy thuộc vào Data Provider:
Khoa CNTT, Trường CĐ CNTT TP.HCM
© Dương Thành Phết-www.thayphet.net
Nếu kết nối với CSDL Access
Provider: Khai báo Data Provider của Access
Data Source: Tên tập tin CSDL (.mdb)
User ID: Tên người dùng
Password : Mật khẩu
1313
Khoa CNTT, Trường CĐ CNTT TP.HCM
© Dương Thành Phết-www.thayphet.net
Ví dụ: Tạo kết nối với CSDL Access
using System;
using System.Data;
using System.Data.OleDb;
public partial class VD2 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
String StrCnn="Provider=Microsoft.Jet.OLEDB.4.0;
Data Source=" + Server.MapPath("~/App_Data/QLBansach.mdb");
OleDbConnection cnn = new OleDbConnection (StrCnn);
cnn.Open();
//Truy xuất, xử lý dữ liệu
cnn.Close();
}
}
1414
Khoa CNTT, Trường CĐ CNTT TP.HCM
© Dương Thành Phết-www.thayphet.net
Nếu kết nối với CSDL SQLServer
Provider: Khai báo Data Provider của SQLServer
Data Source/Server: Tên Server
Initial Catalog/DataBase: Tên CSDL
User ID/UID: Tên người dùng
Password/ PWD: Mật khẩu
Integrated Security: Cơ chế chứng thực đăng nhập
true: tài khoản Windows;
false: Tài khoản SqlServer (ví dụ: sa)
1515
Khoa CNTT, Trường CĐ CNTT TP.HCM
© Dương Thành Phết-www.thayphet.net
Ví dụ: Tạo kết nối với CSDL SQLServer
using System;
using System.Data;
using System.Data.sqlClient;
public partial class KetnoiCSDL : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
String StrCnn="Data Source=.; Initial Catalog=QLbansach;
User ID=sa;Password=“;
SqlConnection cnn = new SqlConnection(StrCnn);
cnn.Open();
//Truy xuất, xử lý dữ liệu
cnn.Close();
}
}
1616
Các thuộc tính Của Connection
DataBase: Tên CSDL
DataSource: Tên Server
Provider:Tương ứng với Provider của HQTCSDL
State: Tình trạng kết nối của Connection:
Broken: Kết nối đã bị ngắt khi đã kết nối
Closed: Kết nối đã đóng
Connecting: Đang kết nối
Executing: Kết nối đang thực hiện một lệnh
Fetching: Kết nối đang truy xuất dữ liệu
Open: Kết nối đang mở
Khoa CNTT, Trường CĐ CNTT TP.HCM
© Dương Thành Phết-www.thayphet.net
1717
Các phương thức
Change Databse: Thay đổi DataBase làm việc
Close : Đóng kết nối
Dispose: Giải phóng bộ nhớ
Open: Thực hiện kết nối
Khoa CNTT, Trường CĐ CNTT TP.HCM
© Dương Thành Phết-www.thayphet.net
1818
2.2 Command
Sau khi tạo kết nối CSDL, mọi thao tác với nguồn
dữ liệu có thể được thực hiện thông qua Command.
Tùy theo loại Connection đối tượng Command
thuộc tên miền:
System.Data.OleDb.OleDbCommand
System.Data.SqlClient.SqlCommand
Khoa CNTT, Trường CĐ CNTT TP.HCM
© Dương Thành Phết-www.thayphet.net
1919
Tạo Command
Cú pháp:
<Loai Command> <Biến Command> As New <Loai Command>;
<Biến Command>.Connection=<Biến Connection >;
<Biến Command>.CommandText=Lệnh SQL>;
Hoặc
<Loai Command> <Biến Command>
As New <Loại Command>(<Lệnh SQL>);
<Biến Command>.Connection=<Biến Connection >;
Khoa CNTT, Trường CĐ CNTT TP.HCM
© Dương Thành Phết-www.thayphet.net
2020
Các thuộc tính Của Command
CommandText: Lệnh SQL hay tên Procedure
CommandType: Loại Command
Text: (Mặc định): Là câu lệnh SQL
StoredProcedure: Tên thủ tục
TableDirect: Tên Connectionủa table
VD:
SqlCommand cmd As SqlCommand = New SqlCommand();
cmd.Connection = cnn;
cmd.CommandType = CommandType.Text;
cmd.CommandText = "Select * From Khachhang"
Khoa CNTT, Trường CĐ CNTT TP.HCM
© Dương Thành Phết-www.thayphet.net
2121
Parameters
Lệnh SQL trong commandText có thể sử dụng
? (khi sử dụng Access)
@Tênbiến (khi sử dụng SQLServer)
thay cho trị chưa xác định và khi thực hiện sẽ
dùng đối tượng Parameters để truyền giá trị vào
dấu ?/ @Tênbiến.
Tùy theo Command Parameter sẽ khai báo khác nhau
Khoa CNTT, Trường CĐ CNTT TP.HCM
© Dương Thành Phết-www.thayphet.net
2222
Access
OleDbParameter <tên Parameter>
As New OleDbParameter();
OleDbParameter <Ten Parameter>
As New OleDbparameter(<Tên>);
OleDbParameter <Tên parameter>
As New OleDbParameter (<tên>,<giá>);
Khoa CNTT, Trường CĐ CNTT TP.HCM
© Dương Thành Phết-www.thayphet.net
SQLServer
SqlParameter <tên Parameter>
As New SqlParameter();
SqlParameter <Ten Parameter>
As New SqlParameter(<Tên>);
SqlParameter <Tên parameter>
As New SqlParamter(<tên>,<giá>);
2323
Các thuộc tính cần chú ý:
Direction: Giá trị cho biết lọai tham số
Input: (mặc định) Loại tham số đầu vào
InputOutput: Loại tham số đầu vào và ra
Output: Loại tham số đầu ra
ReturnValue: Loại tham số nhận trị trả về
OleDbType / SqlDbType: Kiểu dữ liệu của tham số.
ParameterName: Tên tham số
Value: Giá trị tham số
Khoa CNTT, Trường CĐ CNTT TP.HCM
© Dương Thành Phết-www.thayphet.net
2424
VD: Khi sử dụng OleDbCommand
cmd.CommandText=”Select * From KhachHang
Where MaKH=?”;
OleDbParameter Par As
OleDbParameter= cmd.CreateParameter();
Par.Value=”KH01”;
cmd.Parameters.Add(Par);
VD: Khi sử dụng SqlDbCommand
cmd.CommandText=”Select * From KhachHang
Where MaKH=@MaKH”;
SqlParameter Par As
SqlParameter = cmd.CreateParameter();
Par.ParameterName=”@MaKH”;
Par.Value=”KH01”;
cmd.Parameters.Add(Par);
Khoa CNTT, Trường CĐ CNTT TP.HCM
© Dương Thành Phết-www.thayphet.net
2525
Đưa tham số vào tập hợp Parameters
VD: Khi sử dụng OleDbCommand
cmd.CommandText=”Select * From BangDiem
Where Masv=? And MaMH=?”;
OleDbParameter Par1 As OleDbParameter=
cmd.CreateParameters.Add(“Sinhvien”,OleDbType.Char,4);
Par1.Value=”SV01”
OleDbParameter Par2 As OleDbParameter=
cmd.CreateParameters.Add(“Monhoc”,OleDbType.Char,4);
Par2.Value=”MH01”
Khoa CNTT, Trường CĐ CNTT TP.HCM
© Dương Thành Phết-www.thayphet.net