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

bài 7 đối tượng data source -đóng gói ứng dụng - giới thiệu các kĩ thuật lập trình asp.net nâng cao

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 (18.35 MB, 57 trang )

Bài 7:
Đối tượng Data Source
-Đóng gói ứng dụng
- Giới thiệu các kĩ thuật lập trình ASP.NET nâng cao
Các nội dung đã học trong bài trước
Giới thiệu các điều khiển hiển thị dữ liệu
Điều khiển GridView
Điều khiển DetailsView
Hệ thống bài cũ
Đối tượng Data Source - Đóng gói ứng dụng - Các kĩ thuật lập trình ASP.NET nâng cao
2
Mục tiêu môn học
1. Kiến trúc ba tầng
2. Object Data Source
Đối tượng Data Source - Đóng gói ứng dụng - Các kĩ thuật lập trình ASP.NET nâng cao
3
2. Object Data Source
3. Triển khai ứng dụng
Đối tượng Data Source - Đóng gói ứng dụng - Các kĩ thuật lập trình ASP.NET nâng cao
4
Hầu hết các chuyên gia phát
triển ứng dụng đều sử dụng
kiến trúc ba tầng để phát
triển ứng dụng web.
Kiến trúc ba tầng phân tách
phần trình bày, các quy tắc
nghiệp vụ, thành phần truy
cập CSDL của ứng dụng
Ba tầng:
Tầng trình bày
Tầng trung gian


Tầng CSDL
Kiến trúc ba tầng
trong ứng dụng ASP.NET
Web Form
Tầng
trình
bày
Hầu hết các chuyên gia phát
triển ứng dụng đều sử dụng
kiến trúc ba tầng để phát
triển ứng dụng web.
Kiến trúc ba tầng phân tách
phần trình bày, các quy tắc
nghiệp vụ, thành phần truy
cập CSDL của ứng dụng
Ba tầng:
Tầng trình bày
Tầng trung gian
Tầng CSDL
Đối tượng Data Source - Đóng gói ứng dụng - Các kĩ thuật lập trình ASP.NET nâng cao
5
Lớp truy cập
CSDL
CSDL
Tầng
trung
gian
Tầng
CSDL
Lớp nghiệp vụ

Tầng trình bầy:
Gồm các trang ASP.NET quản lý giao diện ứng dụng.
Tầng trung gian
Gồm các lớp truy cập dữ liệu quản lý truy cập dữ liệu ứng
dụng.
Có thể chứa các đối tượng nghiệp vụ và các quy tắc
nghiệp vụ
Ví dụ: Đối tượng nghiệp vụ: Các lớp biểu diễn thực thể khách
hàng, sản phẩm, nhân viên…
Quy tắc nghiệp vụ: Chính sách giảm giá…
Tầng CSDL
CSDL của ứng dụng
Kiến trúc ba tầng
trong ứng dụng ASP.NET
Tầng trình bầy:
Gồm các trang ASP.NET quản lý giao diện ứng dụng.
Tầng trung gian
Gồm các lớp truy cập dữ liệu quản lý truy cập dữ liệu ứng
dụng.
Có thể chứa các đối tượng nghiệp vụ và các quy tắc
nghiệp vụ
Ví dụ: Đối tượng nghiệp vụ: Các lớp biểu diễn thực thể khách
hàng, sản phẩm, nhân viên…
Quy tắc nghiệp vụ: Chính sách giảm giá…
Tầng CSDL
CSDL của ứng dụng
Đối tượng Data Source - Đóng gói ứng dụng - Các kĩ thuật lập trình ASP.NET nâng cao
6
Cung cấp phương thức truy xuất dữ liệu từ CSDL.
Phương thức chèn, cập nhật, xóa dữ liệu sử dụng các kĩ

