48
Bài 5: Làm quen với lập trình CSDL ASP.NET

Bài 5: Làm quen với lập trình CSDL ASP.NET - Giáo trình FPT - Có ví dụ kèm theo

Embed Size (px)

DESCRIPTION

1. ADO.NET 2. Điều khiển Data Source 3. Điều khiển Data List

Citation preview

Page 1: Bài 5: Làm quen với lập trình CSDL ASP.NET - Giáo trình FPT - Có ví dụ kèm theo

Bài 5:Làm quen với lập trình CSDL ASP.NET

Page 2: Bài 5: Làm quen với lập trình CSDL ASP.NET - Giáo trình FPT - Có ví dụ kèm theo

Những nội dung đã học ở bài trướcTrang MasterĐiều hướng trang WebSử dụng Theme

Hệ thống bài cũ

Làm quen với lập trình CSDL ASP.NET 2

Page 3: Bài 5: Làm quen với lập trình CSDL ASP.NET - Giáo trình FPT - Có ví dụ kèm theo

Mục tiêu bài học

1. ADO.NET

Làm quen với lập trình CSDL ASP.NET 3

2. Điều khiển Data Source

3. Điều khiển Data List

Page 4: Bài 5: Làm quen với lập trình CSDL ASP.NET - Giáo trình FPT - Có ví dụ kèm theo

Làm quen với lập trình CSDL ASP.NET 4

Page 5: Bài 5: Làm quen với lập trình CSDL ASP.NET - Giáo trình FPT - Có ví dụ kèm theo

Hầu hết các ứng dụng ASP.NET đều có tương tác vớiCSDL.Tương tự như ứng dụng Windows, Ứng dụngASP.NET cũng sử dụng ADO.NET để thao tác với CSDLADO.NET là một phần của .NET Framework, đượcxem là “bộ thư viện lớp” chịu trách nhiệm xử lýdữ liệu trong ngôn ngữ MS .NET.

Lập trình CSDL với ASP.NET

Hầu hết các ứng dụng ASP.NET đều có tương tác vớiCSDL.Tương tự như ứng dụng Windows, Ứng dụngASP.NET cũng sử dụng ADO.NET để thao tác với CSDLADO.NET là một phần của .NET Framework, đượcxem là “bộ thư viện lớp” chịu trách nhiệm xử lýdữ liệu trong ngôn ngữ MS .NET.

Làm quen với lập trình CSDL ASP.NET 5

Page 6: Bài 5: Làm quen với lập trình CSDL ASP.NET - Giáo trình FPT - Có ví dụ kèm theo

ADO hỗ trợ kết nối tới các hệ quản trị CSDL: SQL Server,Microsoft Access, Oracle…Các thành phần cơ bản của ADO.NET

.NET data provider: cung cấp các lớp để tương tác vớiCSDLDataset: Là bản sao của CSDL hay một phần CSDL trênbộ nhớ

ADO.NET

ADO hỗ trợ kết nối tới các hệ quản trị CSDL: SQL Server,Microsoft Access, Oracle…Các thành phần cơ bản của ADO.NET

.NET data provider: cung cấp các lớp để tương tác vớiCSDLDataset: Là bản sao của CSDL hay một phần CSDL trênbộ nhớ

Làm quen với lập trình CSDL ASP.NET 6

Page 7: Bài 5: Làm quen với lập trình CSDL ASP.NET - Giáo trình FPT - Có ví dụ kèm theo

Data provider cung cấp các lớp để tương tác với CSDLData provider gồm 4 thành phần chính

Connection: kết nối với CSDLCommand: thực thi các lệnh sql để lấy dữ liệu từ CSDLhoặc thay đổi CSDLDataReader: đọc dữ liệu tuần tự từ CSDLDataAdapter: lấy dữ liệu từ CSDL lưu vào dataset và cậpnhật CSDL

Data Provider

Data provider cung cấp các lớp để tương tác với CSDLData provider gồm 4 thành phần chính

Connection: kết nối với CSDLCommand: thực thi các lệnh sql để lấy dữ liệu từ CSDLhoặc thay đổi CSDLDataReader: đọc dữ liệu tuần tự từ CSDLDataAdapter: lấy dữ liệu từ CSDL lưu vào dataset và cậpnhật CSDL

Làm quen với lập trình CSDL ASP.NET 7

Page 8: Bài 5: Làm quen với lập trình CSDL ASP.NET - Giáo trình FPT - Có ví dụ kèm theo

DatasetLà bản sao của CSDL hay một phần CSDL trên bộ nhớ

DataSet hỗ trợ các thao tác cập nhật CSDLCấu trúc của DataSet giống hệt cấu trúc của cơ sở dữliệu

DataSet

DatasetLà bản sao của CSDL hay một phần CSDL trên bộ nhớ

DataSet hỗ trợ các thao tác cập nhật CSDLCấu trúc của DataSet giống hệt cấu trúc của cơ sở dữliệu

Làm quen với lập trình CSDL ASP.NET 8

Page 9: Bài 5: Làm quen với lập trình CSDL ASP.NET - Giáo trình FPT - Có ví dụ kèm theo

Kết nối giữa ứng dụng và cở sở dữliệu (CSDL) thông qua ADO.NET theohai kiến trúc:

Kiến trúc kết nốiThực hiện kết nối tới CSDL trong khi đang thựchiện các thao tác với dữ liệu.Các đối tượng tham gia: Connection,Command, DataReader, DataAdapter

Kiến trúc không kết nốiDataAdapter kết nối với CSDL thông quaConnection, lấy dữ liệu lưu vào DataSet.Ứng dụng sẽ lấy và thay đổi dữ liệu trênDataSetDataAdapter kết nối với CSDL thông quaConnection và cập nhật lại CSDL

