Ngôn ngữ ASP.NET - SQL Data Source
Đối tượng dữ liệu SqlDataSource
Điều khiển SqlDataSource dung để kết nối CSDL nếu dữ liệu của ứng dụng được lưu trữ trong các hệ quản trị CSDL như: SQLServer, Ocracle Server, . . .
SQLDataSource tự động phát sinh các lệnh : Insert, Update, Delete, Select và lọc dữ liệu, sắp xếp, phân trang ,…
Chọn đối tượng CSDL như Table, View hay câu lệnh truy vấn SQL và có thể khai báo điều kiện lọc dữ liệu (Where) với nhiều cách như: giá trị định sẳn, đối tượng Session, Request.form, Request.QueryString . . .
1. Kết nối và trình bày CSDL
a. Tạo kết nối
Tạo trang aspx và kéo điều khiển SQLDataSource từ ngăn data trên thanh Toolbox
Chọn tiếp vào Conigure Data Source
Nếu trước đó đã có tạo kết nối CSDL thì chọn vào Combobox để chọn CSDL đã kết nối. Để tạo mới kết nối CSDL thì chọn New Connection
Khai báo các thông số cho SQLServer và chọn CSDL cần kết nối
Chọn Ok -> Chọn Next
Xác định nguồn dữ liệu từ Table, Query hay câu lệnh truy vấn có thể chỉ định điều kiện lọc dữ liệu và sắp xếp.
Chỉ định các cột dữ liệu
Khai báo điều kiện mệnh đề Where (Nếu có)
Khai báo sắp xếp (Nếu cần)
Chọn Test Query để kiểm tra kết quả nguồn dữ liệu. -> Chọn Finish để hòan thành
Phần mã của giao tiếp này có được như sau:
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ConnectionStrings:QLBansachConnectionString %>"
SelectCommand="SELECT [MaTG], [TenTG], [DiachiTG], [DienthoaiTG] FROM [TACGIA] ORDER BY [TenTG]">
</asp:SqlDataSource>
b. Trình bày dữ liệu lên trang
Để trình bày dữ liệu trên Webform sau khi thực hiện kết nối CSDL ta sẽ sử dụng trình điều khiển lưới Gridview.
Tạo Gridview vào trang từ ngăn Data trên Thanh Toolbox
Chọn Choose DataSource là: SqldataSource1 đã tạo
Chọn mẫu định dạng lưới: Auto Format
Để tạo phân trang dữ liệu: Đánh dấu chọn : Enable Paging
Để cho phép sắp xếp khi click vào tiếu đề cột đánh dấu chọn: Enable Sorting
Thi hành trang ListAuthors.aspx:
2. Điều khiển SQL Data Source và tham số.
a. Điều khiển SQL DataSource và Request.QueryString
Để lọc dữ liệu trong nguồn dữ liệu theo điều kiện thì giá trị tham số có thể được gán trực tiếp thông qua đối tượng Request.Querystring (Truyền tham số qua liên kết trang.)
Tạo trang cho phép truyền tham số qua liên kết.
Để lọc dữ liệu trong nguồn dữ liệu theo điều kiện thì giá trị tham số có thể được gán trực tiếp thông qua đối tượng Request.Querystring (Truyền tham số qua liên kết trang.)
Tạo trang cho phép truyền tham số qua liên kết.
Khi click vào liên kết trang liên kết có địa chỉ kèm theo tham số dạng như sau:
http://localhost:49222/KetnoiCSDL/SachNXB.aspx?MaNXB=2
Thực hiện: Tạo trang Publisher.aspx với nguồn dữ liệu là tòan bộ danh mục nhà xúât bản được trình bày trên lưới GridView như sau
Điều chỉnh bổ sung và lưới 1 cột liên kết
Chọn Edit Column từ GridView Task
Thực hiện bổ sung 1 cột dạng HyperLinkField
Với các thuộc tính:
- HeaderText: Nhãn tiêu đề cột
- Text: Nhãn hiện thị trong cột (Giống nhau trên tất cả các ô) Hoặc
- DatTextField: Dùng giá trị từ 1 field chỉ định trong nguồn dữ liệu
- DataNavigateUrlFields: Danh mục tên các tham số ghi cách nhau bởi dấu ,
- DataNavigateUrlFormatting: Địa chỉ trang liên kết kèm tham số dạng ~/SachNXB.aspx?MaNXB={0}
Trong đó giá trị tham số ghi dưới dạng chỉ số các tham số được khai báo trong thuộc tính DataNavigateUrlFields bắt đầu là 0 và cách nhau là dấu phẩy.
Thi hành:
Tạo trang hiện thị dữ liệu với nguồn dữ liệu có tham số qua liên kết (Request.QueryString).
Chỉ định nguồn dữ liệu
Khai báo điều kiện (Where) với tham số là QueryString. Đặt tên QueryString Field là: MaNXB -> Add
Thi hành Publisher.aspx
Click vào liên kết Xem sách của 1 nhà xuất bản (VD: Với MaNXB là 2) -> Các sách của Nhà xuất bản tương ứng sẽ được trình bày
b. Điều khiển SQL DataSource và Request.Form
Để lọc dữ liệu trong nguồn dữ liệu theo điều kiện thì giá trị tham số là giá trị trên form.
Yêu cầu :
Nhập MaNXB vào TextBox Click nút Xem kết quả hiện thị tất cả danh mục các quyển sách có MaNXB là giá trị được nhập vào TextBox MaNXB
Hướng dẫn:
Tạo trang Lietkesach.aspx gồm:
- 1 Control Textbox chỉ định thuộc tính ID: MaNXB
- 1 Button chỉ định thuộc tính PostbackURL: ~/LietkeSach.aspx
- Tạo SqlDataSource với nguồn dữ liệu từ Table Sach với điều kiện cho nguồn dữ liệu là : MaNXB bằng Với giá trị điều kiện Form field là: MaNXB (tên Textbox trên trang) -> Add
c.Điều khiển SQL DataSource và điều khiển WebServer
Ta có thể khai báo tham số trong điều khiển SqlDataSource mà giá trị được lấy từ điều khiển trình chủ
Vì dụ : thiết kế trang Chudesach.aspx thực hiện liệt kê danh mục sách có chủ đề được chọn từ điều khiển trình chủ DropdownList.
Thiết kế Dropdownlist (ddlChude) với nguồn dữ liệu cho từ Table Chude
Tạo SQL DataSource (SqlDataSource1) cho DropDownList Với nguồn dữ liệu cho DropDownList là Table Chude:
Tạo DropDownList vào trang đặt thuộc tính
- ID: ddlChude
- DataSourceID: SqlDataSource1
- DataTextField: TenCD (Field hiện thị)
- AutoPostBack: True
- DataValuefield: MaCD (Field giá trị để truyền tham số)
Tạo GridView (GridView1) Với nguồn dữ liệu từ Table Sach Và tham số điều kiện (Where)
Thực thi trang web : Chọn 1 chủ đề sách từ DropdownList thì các sách tương ứng của chủ đề sẽ hiển thị.
e. Điều khiển SQL DataSource và thủ tục nội tại (Stored Procedure)
Tương tự như trường hợp kết nối CSDL bằng phát biểu SQL ta có thể sử dụng điều khiển kết nối CSDL SqlDatasource để truy cập CSDL SQL Server bằng thủ tục nội tại (Stored Procedure)
Ví dụ trong CSDL SQLServer QLBanSach ta tạo 1 thủ tục (Stored Procedure) Sachtheogia cho phép liệt kê các quyển sách với 2 tham số cho Procedure là Giatu và Giaden.
Create PROC Sachtheogia(@Giatu int, @Giaden Int)
as
Select Masach, Tensach, Dongia, Mota, Tenchude, TenNXB,Ngaycapnhat
From sach s, Chude c, nhaxuatban n
Where c.MaCD=s.MaCD and n.MaNXB=s.MaNXB and Dongia Between @Giatu and @Giaden
Ta chọn : Specify a Custom SQL satament or stored procedure
Tiếp tục chọn Stored Procedure cần kết nối
Xác định giá trị cho tham số của Procedure có thể là: Giá trị trực tiếp, QueryString, Form, hay control (Ví dụ sử dụng điều khiển trình chủ cboFrom, cboTo tương ứng 2 tham số Giatu và Giaden)
Thực thi trang web: Hãy Click chọn Giá từ cboForm và Giá đến cboTo (chọn thuộc tính AutoPostBack= true cho cboTo) thì các sách thỏa điều kiện giá sẽ hiện thị tương ứng vào GridView