thuật truy cập CSDL như ADO.NET.
Nên đặt trong folder App_Code.
Lớp truy cập CSDL
Đối tượng Data Source - Đóng gói ứng dụng - Các kĩ thuật lập trình ASP.NET nâng cao
7
Đối tượng Data Source - Đóng gói ứng dụng - Các kĩ thuật lập trình ASP.NET nâng cao
8
Giống với SQL data source, Object data source cung
cấp phương pháp:
Truy xuất hiển thị dữ liệu từ CSDL cho người dùng
Cập nhật CSDL.
Khác
Object data source cho phép phát triển ứng dụng CSDL
theo kiến trúc ba tầng
Object data source truy cập dữ liệu qua lớp truy cập dữ
liệu. SQL data source truy cập CSDL trực tiếp.
Với các ứng dụng nhỏ, sử dụng SQL data source mang
lại nhiều lợi ích, không phải viết code C#.
Với các ứng dụng lớn, nên thiết kế theo kiến trúc ba
tầng. Do đó, nên sử dụng ObjectDataSource
Object Data Source
Giống với SQL data source, Object data source cung
cấp phương pháp:
Truy xuất hiển thị dữ liệu từ CSDL cho người dùng
Cập nhật CSDL.
Khác
Object data source cho phép phát triển ứng dụng CSDL
theo kiến trúc ba tầng
Object data source truy cập dữ liệu qua lớp truy cập dữ
liệu. SQL data source truy cập CSDL trực tiếp.

Với các ứng dụng nhỏ, sử dụng SQL data source mang
lại nhiều lợi ích, không phải viết code C#.
Với các ứng dụng lớn, nên thiết kế theo kiến trúc ba
tầng. Do đó, nên sử dụng ObjectDataSource
Đối tượng Data Source - Đóng gói ứng dụng - Các kĩ thuật lập trình ASP.NET nâng cao
9
Ứng dụng CategoryMaint hiển thị thông tin danh mục
sản phẩm trong CSDL, cho phép người dùng cập nhật
thông tin danh mục sản phẩm
Ứng dụng gồm:
Một điều khiển GridView hiển thị danh sách phân loại sản
phẩm
Một điều khiển DetailsView thiết kế ở chế độ Insert cho
phép người dùng thêm mới sản phẩm
Giới thiệu ứng dụng CategoryMaint
Ứng dụng CategoryMaint hiển thị thông tin danh mục
sản phẩm trong CSDL, cho phép người dùng cập nhật
thông tin danh mục sản phẩm
Ứng dụng gồm:
Một điều khiển GridView hiển thị danh sách phân loại sản
phẩm
Một điều khiển DetailsView thiết kế ở chế độ Insert cho
phép người dùng thêm mới sản phẩm
Đối tượng Data Source - Đóng gói ứng dụng - Các kĩ thuật lập trình ASP.NET nâng cao
10
Tổ chức ứng dụng trên theo kiến trúc ba tầng, sử dụng
điều khiển ObjectDataSource để thao tác với CSDL
Tầng trình bày: Web Form Default.aspx
Hai điều khiển objectDatasource
Hai điều khiển buộc dữ liệu (drop-down list và datalist)

Tầng trung gian: Lớp truy cập CSDL ProductDB, lớp nghiệp
vụ Category
Tầng CSDL: CSDL Halloween lưu
trong hệ quản trị SQL Server
Thiết kế
ứng dụng theo kiến trúc ba tầng
Tổ chức ứng dụng trên theo kiến trúc ba tầng, sử dụng
điều khiển ObjectDataSource để thao tác với CSDL
Tầng trình bày: Web Form Default.aspx
Hai điều khiển objectDatasource
Hai điều khiển buộc dữ liệu (drop-down list và datalist)
Tầng trung gian: Lớp truy cập CSDL ProductDB, lớp nghiệp
vụ Category
Tầng CSDL: CSDL Halloween lưu
trong hệ quản trị SQL Server
Đối tượng Data Source - Đóng gói ứng dụng - Các kĩ thuật lập trình ASP.NET nâng cao
11
CategoryDB,
Category
CSDL
Hallowen
Tầng
trình
bày
Tầng trung
gian
Tầng
CSDL
Object DataSource
Điều khiển buộc dữ liệu