ADO.NET

Kết nối giữa ứng dụng và cở sở dữliệu (CSDL) thông qua ADO.NET theohai kiến trúc:

Kiến trúc kết nốiThực hiện kết nối tới CSDL trong khi đang thựchiện các thao tác với dữ liệu.Các đối tượng tham gia: Connection,Command, DataReader, DataAdapter

Kiến trúc không kết nốiDataAdapter kết nối với CSDL thông quaConnection, lấy dữ liệu lưu vào DataSet.Ứng dụng sẽ lấy và thay đổi dữ liệu trênDataSetDataAdapter kết nối với CSDL thông quaConnection và cập nhật lại CSDL

Làm quen với lập trình CSDL ASP.NET 9

Page 10: Bài 5: Làm quen với lập trình CSDL ASP.NET - Giáo trình FPT - Có ví dụ kèm theo

Các bước sử dụng đối tượng DataReader để truy xuấtthông tin

B1. Thiết lập chuỗi kết nối cho đối tượng ConnectionB2. Tạo đối tượng Command, truyền đối tượng Connectioncho đối tượng Command.B3: Gọi phương thức Open() của đối tượng Connection đểmở kết nối tới CSDLB4. Gọi phương thức ExecuteReader() của đối tượngcommand để trả về dữ liệu kiểu DataReader.B5. Sử dụng phương thức Read() của DataReader để đọctừng dòng

Kiến trúc kết nốiCác bước sử dụng đối tượng DataReader để truy xuấtthông tin

B1. Thiết lập chuỗi kết nối cho đối tượng ConnectionB2. Tạo đối tượng Command, truyền đối tượng Connectioncho đối tượng Command.B3: Gọi phương thức Open() của đối tượng Connection đểmở kết nối tới CSDLB4. Gọi phương thức ExecuteReader() của đối tượngcommand để trả về dữ liệu kiểu DataReader.B5. Sử dụng phương thức Read() của DataReader để đọctừng dòng

Làm quen với lập trình CSDL ASP.NET 10

Page 11: Bài 5: Làm quen với lập trình CSDL ASP.NET - Giáo trình FPT - Có ví dụ kèm theo

Truy xuất CSDL và hiển thị thông tin lên một điều khiểndrop-down listNội dung demo

Tạo chuỗi kết nối trong file web.configKhai báo các đối tượng

Đối tượng ConnectionĐối tượng CommandĐối tượng DataReader

Mở kết nối tới CSDL và truy xuất thông tinMở đối tượng kết nốiGọi ExecuteReader() trên đối tượng Command đã được cấuhình.Xử lý mỗi mẫu tin sử dụng phương thức Read() củaDataReader.

DemoTruy cập CSDL sử dụng kiến trúc kết nối

Truy xuất CSDL và hiển thị thông tin lên một điều khiểndrop-down listNội dung demo

Tạo chuỗi kết nối trong file web.configKhai báo các đối tượng

Đối tượng ConnectionĐối tượng CommandĐối tượng DataReader

Mở kết nối tới CSDL và truy xuất thông tinMở đối tượng kết nốiGọi ExecuteReader() trên đối tượng Command đã được cấuhình.Xử lý mỗi mẫu tin sử dụng phương thức Read() củaDataReader.

Làm quen với lập trình CSDL ASP.NET 11

Page 12: Bài 5: Làm quen với lập trình CSDL ASP.NET - Giáo trình FPT - Có ví dụ kèm theo

Tạo chuỗi kết nối trong file web.config

DemoTruy cập CSDL sử dụng kiến trúc kết nối

<connectionStrings><add name="HalloweenConnectionString"

connectionString="Data Source=HAHA\SQLEXPRESS;InitialCatalog=Halloween;Integrated Security=True"

providerName="System.Data.SqlClient"/></connectionStrings>

Khai báo một thuộc tính trong lớp code-behind để lấy thông tin chuỗi kết nối

Làm quen với lập trình CSDL ASP.NET 12

Khai báo một thuộc tính trong lớp code-behind để lấy thông tin chuỗi kết nốiprivate string connectionString =WebConfigurationManager.ConnectionStrings["HalloweenConnectionString"].ConnectionString;

Page 13: Bài 5: Làm quen với lập trình CSDL ASP.NET - Giáo trình FPT - Có ví dụ kèm theo

Khai báo các đối tượng Connection, Command,DataReader

DemoTruy cập CSDL sử dụng kiến trúc kết nối

private void FillDdlCategories(){

ddlCategories.Items.Clear();//Định nghĩa câu lệnh SQLstring selectSQL = "SELECT CategoryID, LongName FROM Categories";

// Định nghĩa đối tượng ConnectionSqlConnection con = new SqlConnection(connectionString);

// Chỉ định cấu hình đối tượng commandSqlCommand cmd = new SqlCommand(selectSQL, con);

//Khai báo đối tượng data readerSqlDataReader reader;

// Viết đoạn mã mở kết nối tới CSDL và truy xuất thông tin tại đây}

Làm quen với lập trình CSDL ASP.NET 13

private void FillDdlCategories(){

ddlCategories.Items.Clear();//Định nghĩa câu lệnh SQLstring selectSQL = "SELECT CategoryID, LongName FROM Categories";

// Định nghĩa đối tượng ConnectionSqlConnection con = new SqlConnection(connectionString);

// Chỉ định cấu hình đối tượng commandSqlCommand cmd = new SqlCommand(selectSQL, con);

//Khai báo đối tượng data readerSqlDataReader reader;

// Viết đoạn mã mở kết nối tới CSDL và truy xuất thông tin tại đây}

Page 14: Bài 5: Làm quen với lập trình CSDL ASP.NET - Giáo trình FPT - Có ví dụ kèm theo

Mở kết nối tới CSDL và truy xuất thông tin

DemoTruy cập CSDL sử dụng kiến trúc kết nối

try{

con.Open();reader = cmd.ExecuteReader();// Với mỗi phần tử của data reader. Lấy giá trị trường LongName và CategoryID//gán giá trị cho thuộc tính Text & Value của drop-down listwhile (reader.Read()){

ListItem newItem = new ListItem();newItem.Text = reader["LongName"].ToString();newItem.Value = reader["CategoryID"].ToString();ddlCategories.Items.Add(newItem);

}reader.Close();

}catch (Exception err){

lblMessage.Text = "Error reading list of names. ";lblMessage.Text += err.Message;

}finally{

con.Close();}

Làm quen với lập trình CSDL ASP.NET 14

try{

con.Open();reader = cmd.ExecuteReader();// Với mỗi phần tử của data reader. Lấy giá trị trường LongName và CategoryID//gán giá trị cho thuộc tính Text & Value của drop-down listwhile (reader.Read()){

ListItem newItem = new ListItem();newItem.Text = reader["LongName"].ToString();newItem.Value = reader["CategoryID"].ToString();ddlCategories.Items.Add(newItem);

}reader.Close();

}catch (Exception err){

lblMessage.Text = "Error reading list of names. ";lblMessage.Text += err.Message;

}finally{

con.Close();}

Page 15: Bài 5: Làm quen với lập trình CSDL ASP.NET - Giáo trình FPT - Có ví dụ kèm theo

Xóa dữ liệuTạo đối tượng ConnectionTạo đối tượng Command, truyền hai tham số cho đốitượng Command là câu lệnh Delete và đối tượngConnection.Gọi phương thức Open() của đối tượng Connection để mởkết nốiGọi phương thức ExecuteNonQuery() của đối tượngCommand

Xóa dữ liệu

Xóa dữ liệuTạo đối tượng ConnectionTạo đối tượng Command, truyền hai tham số cho đốitượng Command là câu lệnh Delete và đối tượngConnection.Gọi phương thức Open() của đối tượng Connection để mởkết nốiGọi phương thức ExecuteNonQuery() của đối tượngCommand

Làm quen với lập trình CSDL ASP.NET 15

Page 16: Bài 5: Làm quen với lập trình CSDL ASP.NET - Giáo trình FPT - Có ví dụ kèm theo

DemoXóa dữ liệu

protected void btnDelete_Click(object sender, EventArgs e){

string deleteSQL = "DELETE FROM Categories WHERE CategoryID = @CategoryID";// Định nghĩa đối tượng ConnectionSqlConnection con = new SqlConnection(connectionString);// Chỉ định cấu hình đối tượng commandSqlCommand cmd = new SqlCommand(deleteSQL, con);//Truyền tham số cho đối tượng cmdcmd.Parameters.AddWithValue("CategoryID", ddlCategories.SelectedValue);

try{

con.Open();cmd.ExecuteNonQuery();lblMessage.Text = "One row has been deleted";FillDdlCategories();

}catch (Exception err){

lblMessage.Text = "Error deleting row ";lblMessage.Text += err.Message;

}finally{

con.Close();}

}}

Làm quen với lập trình CSDL ASP.NET 16

protected void btnDelete_Click(object sender, EventArgs e){

string deleteSQL = "DELETE FROM Categories WHERE CategoryID = @CategoryID";// Định nghĩa đối tượng ConnectionSqlConnection con = new SqlConnection(connectionString);// Chỉ định cấu hình đối tượng commandSqlCommand cmd = new SqlCommand(deleteSQL, con);//Truyền tham số cho đối tượng cmdcmd.Parameters.AddWithValue("CategoryID", ddlCategories.SelectedValue);

try{

con.Open();cmd.ExecuteNonQuery();lblMessage.Text = "One row has been deleted";FillDdlCategories();

}catch (Exception err){

lblMessage.Text = "Error deleting row ";lblMessage.Text += err.Message;

}finally{

con.Close();}

}}

Page 17: Bài 5: Làm quen với lập trình CSDL ASP.NET - Giáo trình FPT - Có ví dụ kèm theo

Làm quen với lập trình CSDL ASP.NET 17

Page 18: Bài 5: Làm quen với lập trình CSDL ASP.NET - Giáo trình FPT - Có ví dụ kèm theo

Ngoài phương pháp truy cập CSDL sử dụng ADO.NET,ASP.NET cung cấp một phương pháp truy cập CSDLkhác giúp lập trình viên viết ít mã hơn đó là sử dụngcác điều khiển data source.Điều khiển data source quản lý các tác vụ kết nối đếnCSDL, đọc và ghi dữ liệu.

Truy cập CSDLsử dụng điều khiển Data Source

Ngoài phương pháp truy cập CSDL sử dụng ADO.NET,ASP.NET cung cấp một phương pháp truy cập CSDLkhác giúp lập trình viên viết ít mã hơn đó là sử dụngcác điều khiển data source.Điều khiển data source quản lý các tác vụ kết nối đếnCSDL, đọc và ghi dữ liệu.

Làm quen với lập trình CSDL ASP.NET 18

Page 19: Bài 5: Làm quen với lập trình CSDL ASP.NET - Giáo trình FPT - Có ví dụ kèm theo