Web Form
Cấu trúc thư mục của ứng dụng
Thiết kế
ứng dụng theo kiến trúc ba tầng
Đối tượng Data Source - Đóng gói ứng dụng - Các kĩ thuật lập trình ASP.NET nâng cao
12
Nội dung demo
Tạo chuỗi kết nối trong File web.config
Thiết kết giao diện
Tạo lớp nghiệp vụ: Category
Tạo lớp truy cập CSDL:
Tạo lớp CategoryDB
Truy xuất dữ liệu từ CSDL
Thêm ObjectDataSource, chỉ định CategoryDB là lớp truy cập
dữ liệu cho ObjectDataSource này
Liên kết ObjectDataSource với các điều khiển
Thêm chức năng cập nhật dữ liệu cho điều khiển
Kiểm soát lỗi thao tác với CSDL
Viết mã xử lý sự kiện cho các sự kiện ItemInserted
Demo
Xây dựng ứng dụng ProductList
theo kiến trúc ba tầng
Nội dung demo
Tạo chuỗi kết nối trong File web.config
Thiết kết giao diện
Tạo lớp nghiệp vụ: Category
Tạo lớp truy cập CSDL:
Tạo lớp CategoryDB
Truy xuất dữ liệu từ CSDL
Thêm ObjectDataSource, chỉ định CategoryDB là lớp truy cập

dữ liệu cho ObjectDataSource này
Liên kết ObjectDataSource với các điều khiển
Thêm chức năng cập nhật dữ liệu cho điều khiển
Kiểm soát lỗi thao tác với CSDL
Viết mã xử lý sự kiện cho các sự kiện ItemInserted
Đối tượng Data Source - Đóng gói ứng dụng - Các kĩ thuật lập trình ASP.NET nâng cao
13
Tạo chuỗi kết nối trong file web.config
Chuỗi kết nối
<connectionStrings>
<add name="HalloweenConnectionString" connectionString="Data
Source=localhost\sqlexpress;Initial Catalog=Halloween;Integrated
Security=True" providerName="System.Data.SqlClient"/>
</connectionStrings>
Đối tượng Data Source - Đóng gói ứng dụng - Các kĩ thuật lập trình ASP.NET nâng cao
14
Thêm các điều khiển:
GridView
DetailsView
Label
Thiết kế giao diện
Đối tượng Data Source - Đóng gói ứng dụng - Các kĩ thuật lập trình ASP.NET nâng cao
15
Khai báo các thuộc tính tương ứng với các cột lấy từ
CSDL và các hàm get, set của các thuộc tính này
Lớp nghiệp vụ Category
public class Category
{
private string categoryID;
private string shortName;

private string longName;
public string CategoryID
{
get { return categoryID; }
set { categoryID = value; }
}
public string ShortName
{
get { return shortName; }
set { shortName = value; }
}
public string LongName
{
get { return longName; }
set { longName = value; }
}
public Category()
{}
}
Đối tượng Data Source - Đóng gói ứng dụng - Các kĩ thuật lập trình ASP.NET nâng cao
16
public class Category
{
private string categoryID;
private string shortName;
private string longName;
public string CategoryID
{
get { return categoryID; }
set { categoryID = value; }

}
public string ShortName
{
get { return shortName; }
set { shortName = value; }
}
public string LongName
{
get { return longName; }
set { longName = value; }
}
public Category()
{}
}
Cung cấp các phương thức truy xuất, thêm, cập nhật,
xóa dữ liệu và trả về kiểu đối tượng DataObject cho điều
khiển ObjectDataSource
Để chỉ định CategoryDB là lớp truy cập CSDL
Thêm dòng [DataObject(true)] vào trước dòng khai báo
lớp
Lớp truy cập CSDL CategoryDB
Cung cấp các phương thức truy xuất, thêm, cập nhật,
xóa dữ liệu và trả về kiểu đối tượng DataObject cho điều
khiển ObjectDataSource
Để chỉ định CategoryDB là lớp truy cập CSDL
Thêm dòng [DataObject(true)] vào trước dòng khai báo
lớp
Đối tượng Data Source - Đóng gói ứng dụng - Các kĩ thuật lập trình ASP.NET nâng cao
17
Các phương thức của CategoryDB

Lấy chuỗi kết nối được lưu trong file web.config
private static string GetConnectionString()
{
return
ConfigurationManager.ConnectionStrings
["HalloweenConnectionString"].ConnectionString;
}
Truy xuất tất cả danh mục sản phẩm trong bảng Category
trả về kiểu List
[DataObjectMethod(DataObjectMethodType.Select)]
public static List<Category> GetCategories()
{}
Lớp truy cập CSDL CategoryDB
Các phương thức của CategoryDB
Lấy chuỗi kết nối được lưu trong file web.config
private static string GetConnectionString()
{
return
ConfigurationManager.ConnectionStrings
["HalloweenConnectionString"].ConnectionString;
}
Truy xuất tất cả danh mục sản phẩm trong bảng Category
trả về kiểu List
[DataObjectMethod(DataObjectMethodType.Select)]
public static List<Category> GetCategories()
{}
Đối tượng Data Source - Đóng gói ứng dụng - Các kĩ thuật lập trình ASP.NET nâng cao
18
Chỉ định đây là phương
thức của lớp truy cập