Điều khiển data source trả về một nguồn dữ liệu (datasource).Điều khiển data source được buộc vào một điều khiểndữ liệu (gridview, detailsview…) để hiển thị dữ liệu chongười dùng.Mỗi điều khiển data source có thể được buộc vào nhiềuđiều khiển dữ liệuĐiều khiển Data source cung cấp các tính năng truyxuất, chèn, cập nhật, xóa CSDLBản chất của việc sử dụng điều khiển data source cũnglà truy cập qua các đối tượng ADO.NET

Truy cập CSDLsử dụng điều khiển Data Source

Điều khiển data source trả về một nguồn dữ liệu (datasource).Điều khiển data source được buộc vào một điều khiểndữ liệu (gridview, detailsview…) để hiển thị dữ liệu chongười dùng.Mỗi điều khiển data source có thể được buộc vào nhiềuđiều khiển dữ liệuĐiều khiển Data source cung cấp các tính năng truyxuất, chèn, cập nhật, xóa CSDLBản chất của việc sử dụng điều khiển data source cũnglà truy cập qua các đối tượng ADO.NET

Làm quen với lập trình CSDL ASP.NET 19

Page 20: Bài 5: Làm quen với lập trình CSDL ASP.NET - Giáo trình FPT - Có ví dụ kèm theo

Hai loại điều khiển datasource thường dùngSQLDataSourceObjectDataSource

SQLDataSource và ObjectDataSource cung cấp phươngpháp truy cập và thao tác với dữ liệu trong một hệ quảntrị CSDL.Khác với điều khiển SQLDataSource, điều khiểnObjectDataSource hỗ trợ phát triển ứng dụng CSDL theokiến trúc ba tầng

Truy cập CSDLsử dụng điều khiển Data Source

Hai loại điều khiển datasource thường dùngSQLDataSourceObjectDataSource

SQLDataSource và ObjectDataSource cung cấp phươngpháp truy cập và thao tác với dữ liệu trong một hệ quảntrị CSDL.Khác với điều khiển SQLDataSource, điều khiểnObjectDataSource hỗ trợ phát triển ứng dụng CSDL theokiến trúc ba tầng

Làm quen với lập trình CSDL ASP.NET 20

Page 21: Bài 5: Làm quen với lập trình CSDL ASP.NET - Giáo trình FPT - Có ví dụ kèm theo

Quá trình liên kết trực tiếp giữa điều khiển và dữ liệu gọilà buộc dữ liệuCác điều khiển đã học hỗ trợ buộc dữ liệu:

Các điều khiển list như: Drop-down list, List Box, Radiobutton list, check box list

Các điều khiển khác sẽ được họcDataList, GridView, DetailsView…

Buộc dữ liệu

Quá trình liên kết trực tiếp giữa điều khiển và dữ liệu gọilà buộc dữ liệuCác điều khiển đã học hỗ trợ buộc dữ liệu:

Các điều khiển list như: Drop-down list, List Box, Radiobutton list, check box list

Các điều khiển khác sẽ được họcDataList, GridView, DetailsView…

Làm quen với lập trình CSDL ASP.NET 21

Page 22: Bài 5: Làm quen với lập trình CSDL ASP.NET - Giáo trình FPT - Có ví dụ kèm theo

ASP.NET cung cấp phương pháp để buộc dữ liệu lấy từmột nguồn dữ liệu sử dụng thuộc tính DataSourceID củađiều khiển dữ liệu.

Buộc dữ liệu

Điều khiểnSQLDataSource

Điều khiển dữ liệu(data control)

Liên kết qua thuộctính DataSourceID củađiều khiển dữ liệu

ASP.NET cung cấp phương pháp để buộc dữ liệu lấy từmột nguồn dữ liệu sử dụng thuộc tính DataSourceID củađiều khiển dữ liệu.

Làm quen với lập trình CSDL ASP.NET 22

Điều khiểnSQLDataSource

CSDL

Điều khiển dữ liệu(data control)

Liên kết qua thuộctính DataSourceID củađiều khiển dữ liệu

Page 23: Bài 5: Làm quen với lập trình CSDL ASP.NET - Giáo trình FPT - Có ví dụ kèm theo

Điều khiển dữ liệu (điều khiển drop-down list) liên kếtvới điều khiển SqlDatasoure

Ví dụ về buộc dữ liệu

<asp:DropDownList ID="ddlCategory" runat="server"DataSourceID="SqlDataSource1" DataTextField="LongName"DataValueField="CategoryID" AutoPostBack="True">

</asp:DropDownList>

Điều khiển SqlDatasoure

Làm quen với lập trình CSDL ASP.NET 23

<asp:SqlDataSource ID="SqlDataSource1" runat="server"ConnectionString="<%$

ConnectionStrings:HalloweenConnectionString %>"SelectCommand="SELECT [CategoryID], [LongName] FROM [Categories]

ORDER BY [LongName]"></asp:SqlDataSource>

Điều khiển SqlDatasoure

Page 24: Bài 5: Làm quen với lập trình CSDL ASP.NET - Giáo trình FPT - Có ví dụ kèm theo

Các thuộc tính của điều khiển SqlDataSource

Điều khiển SqlDataSource

Thuộc tính Phương thức

ID ID của điều khiển

RunAt Luôn được gán bằng Server

ConnectionString Chuỗi kết nối.

Làm quen với lập trình CSDL ASP.NET 24

ConnectionString Chuỗi kết nối.

SelectCommand Định nghĩa câu lệnh Select truy xuất dữ liệu đượcthực thi bởi datasource

UpdateCommand Định nghĩa câu lệnh Update

InsertCommand Định nghĩa câu lệnh Insert

Deletecommand Định nghĩa câu lệnh Delete

Page 25: Bài 5: Làm quen với lập trình CSDL ASP.NET - Giáo trình FPT - Có ví dụ kèm theo

Ứng dụng gồm:Drop-down list Chose a category

Hiển thị danh mục phân loại sảnphẩmDanh mục này lấy từ CSDLHalloween

Điều khiển DataListHiển thị danh sách sản phẩm củaphân loại sản phẩm được chọn

Hai điều khiển SqlDataSourceLấy dữ liệu từ CSDL và hiển thị lênDrop-down list và Data List

Giới thiệu ứng dụng Product List

Ứng dụng gồm:Drop-down list Chose a category

Hiển thị danh mục phân loại sảnphẩmDanh mục này lấy từ CSDLHalloween

Điều khiển DataListHiển thị danh sách sản phẩm củaphân loại sản phẩm được chọn

Hai điều khiển SqlDataSourceLấy dữ liệu từ CSDL và hiển thị lênDrop-down list và Data List

Làm quen với lập trình CSDL ASP.NET 25

Ứng dụng Product List ở chế độ Design

Page 26: Bài 5: Làm quen với lập trình CSDL ASP.NET - Giáo trình FPT - Có ví dụ kèm theo

CategoriesChứa phân loại danh mục sảnphẩm

ProductsChứa danh sách sản phẩm

CustomersChứa thông tin khách hàng

InvoicesLưu thông tin hóa đơn muahàng

LineItemsLưu thông tin danh sách cácitem của từng hóa đơn

CSDL Halloween của ứng dụng

CategoriesChứa phân loại danh mục sảnphẩm

ProductsChứa danh sách sản phẩm

CustomersChứa thông tin khách hàng

InvoicesLưu thông tin hóa đơn muahàng

LineItemsLưu thông tin danh sách cácitem của từng hóa đơn

Làm quen với lập trình CSDL ASP.NET 26

Page 27: Bài 5: Làm quen với lập trình CSDL ASP.NET - Giáo trình FPT - Có ví dụ kèm theo

Demo thêm và cấu hình điều khiển SqlDataSource chodrop-down list Chose a Category (hiển thị danh sáchdanh mục sản phẩm lưu trong bảng Categories)

1. Lấy dữ liệu lưu vào datasourceThêm điều khiển SqlDataSourceLưu chuỗi kết nối trong file web.ConfigCấu hình câu lệnh SELECT

2. Liên kết dropdown list với datasource

Nội dung demo

Demo thêm và cấu hình điều khiển SqlDataSource chodrop-down list Chose a Category (hiển thị danh sáchdanh mục sản phẩm lưu trong bảng Categories)

1. Lấy dữ liệu lưu vào datasourceThêm điều khiển SqlDataSourceLưu chuỗi kết nối trong file web.ConfigCấu hình câu lệnh SELECT

2. Liên kết dropdown list với datasource

Làm quen với lập trình CSDL ASP.NET 27

Page 28: Bài 5: Làm quen với lập trình CSDL ASP.NET - Giáo trình FPT - Có ví dụ kèm theo

Lấy dữ liệu lưu vào DataSource

Thêm điều khiển SqlDataSource

Làm quen với lập trình CSDL ASP.NET 28

Page 29: Bài 5: Làm quen với lập trình CSDL ASP.NET - Giáo trình FPT - Có ví dụ kèm theo

Hai cách lưu chuỗi kết nốiCố định mã trong ứng dụng

Khi CSDL thay đổi, phải sửa lại chuỗikết nối và biên dịch lại

Lưu trong file web.configKhi CSDL thay đổi, chỉ cần sửa lạichuỗi kết nối trong file web.config,không phải biên dịch lại

Luôn lưu chuỗi trong file Web.config

Lấy dữ liệu lưu vào DataSource

Lưu chuỗi kết nối trong file Web.configHai cách lưu chuỗi kết nối

Cố định mã trong ứng dụngKhi CSDL thay đổi, phải sửa lại chuỗikết nối và biên dịch lại

Lưu trong file web.configKhi CSDL thay đổi, chỉ cần sửa lạichuỗi kết nối trong file web.config,không phải biên dịch lại

Luôn lưu chuỗi trong file Web.config

Làm quen với lập trình CSDL ASP.NET 29

<connectionStrings><add name="HalloweenConnectionString"connectionString="Data Source=POLY_115_LINHKT;Initial Catalog=Halloween;Integrated Security=True"providerName="System.Data.SqlClient" />

</connectionStrings>

Chọn check box này. Chuỗikết nối sẽ tự động lưu trong

file Web.config

Page 30: Bài 5: Làm quen với lập trình CSDL ASP.NET - Giáo trình FPT - Có ví dụ kèm theo

Lấy dữ liệu lưu vào DataSource

-Chỉ định tênbảng- Chọn các cột lấydữ liệu

-Sử dụng các nút đểthêm các mệnh đềWHERE, ORDER BYcho câu lệnh SELECT

Cấu hình câu lệnh SELECT

Làm quen với lập trình CSDL ASP.NET 30

-Chỉ định tênbảng- Chọn các cột lấydữ liệu

-Sử dụng các nút đểthêm các mệnh đềWHERE, ORDER BYcho câu lệnh SELECT

-Câu lệnhSELECT được tạora

Page 31: Bài 5: Làm quen với lập trình CSDL ASP.NET - Giáo trình FPT - Có ví dụ kèm theo

Mã .aspx của điều khiển SqlDataSource tự sinh

Mã aspx củađiều khiển SqlDataSource

<asp:SqlDataSource ID="SqlDataSource1" runat="server"ConnectionString="<%$ConnectionStrings:HalloweenConnectionString %>"SelectCommand="SELECT [CategoryID], [LongName] FROM[Categories] ORDER BY [LongName]">

</asp:SqlDataSource>