CSDL
Phương thức cập nhật CSDL
[DataObjectMethod(DataObjectMethodType.Update)]
public static int UpdateCategory(Category
original_Category,
Category category) {}
Phương thức xóa CSDL
[DataObjectMethod(DataObjectMethodType.Delete)]
public static int DeleteCategory(Category
category) {}
Phương thức chèn dữ liệu
[DataObjectMethod(DataObjectMethodType.Insert)]
public static int InsertCategory(Category
category) {}
Lớp truy cập CSDL CategoryDB
Phương thức cập nhật CSDL
[DataObjectMethod(DataObjectMethodType.Update)]
public static int UpdateCategory(Category
original_Category,
Category category) {}
Phương thức xóa CSDL
[DataObjectMethod(DataObjectMethodType.Delete)]
public static int DeleteCategory(Category
category) {}
Phương thức chèn dữ liệu
[DataObjectMethod(DataObjectMethodType.Insert)]
public static int InsertCategory(Category
category) {}
Đối tượng Data Source - Đóng gói ứng dụng - Các kĩ thuật lập trình ASP.NET nâng cao
19

Truy cập CSDL theo kiến trúc kết nối sử dụng data
reader
Phương thức truy xuất dữ liệu
[DataObjectMethod(DataObjectMethodType.Select)]
public static List<Category> GetCategories()
{
List<Category> categoryList = new List<Category>();
SqlConnection con = new SqlConnection(GetConnectionString());
string sel = "SELECT CategoryID, ShortName, LongName "
+ "FROM Categories ORDER BY ShortName";
SqlCommand cmd = new SqlCommand(sel, con);
con.Open();
SqlDataReader dr =
cmd.ExecuteReader(CommandBehavior.CloseConnection);
Category category;
while (dr.Read())
{
category = new Category();
category.CategoryID = dr["CategoryID"].ToString();
category.ShortName = dr["ShortName"].ToString();
category.LongName = dr["LongName"].ToString();
categoryList.Add(category);
}
dr.Close();
return categoryList;
}
Đối tượng Data Source - Đóng gói ứng dụng - Các kĩ thuật lập trình ASP.NET nâng cao
20
[DataObjectMethod(DataObjectMethodType.Select)]
public static List<Category> GetCategories()