Làm quen với lập trình CSDL ASP.NET 31

<asp:SqlDataSource ID="SqlDataSource1" runat="server"ConnectionString="<%$ConnectionStrings:HalloweenConnectionString %>"SelectCommand="SELECT [CategoryID], [LongName] FROM[Categories] ORDER BY [LongName]">

</asp:SqlDataSource>

Page 32: Bài 5: Làm quen với lập trình CSDL ASP.NET - Giáo trình FPT - Có ví dụ kèm theo

Các cách liên kết datasource với điều khiển listSửa trực tiếp các thuộc tính buộc dữ liệu trong chế độSourceSử dụng cửa sổ Properties của điều khiển để sửa cácthuộc tính buộc dữ liệuSử dụng Data Source Configuration Winzard

Liên kếtdatasource với điều khiển list

Các cách liên kết datasource với điều khiển listSửa trực tiếp các thuộc tính buộc dữ liệu trong chế độSourceSử dụng cửa sổ Properties của điều khiển để sửa cácthuộc tính buộc dữ liệuSử dụng Data Source Configuration Winzard

Làm quen với lập trình CSDL ASP.NET 32

- Click vào đây để mở menu smart tag- Chọn Chose Data Source để mở DataSource Configuration Winzard

Page 33: Bài 5: Làm quen với lập trình CSDL ASP.NET - Giáo trình FPT - Có ví dụ kèm theo

Các thuộc tính sử dụng để liên kết dữ liệu

Ví dụ đoạn mã aspx của điều khiển drop-down list liênkết tới datasource

Liên kếtdatasource với điều khiển list

Thuộc tính Mô tả

DataSourceID ID của datasource

DataTextField Tên trường dữ liệu của data source hiển thị trên danhsách

DataValueField Giá trị trả về khi trường dữ liệu tương ứng(DataTextField) được chọn

Các thuộc tính sử dụng để liên kết dữ liệu

Ví dụ đoạn mã aspx của điều khiển drop-down list liênkết tới datasource

Làm quen với lập trình CSDL ASP.NET 33

<asp:DropDownList ID="ddlCategory"runat="server"DataSourceID="SqlDataSource1"DataTextField="LongName"DataValueField="CategoryID"AutoPostBack="True">

</asp:DropDownList>

Giá trị hiển thị trên List Costumes tươngứng với trường LongName của nguồn dữliệuGiá trị trả về khi Cosumes được chọn làCategoryID tương ứng với LongName làCostumes

Page 34: Bài 5: Làm quen với lập trình CSDL ASP.NET - Giáo trình FPT - Có ví dụ kèm theo

Làm quen với lập trình CSDL ASP.NET 34

Page 35: Bài 5: Làm quen với lập trình CSDL ASP.NET - Giáo trình FPT - Có ví dụ kèm theo

Là điều khiển hỗ trợbuộc dữ liệu thuộc nhómData trên ToolboxDùng để trình bày dữliệu được truy xuất từmột datasource dướidạng danh sáchHỗ trợ thao tác truyxuất, cập nhật, thêm,xóa CSDLĐể định nghĩa các thôngtin hiển thị trên mộtdatalist, ta tạo ra cácTemplate cho datalist.

Điều khiển DataList

HeaderTemplateLà điều khiển hỗ trợbuộc dữ liệu thuộc nhómData trên ToolboxDùng để trình bày dữliệu được truy xuất từmột datasource dướidạng danh sáchHỗ trợ thao tác truyxuất, cập nhật, thêm,xóa CSDLĐể định nghĩa các thôngtin hiển thị trên mộtdatalist, ta tạo ra cácTemplate cho datalist.

Làm quen với lập trình CSDL ASP.NET 35

Một ví dụ về DataListDữ liệu được hiển thị dưới dạng bảng

ItemTemplate

Page 36: Bài 5: Làm quen với lập trình CSDL ASP.NET - Giáo trình FPT - Có ví dụ kèm theo

Các loại template của điều khiển DataList

Bạn có thể tạo nhiều template cho một DataList. HaiTemplate thường sử dụng là HeaderTemplate vàItemTemplate.Visual Studio cung cấp giao diện thiết kế để định nghĩagiao diện cho các Template.

Template

Template Mô tả

HeaderTemplate Hiển thị tiêu đề cho datalist trước phần tử đầutiên của datasource

FooterTemplate Hiển thị sau phần tử cuối cùng của datasource

ItemTemplate Hiển thị các phần tử của datasource

AlternatingItemTemplate Hiển thị cho các phần tử luân phiên

Các loại template của điều khiển DataList

Bạn có thể tạo nhiều template cho một DataList. HaiTemplate thường sử dụng là HeaderTemplate vàItemTemplate.Visual Studio cung cấp giao diện thiết kế để định nghĩagiao diện cho các Template.

Làm quen với lập trình CSDL ASP.NET 36

AlternatingItemTemplate Hiển thị cho các phần tử luân phiên

SeparatorTemplate Hiển thị gữa các phần tử

Page 37: Bài 5: Làm quen với lập trình CSDL ASP.NET - Giáo trình FPT - Có ví dụ kèm theo

Cung cấp các chức năng để làm việc với DataList sửdụng giao diện thiết kế đồ họa.Các chức năng quan trọng

Chose Data Source: Cấu hình datasource hoặc tạo mộtdatasource mới cho DataListConfigure Data Source: Cấu hình/Sửa cấu hình DataSource(cấu hình câu lệnh Select, Update…)Refresh schema: Làm mới schema CSDL. Sử dụng nếuSchema không hiển thịEdit Templates: Tạo và sửa Template cho DataList

Smart Tag MenuCung cấp các chức năng để làm việc với DataList sửdụng giao diện thiết kế đồ họa.Các chức năng quan trọng

Chose Data Source: Cấu hình datasource hoặc tạo mộtdatasource mới cho DataListConfigure Data Source: Cấu hình/Sửa cấu hình DataSource(cấu hình câu lệnh Select, Update…)Refresh schema: Làm mới schema CSDL. Sử dụng nếuSchema không hiển thịEdit Templates: Tạo và sửa Template cho DataList

Làm quen với lập trình CSDL ASP.NET 37

Page 38: Bài 5: Làm quen với lập trình CSDL ASP.NET - Giáo trình FPT - Có ví dụ kèm theo

Các bước làm việc với DataListThêm điều khiển DataList vào WebFormTạo và cấu hình DataSource cho DataListThêm định nghĩa các Template cho DataListBuộc dữ liệu cho các điều khiển trên các Template

Làm việc với DataList

Các bước làm việc với DataListThêm điều khiển DataList vào WebFormTạo và cấu hình DataSource cho DataListThêm định nghĩa các Template cho DataListBuộc dữ liệu cho các điều khiển trên các Template

Làm quen với lập trình CSDL ASP.NET 38

Page 39: Bài 5: Làm quen với lập trình CSDL ASP.NET - Giáo trình FPT - Có ví dụ kèm theo

Thêm điều khiển DataList cho ứng dụngProductList. DataList này hiển thị danhsách sản phẩm của danh mục sản phẩmđược chọn.Nội dung demo

Thêm điều khiển DataListCấu hình DataSource cho DataList

Cấu hình câu lệnh SELECT có chứa thamsố

Định nghĩa Template cho DataListBuộc dữ liệu cho các điều khiển trênItemTemplate

DemoSử dụng DataList

Thêm điều khiển DataList cho ứng dụngProductList. DataList này hiển thị danhsách sản phẩm của danh mục sản phẩmđược chọn.Nội dung demo

Thêm điều khiển DataListCấu hình DataSource cho DataList

Cấu hình câu lệnh SELECT có chứa thamsố

Định nghĩa Template cho DataListBuộc dữ liệu cho các điều khiển trênItemTemplate

Làm quen với lập trình CSDL ASP.NET 39

Page 40: Bài 5: Làm quen với lập trình CSDL ASP.NET - Giáo trình FPT - Có ví dụ kèm theo

DemoCấu hình DataSource cho DataList

Câu lệnh SELECT chứa tham số

Làm quen với lập trình CSDL ASP.NET 40

Kiểu phần tử địnhnghĩa tham số cho câulệnh SELECT

Page 41: Bài 5: Làm quen với lập trình CSDL ASP.NET - Giáo trình FPT - Có ví dụ kèm theo

Mã aspx của điều khiển SqlDataSource với câu lệnhSELECT chứa tham số

DemoCấu hình DataSource cho DataList

<asp:SqlDataSource ID="SqlDataSource2" runat="server"ConnectionString="<%$ ConnectionStrings:HalloweenConnectionString%>"SelectCommand="SELECT [ProductID], [Name], [UnitPrice], [OnHand]

FROM [Products]WHERE ([CategoryID] = @CategoryID)ORDER BY [ProductID]">

<SelectParameters><asp:ControlParameter ControlID="ddlCategory"

Name="CategoryID"PropertyName="SelectedValue" Type="String" />

</SelectParameters></asp:SqlDataSource>

Làm quen với lập trình CSDL ASP.NET 41

<asp:SqlDataSource ID="SqlDataSource2" runat="server"ConnectionString="<%$ ConnectionStrings:HalloweenConnectionString%>"SelectCommand="SELECT [ProductID], [Name], [UnitPrice], [OnHand]

FROM [Products]WHERE ([CategoryID] = @CategoryID)ORDER BY [ProductID]">

<SelectParameters><asp:ControlParameter ControlID="ddlCategory"

Name="CategoryID"PropertyName="SelectedValue" Type="String" />

</SelectParameters></asp:SqlDataSource>

Sinh viên tham khảo thêm các phần tử sử dụng để định nghĩa thamsố cho câu lệnh SELECT trong SGK

Page 42: Bài 5: Làm quen với lập trình CSDL ASP.NET - Giáo trình FPT - Có ví dụ kèm theo

Nội dung demo:Định nghĩa HeaderTemplatecho DataListĐịnh nghĩa ItemTemplate choDataListĐịnh dạng hiển thị choDataList

DemoĐịnh nghĩa các template cho DataList

Nội dung demo:Định nghĩa HeaderTemplatecho DataListĐịnh nghĩa ItemTemplate choDataListĐịnh dạng hiển thị choDataList

Làm quen với lập trình CSDL ASP.NET 42

Chọn Edit Templates trong menu smarttag của điều khiển DataList để địnhnghĩa các template

1. Chọn loại Template cần định nghĩa.

2. Thêm các thành phần cho TemplateCó thể thêm:Bảng, text, label, các điều khiển vàotemplate

Page 43: Bài 5: Làm quen với lập trình CSDL ASP.NET - Giáo trình FPT - Có ví dụ kèm theo

Đoạn mã aspx được tạo ra

DemoĐịnh nghĩa các template cho DataList

<asp:DataList ID="dlProducts" runat="server" DataKeyField="ProductID"DataSourceID="SqlDataSource2" CellPadding="3" GridLines="Vertical"><HeaderTemplate>

<table><tr>

<td class="col1">ID</td><td class="col2">Product</td><td class="col3">Unit Price</td><td class="col4">On Hand</td>

</tr></table>

</HeaderTemplate><%-- đoạn mã định nghĩa các template khác được viết ở dây--%>