{
List<Category> categoryList = new List<Category>();
SqlConnection con = new SqlConnection(GetConnectionString());
string sel = "SELECT CategoryID, ShortName, LongName "
+ "FROM Categories ORDER BY ShortName";
SqlCommand cmd = new SqlCommand(sel, con);
con.Open();
SqlDataReader dr =
cmd.ExecuteReader(CommandBehavior.CloseConnection);
Category category;
while (dr.Read())
{
category = new Category();
category.CategoryID = dr["CategoryID"].ToString();
category.ShortName = dr["ShortName"].ToString();
category.LongName = dr["LongName"].ToString();
categoryList.Add(category);
}
dr.Close();
return categoryList;
}
Phương thức thêm dữ liệu vào CSDL
[DataObjectMethod(DataObjectMethodType.Insert)]
public static int InsertCategory(Category category)
{
SqlConnection con = new SqlConnection(GetConnectionString());
string ins = "INSERT INTO Categories "
+ " (CategoryID, ShortName, LongName) "
+ " VALUES(@CategoryID, @ShortName, @LongName)";
SqlCommand cmd = new SqlCommand(ins, con);

cmd.Parameters.AddWithValue("CategoryID", category.CategoryID);
cmd.Parameters.AddWithValue("ShortName", category.ShortName);
cmd.Parameters.AddWithValue("LongName", category.LongName);
con.Open();
int i = cmd.ExecuteNonQuery();
con.Close();
return i;
}
Đối tượng Data Source - Đóng gói ứng dụng - Các kĩ thuật lập trình ASP.NET nâng cao
21
[DataObjectMethod(DataObjectMethodType.Insert)]
public static int InsertCategory(Category category)
{
SqlConnection con = new SqlConnection(GetConnectionString());
string ins = "INSERT INTO Categories "
+ " (CategoryID, ShortName, LongName) "
+ " VALUES(@CategoryID, @ShortName, @LongName)";
SqlCommand cmd = new SqlCommand(ins, con);
cmd.Parameters.AddWithValue("CategoryID", category.CategoryID);
cmd.Parameters.AddWithValue("ShortName", category.ShortName);
cmd.Parameters.AddWithValue("LongName", category.LongName);
con.Open();
int i = cmd.ExecuteNonQuery();
con.Close();
return i;
}
Phương thức cập nhật CSDL
[DataObjectMethod(DataObjectMethodType.Update)]
public static int UpdateCategory( Category category)
{

SqlConnection con = new SqlConnection(GetConnectionString());
string up = "UPDATE Categories "
+ "SET ShortName = @ShortName, "
+ "LongName = @LongName "
+ "WHERE CategoryID = @original_CategoryID "
;
SqlCommand cmd = new SqlCommand(up, con);
cmd.Parameters.AddWithValue("ShortName", category.ShortName);
cmd.Parameters.AddWithValue("LongName", category.LongName);
cmd.Parameters.AddWithValue("original_CategoryID",
category.CategoryID);
con.Open();
int updateCount = cmd.ExecuteNonQuery();
con.Close();
return updateCount;
}
Đối tượng Data Source - Đóng gói ứng dụng - Các kĩ thuật lập trình ASP.NET nâng cao
22
[DataObjectMethod(DataObjectMethodType.Update)]
public static int UpdateCategory( Category category)
{
SqlConnection con = new SqlConnection(GetConnectionString());
string up = "UPDATE Categories "
+ "SET ShortName = @ShortName, "
+ "LongName = @LongName "
+ "WHERE CategoryID = @original_CategoryID "
;
SqlCommand cmd = new SqlCommand(up, con);
cmd.Parameters.AddWithValue("ShortName", category.ShortName);
cmd.Parameters.AddWithValue("LongName", category.LongName);

cmd.Parameters.AddWithValue("original_CategoryID",
category.CategoryID);
con.Open();
int updateCount = cmd.ExecuteNonQuery();
con.Close();
return updateCount;
}
Phương thức xóa CSDL
[DataObjectMethod(DataObjectMethodType.Delete)]
public static int DeleteCategory(Category category)
{
SqlConnection con = new SqlConnection(GetConnectionString());
string del = "DELETE FROM Categories "
+ "WHERE CategoryID = @CategoryID "
+ "AND ShortName = @ShortName "
+ "AND LongName = @LongName ";
SqlCommand cmd = new SqlCommand(del, con);
cmd.Parameters.AddWithValue("CategoryID", category.CategoryID);
cmd.Parameters.AddWithValue("ShortName", category.ShortName);
cmd.Parameters.AddWithValue("LongName", category.LongName);
con.Open();
int i = cmd.ExecuteNonQuery();
con.Close();
return i;
}
Đối tượng Data Source - Đóng gói ứng dụng - Các kĩ thuật lập trình ASP.NET nâng cao
23
[DataObjectMethod(DataObjectMethodType.Delete)]
public static int DeleteCategory(Category category)
{

SqlConnection con = new SqlConnection(GetConnectionString());
string del = "DELETE FROM Categories "
+ "WHERE CategoryID = @CategoryID "
+ "AND ShortName = @ShortName "
+ "AND LongName = @LongName ";
SqlCommand cmd = new SqlCommand(del, con);
cmd.Parameters.AddWithValue("CategoryID", category.CategoryID);
cmd.Parameters.AddWithValue("ShortName", category.ShortName);
cmd.Parameters.AddWithValue("LongName", category.LongName);
con.Open();
int i = cmd.ExecuteNonQuery();
con.Close();
return i;
}
Thêm ObjectDataSource
Truy xuất dữ liệu từ CSDL
Đối tượng Data Source - Đóng gói ứng dụng - Các kĩ thuật lập trình ASP.NET nâng cao
24
Chọn lớp truy
cập CSDL
Chọn phương thức truy
cập CSDL trong các tab
SELECT, INSERT…
Liên kết Object DataSource với điều khiển
Truy xuất dữ liệu từ CSDL
Đối tượng Data Source - Đóng gói ứng dụng - Các kĩ thuật lập trình ASP.NET nâng cao
25

×