<HeaderStyle BackColor="Black" Font-Bold="True" ForeColor="White" /></asp:DataList>

Làm quen với lập trình CSDL ASP.NET 43

<asp:DataList ID="dlProducts" runat="server" DataKeyField="ProductID"DataSourceID="SqlDataSource2" CellPadding="3" GridLines="Vertical"><HeaderTemplate>

<table><tr>

<td class="col1">ID</td><td class="col2">Product</td><td class="col3">Unit Price</td><td class="col4">On Hand</td>

</tr></table>

</HeaderTemplate><%-- đoạn mã định nghĩa các template khác được viết ở dây--%>

<HeaderStyle BackColor="Black" Font-Bold="True" ForeColor="White" /></asp:DataList>

Page 44: Bài 5: Làm quen với lập trình CSDL ASP.NET - Giáo trình FPT - Có ví dụ kèm theo

Các template hỗ trợ buộc dữ liệuItemTemplateAlternatingItemTemplate

DemoBuộc dữ liệu

cho các điều khiển trong template

Làm quen với lập trình CSDL ASP.NET 44

Hai phương thức sử dụng cho biểu thức mã:- Eval <%# Eval("UnitPrice", "{0:C}") %>Chỉ dùng để hiển thị dữ liệu- Bind <%# Bind("UnitPrice", "{0:C}") %>Dùng để hiển thị dữ liệu và cập nhật dữ liệu từnguồn dữ liệu

Page 45: Bài 5: Làm quen với lập trình CSDL ASP.NET - Giáo trình FPT - Có ví dụ kèm theo

Sinh viên tìm hiểu các vấn đề sau:Tạo một datasource có thể cậpnhật CSDLSử dụng bộ đệm dữ liệu

Sinh viên tìm hiểu các vấn đề sau:Tạo một datasource có thể cậpnhật CSDLSử dụng bộ đệm dữ liệu

Làm quen với lập trình CSDL ASP.NET 45

Page 46: Bài 5: Làm quen với lập trình CSDL ASP.NET - Giáo trình FPT - Có ví dụ kèm theo

ADO.NETỨng dụng ASP.NET sử dụng ADO.NET để thao tác vớiCSDLADO.NET là một phần của .NET Framework, được xem là“bộ thư viện lớp” chịu trách nhiệm xử lý dữ liệu trong ngônngữ MS .NET.Các thành phần cơ bản của ADO.NET

.NET data provider: cung cấp các lớp để tương tác với CSDLDataset: Là bản sao của CSDL hay một phần CSDL trên bộnhớ

Kết nối giữa ứng dụng và cở sở dữ liệu (CSDL) thông quaADO.NET theo hai kiến trúc

Kiến trúc kết nốiKiến trúc không kết nối

Tổng kết

ADO.NETỨng dụng ASP.NET sử dụng ADO.NET để thao tác vớiCSDLADO.NET là một phần của .NET Framework, được xem là“bộ thư viện lớp” chịu trách nhiệm xử lý dữ liệu trong ngônngữ MS .NET.Các thành phần cơ bản của ADO.NET

.NET data provider: cung cấp các lớp để tương tác với CSDLDataset: Là bản sao của CSDL hay một phần CSDL trên bộnhớ

Kết nối giữa ứng dụng và cở sở dữ liệu (CSDL) thông quaADO.NET theo hai kiến trúc

Kiến trúc kết nốiKiến trúc không kết nối

Làm quen với lập trình CSDL ASP.NET 46

Page 47: Bài 5: Làm quen với lập trình CSDL ASP.NET - Giáo trình FPT - Có ví dụ kèm theo

Điều khiển data sourceĐiều khiển data source quản lý các tác vụ kết nối đếnCSDL, đọc và ghi dữ liệu.Bản chất của việc sử dụng điều khiển datasource cũng làtruy cập qua các đối tượng ADO.NET, nhưng sử dụng ítcode hơn ADO.NETĐiều khiển datasource được buộc vào một điều khiển dữliệu để hiển thị dữ liệu cho người dùng.Hai loại điều khiển datasource thường dùng

SQL DataSourceObjectDataSource (Hỗ trợ kiến trúc ba tầng)

Tổng kết

Điều khiển data sourceĐiều khiển data source quản lý các tác vụ kết nối đếnCSDL, đọc và ghi dữ liệu.Bản chất của việc sử dụng điều khiển datasource cũng làtruy cập qua các đối tượng ADO.NET, nhưng sử dụng ítcode hơn ADO.NETĐiều khiển datasource được buộc vào một điều khiển dữliệu để hiển thị dữ liệu cho người dùng.Hai loại điều khiển datasource thường dùng

SQL DataSourceObjectDataSource (Hỗ trợ kiến trúc ba tầng)

Làm quen với lập trình CSDL ASP.NET 47

Page 48: Bài 5: Làm quen với lập trình CSDL ASP.NET - Giáo trình FPT - Có ví dụ kèm theo

Điều khiển DataListDùng để trình bày dữ liệu được truy xuất từ mộtdatasource dưới dạng danh sáchHỗ trợ thao tác truy xuất, cập nhật, thêm, xóa CSDLĐể định nghĩa các thông tin hiển thị trên một datalist, tatạo ra các Template cho datalist.

Tổng kết

Điều khiển DataListDùng để trình bày dữ liệu được truy xuất từ mộtdatasource dưới dạng danh sáchHỗ trợ thao tác truy xuất, cập nhật, thêm, xóa CSDLĐể định nghĩa các thông tin hiển thị trên một datalist, tatạo ra các Template cho datalist.

Làm quen với lập trình CSDL ASP.NET 48