ĐẠI HỌC NHA TRANG M 005.133 Ph 104 Kh u Khang (Chú biên) Giới thiệu A Lớp tương tác Lý thuyết dễ Ví dụ phong phú @ Ứng dụng tuyển
ˆ THU VIEN DH NHA TRANG _`
IA | Chie mime ie thu uién cia ching tae
Trang 2tram Phạm Hữu Khang (Chủ biên)
C# 2005
Tap 5: Lap trinh ASP.Net 2.0 Quyén 4:
am?
DOI TUGNG ADO.NET 2.0 VA XML
Trang 3
GIỚI THIẾU
Tiếp theo quyến 3 của tập 5, quyển 4 của tập 5 cung cấp cho bạn những kiến thức từ cơ bản đến nâng cao liên quan đến cách xây dựng ứng
dụng ASP.NET 2.0 với cơ sở dữ liệu SQL Server Bên cạnh những kiến thức
cơ bản của ADO.NET 2.0, chúng tôi giới thiệu đến bạn đọc cách đọc dữ liệu từ đối tượng Cache để tránh kết nối cơ sở đữ liệu nhiều lần, ASP.NET 2.0
va XML
Ngồi ra, bạn cũng tìm hiểu cách khai báo lớp dùng chung để tương tác với cơ sở dữ liệu SQL Server, lớp trình bày đữ liệu trên các điều khiển ASP.NET thường sử dụng và cách khai báo sứ dụng User Control cùng với MasterPage
Giáo trình bao gồm 6 chương và phần diễn giải ứng dụng Tuyển dụng đính kèm, xuyên suốt từ giới thiệu cấu trúc ứng dụng, chức năng tìm kiếm, liệt kê, xem thông tin chỉ tiết của tỉn tuyển dụng, nộp đơn trực tuyến, lưu tin tuyển dụng, lưu tiêu chí tìm kiếm, chức năng đăng nhập và đăng tin của nhà tuyển dụng cùng với phương thức xây dựng giỏ hàng
Song song với ví dụ trình bày chỉ tiết ứng với từng phần lý thuyết, chúng tôi giới thiệu đến bạn đọc từng phần của ứng dụng thương mại điện tử trong kinh doanh địch vụ tuyển dụng trên nền ASP.NE2 2.0 bằng ngơn ngữ lập trình C# 2005 với cơ sở dữ liệu SQL Server 2000/2005
Trang 4
HƯỚNG DẪN SỬ DỤNG VÍ DỤ ĐÍNH KÈM THEO SACH
Để sử dụng các ví dụ đính kèm theo sách, trước tiên bạn giải nén các
thư mục tương ứng với từng chương nếu chúng tổ chức dưới dạng tập tin zip, trong mỗi chương có nhiễu Solution ứng với từng thư mục Để mở từng Web
Site trong từng thư mục bạn có thể chọn một trong 3 cách sau: * Chọn tên tập tin sÌn trong thy mye Projects va Double-Click
« Chon tén tap tin sln réi R-Click | Open With | Visual Studio 2005
* Chon Start | All Programs | Microsoft Visual Studio 2005 | Microsoft Visual Studio 20051 File | Open | Web Site! chon tén thu mue
Bạn có thể kiểm tra đường dẫn của thư mục Web Site mà Solution
quản lý bằng cách mở tập tin sln và thay đổi PhysicalPath va Project Để sử dụng cơ sở đữ liệu cho ví dụ và ứng dụng đính kèm, bạn có thể phục hồi cơ sở dữ liệu từ tập tin backup bang chic năng Restore hoặc sử
dụng tiện ích Attach để thêm cơ sở dữ liệu vào SQL Server
Với những ví dụ có liên quan đến cơ sở dữ liệu bạn cân xem lại các
thuộc tính của chuỗi kết nối cho phù hợp với một trong hai đặc quyển kết
nối cơ sở dữ liệu là theo hệ điều hành Windows hay SQL Server 2005 Ví dụ đính kèm theo sách được tổ chức theo tig Solution, bao gdm nhiều thư mục tương ứng, sau khi mở Solution trong Visual Studio 2005,
bạn có thể chọn từng thư mục để thực thi Để có trang mặc định bạn có thể
chon trang ASP.NET 3.0 rồi R-Click | Set As Start Page
Ung dụng đính kèm theo đĩa sẽ được hoàn thiện thành ứng dụng thương mại điện tử có thể sử dụng trong thực tế cho doanh nghiệp kinh doanh địch vụ tuyển dụng hay một phần trong hoạt động kinh doanh của
công ty, Ứng dụng sẽ được phát triển qua từng quyển cho phù hợp với các kỹ thuật đã trình bày, bạn có thể tiếp tục điều chỉnh một vài chức năng khác
Trang 5
THƯ NGỎ
Kính thưa quý Bạn đọc gần xa!
Trước hết, Ban xuất bản xin bày tỏ lòng biết ơn và niềm vinh hạnh được đông đảo Bạn đọc nhiệt tình ủng hộ tủ sách MK.PUB
“Trong thời gian qua chúng tôi rất vui và cảm ơn các Bạn đã gửi e-mail đóng góp nhiều ý kiến quý báu cho tủ sách
Mục tiêu và phương châm phục vụ của chúng tơi là: « Lao déng khoa học nghiêm túc
» Chất lượng uà ngày càng chất lượng hơn, © Tat cd vi Ban doc
Một lần nữa, Ban xuất bản MK,PUB xin kính mời quý Bạn doc tiếp tục tham gia cùng chúng tôi để nâng cao chất lượng sách Cụ thể:
Trong quá trình sử dụng sách, nếu quý Bạn phát hiện thấy bất kỳ sai sót nào (đị nhỏ) xin đánh dấu, ghi chú nhận xét ý kiến của Bạn ra bên cạnh rỗi gửi cuốn sách này cho chúng tôi theo địa chỉ:
Nhà sách Minh Khai
249 Nguyễn Thị Minh Khai, Q.1, Tp Hồ Chi Minh
E-mail: mk.book@minhkhai.com.un hoac mk.pub@minhkhai.com.vn Chúng tơi xin hồn lại cước phí bưu điện và gửi trả lại Bạn cuốn sách cùng tên Ngoài ra chúng tơi cịn gửi tặng Bạn một cuốn sách khác trong tủ sách MK.PUB Bạn có thể chọn cuốn sách này theo danh mục thích hợp sẽ gửi tới Bạn
Với mục đích ngày càng nâng cao chất lượng tủ sách MK.PUB, chúng tôi rất mong nhận được sự hợp tác nhiệt tình của quý Bạn đọc gần xa
“IK.PUB cùng Bạn đọc đồng hành” để nâng cao chất lượng sách Một lần nữa chúng tôi xin chân thành cảm ơn
Trang 6
MỤC LỤC
U21) 2ã." 4ã 8
'THƯ NGỎ e- — ,ÔỎ 5
MỤC LỤC nSsHsee HHerrisseed — 7
Chương 17: GIỚI THIỆU ADO.NET 3.0 TRONG ASP.NET 2.0 11 1, Đối tượng SQLConnection 002 2t 22t 12 2 ren ray 13 1.1 Đăng nhập bằng Windows Authentication occccccccscccsesceesees 14 1.2 Đăng nhập bằng SQL Seruer AuthenticafiGP co 18
1.8 Đọc chuỗi kết HỔI vác chay 20
9 Đối tượng SQLCommand
2.1, Phương thúc ExecuteNonQuery,
Trang 7
8 Lớp dùng để truy vấn dữ liệu cv chen 74 3.1 Sử dụng đối tượng DataSet uà DatuTqbÌe is 75 3.2, SU dung déi tuong Object, ArrayList vd String rece 77 4 Lớp trình bày đữ liệu trên điều khiển theo 80
4.1 Điều khiển DropDownList 4.3 Điều khiển ListBoa
4.3 Điều khiển CheckoxElSỈ .c HH nhang ye 91 4.4 Điêu khiển RadioBuilonLiSE à che 95 4.6 Điều khiển TreeViG1U cớ 98 4.6 Điều khiển Grid ViI0 "HH Hà hê, 101 4.7 Điều khiển DetailsViM cu che rưệ, 102 4.8 Điêu khiển FormViGiU à cv nhe 104
4.0 Điều khiển DataList cscs eng 105
4.10 Điều khiển Ï@DeEQEGT uc 221 2 cecrse 106 4.11, Điêu khiển BulletedLlSE nhu 108 4.19 Điêu khiển AdRotator
4.18 Điều khiển Menu
Chương 19: LÀM VIỆC VỚI ĐIỀU KHIỂN TRÌNH CHỦ
1 Điều khiến DropDownList, ListBox .1138
11 Diéu khién DropDownList 113
1.8 Điều khiển Listox H1 n2 re 117
2 Điều khiển CheckBoxList, RadioButton Lisi .cicc 120
3.1 Điều khiển CheckBoxLilsf, LH seo 120 2,3 Điều khiển HadioButtonLlSE neo 124 8 Điều khiến GridView, DetailsView, FormView nho 127
Trang 8
3.3 Điều khiển FormVi6iU chao 132
4 Điều khiển DataList, Repeater .-.ciiienerrerinriee 134
4.1, Điều khiến DatQLiSE vụ Ăn Hưng khe 134
49 Điêu khiển ReDeQlGT cong ree 137
5 Điều khiển Menu, TreeView va ListView 6.1 Điều khiển Menu
5.2 Diéu khién TreeView
6 Điều khiển BulietedList, AdRotator -ccccccenerrrorrrree 144
6.1 Điều khiển BulletedLlF cccocccehehHheeeiderre 144 6.9 Điều khiển AdNOIGÍOT ào HH tre 146
Chương 20: LAM VIEC VOI XML
1 Đối tượng XmlText Writer, XmlTextReader eee eee eee 151 Li, Ghi da lidu ra tp tin XML vce eenrs cree eeneneenenees 153
9 Đối tượng XmlWriter, XmiReader cece eee ete 161
3.1 Ghi dữ liệu ra tập tìn KML vcoscsscssssscsssssnnennsineeseneceiestes 161
3 Đối tượng XmlDocument
3.1 Tạo uà ghỉ dữ liệu ra tập tin XML sree ete 169
BQ cối nan 175
3.3 Thêm, cập nhật vd xda did lidu XML 179 8.4 Tìm kiếm trên dữ liệu XML erences enacts 198 4 XML và đối tượng ADO.NET 2.0 cecerrrrrrrrrrrrrrre 196
Chương 21: CHỨC NĂNG GIỎ HÀNG VÀ ĐƠN ĐẶT HÀNG 201
1 Tìm kiếm và liệt kê sản phẩm .ceeennrrierererrrrrrrree 201
92 Thêm sản phẩm vào giỏ hàng cnhheenrerreniee 218
3 Trình bày sản phẩm trong giỏ hàng ecrieerereenrrre 992
Trang 9
Chương 22: USER CONTROL, VÀ MASTERPAGE 241 1 Tìm hiểu User Control
2 Trang MasterPage
2 Nộp đơn xin việc trực tuyến
3, Lưu các lựa chọn
4 Thông tin của tài khoản so nu n1 Hee 303
—= 308
4.2 Tin tuyển dụng đã HH và 2 san seseee 309
43 Tiêu chí lìm kiếm đã HÁN cu 2n are 314
Trang 10
Chương 17:
GIỚI THIỆU ADO.NET 2.0 TRONG ASP.NET 2.0
Tóm tắt chương 17
Trong tập 4 quyển 2, bạn đã tìm hiểu về các đối tượng
ADO.NET 2.0 nhu: SqlConnection, SqlCommand, SqlDataReader,
SqlDataAdapter va DataSet
Ngoài ra, bạn cũng đã tham khảo cách sử dụng các loại Data Souree như: SalDataSouree, AccessDataSource, XmlDataSource và
ObjectDataSource với các điều khiển trình chủ dang danh sách như:
GridView, DetailsView, DataList, Repeater, FormView, TreeView, Menu, AdRotator, DropDownList, ListBox, CheckBoxList va RadioButtonList trong quyén 3
Trong chương này, bạn tiếp tục tìm hiểu chỉ tiết cách sử dụng thuộc tính, biến cố, phương thức của đối tượng ADO.NET 2.0 trong
ASP.NET 2.0 nhu: SqlConnection, SqlCommand, SqlDataReader, SqlDataAdapter, DataSet, DataTable va DataView
Ngoài ra, chúng ta cũng tìm hiểu cách sử dụng đối tượng
Cache để nắm giữ dữ liệu thay vì đọc lại cơ sở dữ liệu nhiều lần
Các vấn đề chính sẽ được đề cập: Đối tượng SqlConnection
Đối tượng SqlCommand Đối tượng SqlDataReader Đối tượng SqÌDataAdapter
Đối tượng DataSet, DataTable, DataView
QS
NN
NOK
Sử dụng đối tượng Cache
Trang 11
1 DOI TUGNG SQLCONNECTION
Tiếp tục trong tập 4 “C# 2005 - Liập trình cơ sở dữ liệu” đã phát hành, chúng tôi tiếp tục giới thiệu cách sứ dụng các đối tượng ADO,NET 3.0 trong ứng dung ASP.NET 2.0,
Nếu như làm việc với ứng dụng Windows Forms thi ban cé thé mé mỗi kết nối cho mỗi người sử dụng khi đăng nhập vào hệ thống ứng dụng
với các lý do chính như sau:
® - Số người sử dụng thường khơng lớn « Ung dung trién khai trong mạng cục bộ © Q trình truy cập và xử lý dữ liệu liên tục
» _ Cải thiện tính thực thi đữ liệu đo hạn chế số lần mở và đóng kết
nối cơ sở đữ liệu
Tuy nhiên, khi làm việc với ứng dụng Web, chúng ta cần xem xét đến hai vấn để, đó là ứng dụng Internet cho phép mọi người truy cập hay ứng
đụng Intranet ứng dụng cho doanh nghiệp
Nếu như ứng dụng Internet cho phép mọi người truy cập thì bạn có
thể mở kết nối cơ sở đữ liệu để truy vấn hay xử lý dữ liệu và đóng kết nối khi khơng cịn nhu cầu sử dụng
Trong trường hợp ứng dụng Intranet, bạn cũng có thể cho phép mọi
người truy cập bằng cách mở kết nối cơ sử dữ liệu để truy vấn hay xử lý dữ liệu và đóng kết nối khi khơng cịn nhu cầu sử dụng Do ứng dụng Intranet
thường sử dụng trong nội bộ doanh nghiệp, số lượng người sử dụng cũng có
giới hạn, bạn vẫn có thể sử dụng cơ chế kết nối cơ sở dữ liệu như ứng dụng Windows Forms, song bạn không nên lạm dụng cách kết nối theo loại này mà nên đóng kết nối và mở lại kết nối khi có nhu câu sử dụng cơ sở dữ liệu Để kết hợp tính tối ưu truy cập cơ sở dữ liệu của ứng dụng Windows Forms trong ting dung ASP.NET, ban can xay đựng kiến trúc 3 tầng (3
tiers) cho giải pháp này, tầng giữa (Middle tier hay còn gọi là Business tier) cho phép kết nối cơ sở dữ liệu và kết nối sẽ được mở liên tục, khi tầng giao điện (Presentation tier) có nhu cầu truy cập dữ liệu (Data tier), chúng chỉ
gọi các phương thức của tầng giữa để lấy giá trị trả về hay chỉ thị các tác vụ cho tầng này thực thị,
Trang 12chức năng kết nối, truy cập và xử lý cơ sở đữ liệu (trình bày trong chương kế
tiếp), phần kiến trúc 3 tầng sẽ được trình bày trong cuốn sách “C# 2005 —
Lập trình nâng cao”
'Trở lại đối tượng dùng để kết nối cơ sở dữ liệu SQL Server, chúng ta sẽ tìm hiểu cách sử dụng đối tượng SqlConnection trong ứng dụng
ASP.NET 2.0 qua các ví dụ tham khảo
Như cách làm việc với ứng dụng Windows Forms, khi làm việc với cơ sở đữ liệu SQL Server trong ASP.NET 3,0, bạn khai báo với cú pháp như sau:
Sqiconnection sqlConnection = new SqlConnection(); sqlConnection.ConnectionString = connectionString; Hay SqlConnection sqiConnection = new SqlConnection{connectionString);
Nếu như bạn lấy chuỗi kết nối cơ sở đữ liệu trong tập tin App.Conũg
hay tập tin định dạng Text (ni) khi làm việc véi tng dung Windows Forms thi trong ứng dụng ASP.NET 2.0, các thông tin này có thể lưu trong tập tin App.Config <connectionStrings> <add name="RCVDB2000" connectionString="server=(local); Integrated Security=true; database=RecruitVietnamDb" /> <add name="RCVDB2005" connectionstring=
"Data Source=({local) \SOLEXPRESS; Initial Catalog=RecruitVietnampbb; uid=sa;pwd=;"
providerName="System.Data.SqlClient" /> </connectionStrings>
Luu ý: Chúng ta sẽ tìm hiểu chỉ tiết về cấu trúc của tập tin App.Config ở chương trình bày về cấu hình ứng dụng ASP.NET 2.0 trong phần triển khai ứng dụng của quyển tiếp theo
Trang 13
1.1, Dang nhap bang Windows Authentication
Nếu bạn chọn Windows Authentication, người sử dụng dùng tài khoản và quyền hạn của tài khoản này trong hệ điều hành Windows để đăng nhập vào cơ sở dữ liệu SQL Server
Mặc định của SQL Server 7.0, 2000 hay 2005 đều cho phép bạn đăng nhập bằng đặc quyển này Tuy nhiên, ngoại trừ tài khoản đăng nhập là Administrator, các tài khoản còn lại cần phải được đăng ký trong SQL Server Luu ý: Để tìm hiểu chỉ tiết cách quan ly tài khoản trong cơ sở dữ liệu SQL Server 2000, bạn có thể tìm đọc cuốn sách “Quản trị SQL Server 2000” do nhà sách Minh Khai phát hành
Chẳng hạn, khi bạn làm việc với SQ1L Server 2000, để đăng ký kết nối cơ sở dữ liệu SQL Server tit SQL Server Enterprise Manager (EMC) thi bạn cần chọn một trong hai cách đăng nhập như hình 17-1
Registered SOL Server Properties [
is Always Options
Server Group: ụ
ly stat SQL ấ ve nhên canyisodng,
KH:
dal
Trang 14
Trong hình trên, bạn có thể chọn cách kết nối cơ sở đữ liệu SQL Server bằng cách chọn vào tùy chọn Use Windows Authentication hay Use SQL Server Authentication
Chú ý: Nếu bạn làm việc với SQL Server 2005 thì cửa sổ cho phép bạn đăng nhập SQL Server Management Studio như hình 17-2
Server type Ỷ “ Database Engine x
‘Server name: MYSOLUTION) 7 #
authềnlicatiorr? Windows Authentication bd]
“Ser hang, |MVSBÙLTIDMAdririeu oe
Lo] Remember password
; 2E, gonnect it Cancel li Help Hf Options >> ]
Hình 17-3: Kết nối cơ sở đữ liệu SQL Seruer 2005
Trong hình trên, bạn có thể chọn cách kết nối eơ sở dữ liệu SQL Server theo Windows Authentication hay SQL Server Authentication
Như vậy, khi làm việc với cơ sở dữ liệu SQL Server, người sử dụng
không cần cung cấp tài khoản và mật khẩu để đăng nhập vào SQL Server Chú ý: Để tìm hiểu chỉ tiết cách quần lý tài khoản trong cơ sở dữ liệu
SQL Server 2005, bạn có thể tìm đọc cuốn sách “Quản trị cơ sở dữ liệu SQL Server 2005” do nhà sách Minh Khai sắp phát hành
'Tương tự như vậy, khi bạn kết nối cơ sở dữ liệu SQL Server từ tiện ích SQL Query Analyzer bing cach chon céch két néi co sé dữ liệu SQL Server
Trang 15
Hình 17-3: Đăng ký kết nối cơ sở dữ liệu SQL Seruer 2000 từ SQL Query
Analyzer
Để bắt buộc người sử dụng kết nối cơ sở dữ liệu SQL Server bằng đặc
quyén Windows Authentication thì ban chon tiy chon Windows Only trong
phần cấu hình Authentication cia cita sé SQL Server Property (Configure)
nhu hinh 17-4,
Lưu ý: Bạn có thể kích hoạt cửa sổ này từ thực đơn Tools Ì SQL Server Configuration Properties nếu bạn đã đăng ký kết nối cơ sở dữ liệu
' bằng quyén Administrator hay sa
"+ Trong trudng hgp làm việc với cơ sở dữ liệu SQL Server 2005, để bắt - buộc người sử dụng kết nối cơ sở dữ liệu SQL Server 200ð bằng đặc quyền
Windows Authentication thi ban chon tiy chon Windows Authentication
Mode trong phẩn cấu hình Server Authentication của cửa sổ Server
Property | Security nhu hinh 17-5
Trang 16
SQL Server Properties (Configure)} - (LOCAI.}
ed Pocestns # Em Ps rnectont AF Database Settings
Hinh 17-5: Cdu hinh két noi co sé dit liu SQL Server 2005 Như vậy, khi SQI Server được cấu hình kết nối cơ sở dữ liệu theo đặc quyền của hệ điều hành thì bạn khai báo chuỗi kết nối cơ sở đữ liệu như sau:
<connectionStrings>
<add name="RCVDB2000"
Trang 17
đatabase=RecruitVietnamDb" /> </connectionStrings>
Chú ý: Để ứng đụng ASP.NET 2.0 được tương tác với cơ sở đữ liệu
SQL Server, bạn có thể đăng nhập hệ điêu hành với tài khoán đã đăng ký
trong SQL Server và được quyển làm việc trên cơ sở dit liệu
RecruitVietnamDb
1.2 Dang nhap bing SQL Server Authentication
Ngược lại với trường hợp trên, nếu bạn cho phép người sử dụng truy
cập cơ sở dữ liệu bằng tai khodn cia SQL Server thi sir dung chuỗi kết nối
tương tự như sau:
<connectionstrings> <add name="RCVDB2005"
connectionString=
“Data Source= (local) \SQLEXPRESS; Initial Catalog=RecruitVietnambb;
uid=sa;pwd=;"
providerNames="System,Data Sqlclient" />
</connect ionStrings>
Như vậy, khi làm việc với cơ sở dữ liệu SQL Server, người sử dụng
phải cung cấp tài khoản và mật khẩu để đăng nhập vào SQL Server Để có thể sử dụng chuỗi kết nối cơ sở dữ liệu với hai thuộc tinh User Id
(uid) va Password (pwd), bạn cấu hình trong SQL Server 2000 như hình 17-6
nhu ễ
Hình 17-6: Cho phép kết nối bằng SQL Server Authentication
Trang 18
eon errs Ế Server 1g - mysolution\sqlexpress | Bae «Heb:
Server authentication
' Connections 20) Windows Aidhetiication made:
(BP Database Settings OM es “ Advanced oS Permissions
Hình 17-7: Cho phép két n6i bing SQL Server Authentication Khi dang nh4p SQL Server bing tài khodn SQL Server, ban cần đăng
ky tai khodn nay trong phan Logins cia Security, điêu này có nghĩa là người sử dụng sau khi đăng nhập hệ điều hành thì phải đăng nhập SQL Server với
tài khoản và password của họ đã khai bdo trong SQL Server néu kết nối Chú ý: Nếu nhà quần trị chỉ cho phép kết nối cơ sở dữ liệu bằng đặc quyền hệ điều hành và ngăn cấm cách đăng nhập bằng đặc quyền của SQL Server 2005, bạn sẽ nhận chuỗi lỗi phát sinh tương tự như hình 17-8
Hình 17-8: Chuỗi lỗi khi bết nối cơ sở đữ liệu SQL Server 2005 Trong trường hợp làm việc với cơ sở dữ liệu SQL Server 2000, chuỗi
lỗi phát sinh tương tự như hình 17-9
Hình 17-9: Chuỗi lỗi khi kết nối cơ sở dit ligu SQL Server 2000
Lưu ý: Một khi bạn để lộ username và password cho những người có
ý xấu, họ có thể truy cập trái phép tài nguyên của hệ điều hành hay trong
Trang 19
1.8 Đọc chuỗi kết nối
Nếu như bạn đã làm việc với ASP.NET 1.0 hay 1.1 thì cách đọc chuỗi
kết nối cơ sở dữ liệu trong tập tỉn Web.Config có cú pháp như sau:
ConfigurationSettings.AppSettings ( "ConnectionString");
Lưu ý: Dé sử dụng phương thức AppSettings ở trên, bạn cần khai báo
sử dụng không gian tên như sau:
using System.Configuration;
Trong đó, chuỗi kết nối cơ sở dữ liệu khai báo trong tập tin
Web.config nhu sau:
<configuration> <appSettings> <add key="ConnectionString" value="servers, ;uid=sa;pwd=; database= RecruitVietnamDb"/> </appSettings> </configuration>
Chú ý: Bạn không nên khai bdo username và password cé gid tri
nguyên thủy như trên mà sử dụng phương thức do bạn định nghĩa để mã
hóa chúng, sau đó dùng phương thức khác để giải mã hai giá trị này khi kết nổi cơ sở đữ liệu SQL Server
hi làm việc với ứng dụng ASP.NET 2.0, thay vì sử dụng phương thức
AppSettings của đối tượng ConñigurationSettings, bạn sử dụng thuộc tính ConnectionString của đối tượng WebConfigurationManager như sau:
string connectionString =
WebConfigurationManager.ConnectionStrings[
"RCVDB2000"] ConnectionString;
Trong đó, thuộc tính name có giá trị RCVDB2000 được khai báo trong tập tin Web.Conlg như sau:
Trang 20
"Data Source= (1oca1) \SOLEXPRESS¿ Initial Catalog=RecruitVietnamDb;
Integrated Security=True"
providerName="System.Data.SqlClient" /> </connectionStrings>
Luu ¥: Dé sứ dụng thuộc tính ConnectionString ở trên, bạn cần khai
báo sử dụng không gian tên như sau:
using System.Web.Configuration;
Chẳng hạn, bạn khai báo trong biến cố Page Load cia trang
Default.aspx như ví dụ 17-1
protected void Page_Load (object sender, EventArgs e)
{
string connectionString =
WebConfi gurationManager ConnectionStrings [ "RCVDB2000"] ConnectionString;
Literall.Text=connectionString;
connectionString =
WebConfigurat ionManager ConnectionStrings|[ "RCVDB2005 "1 ,ConnectionString;
Literall.Text +="<br>";
Literall.Text += connectionString;
}
Khi thực thị chương trình, bạn có thể tìm thấy hai chuỗi kết nối khai báo trong tập tin Web.Config được trình bày như hình 17-10
T10 - Windows Internet Explorer
ey @) hitp:/flocahost: 10357488) x)
server=(ocal); Integrated Security=tme; database=RecruttViemamDb
Data Source=(local)\ SQLEXPRESS; Initiat Catalog=Recrnit VietmamDb; Integrated Security=True
Trang 21
Sau khi khai báo chuỗi kết nối cơ sở dữ liệu, bạn có thể khai báo mở
kết nối bằng phương thức Open như sau:
sg1Connection Open () ;
Lưu ý: Nếu bạn không truyển chuỗi kết nối cơ sở dữ liệu bằng Constructor thi bạn có thể gán chuỗi kết nối này cho thuộc tính
ConnectionString như sau:
sq1Connection.Connection8tring = connecEionString;
Khi khơng cịn nhu câu sử dụng đối tugng SqlConnection, bạn có thể
gọi phương thức Close và Dispose sqlConnection.Close():
sqlConnection.Dispose();
Ngoài ra, bạn có thể khai báo gọi các phương thức: ChangeDatabase, GetSchema, CreateCommand, RetrieveStatistics hay thuộc tính: DataSource,
Database, ServerVersion của đối tượng SqlConnection nếu có nhu cầu Chẳng hạn, bạn khai báo các thuộc tính và phương thức của đối tượng SqlConnection trong biến cố Page_Load của trang ConnectionPage.aspx để kết nổi cơ sở dữ liệu SQL Server 2000 như ví đụ 17-2
Ví dụ 17-3 Khai báo SqlComection|
protected void Page_Load (object sender, EventArgs e}
{
11 Khai báo chuỗi kết nối cơ sở dữ liệu
string connectionString =
WebConfigurationManager.ConnectionStrings[ "RCVDB2000"] ConnectionString;
! Khai báo uà khởi tạo đối tượng SqlConnection
SqlConnection sqlConnection = new SqiConnection{);
Literall.Text = "Object Initiated: "+ DateTime.Now.ToLongTimeString();
Literall.Text += "<br>";
1} Khai bdo thuéc tính cho đối tượng SqlConnecHon sqlConnection,ConnectionString =
connectionString; try
Trang 2211 Khai báo mở kết nối cơ sở đã liệu sg1Connection Open () ;
Literall.Text += "Opened database: "+ DateTime.Now ToLongTimeString (); Literall.Text += "<br>";
Literall.Text += "Server Version: "+
sq1Connection ServerVersion;
Literall.Text += "<br>"; 11 Khai báo đóng hết nối cơ sở đữ liệu
sqlConnection.Close();
Literall.Text += "Closed database: "+
DateTime.Now.ToLongTimeString(); Literall.Text += *<br>"; t catch(Exception ex) { }
LỊ Khai báo giải phóng đối tượng SgạÌConnection
Literall.Text += "Pailed:" + ex.Message;
sqlConnection.Dispose(};
Literall.Text += "Disposed database: "+
DateTime Now ToLongTimeString(};
Literell.Text += "<br>";
}
Khi thực thi chương trình, kết quả trình bày như hình 17-11 “+ UntiHed Page - Windows TT nh: Explorer (= fois)
Object Initiated: 11:17:06 AM Opened database: 11:17:06 AM Server Version: 08 00.0194
Trang 23
Trong trường hợp bạn đổi thuộc tính name từ RCVDB2000 thành RCVDB2005 thì kết quả trình bày như hình 17-12
Object Initiated: 11:18:18 AM Opened database: 11:18:18 AM Server Version: 09.00.1399 Closed database: 11:18:18 AM Disposed database: 11:18:18 AM
Hình 17-12: Sử dụng đối tượng SqlConnection uới cơ sở dữ liệu
SQL Seruer 2005
Để kiểm tra trạng thái của đối tượng SqlConnection, bạn sử dụng
thuộc tính State và enum là ConnectionState (Closed, Open, Broken, )
Ví dụ, bạn khai báo kiểm tra đối tượng SqlConnection đã đóng hay
chưa thì khai bả như sau
oniState ‘l Connect ionState.Closed} it { sqlConnection.Close(}; sqlConnection.Dispose{);
Chú ý: Bạn có thể tìm hiểu cách mã hóa và giải mã username và
password cho chuỗi kết nối cơ sở dữ liệu trong cuốn “C# 2005 - Tập 6°
3 ĐỐI TƯỢNG SQLCOMMAND
Tương tự như đối tượng SglConnection, khi làm việc với ứng dụng ASP.NET 2.0, bạn có thể khai'báo và sử dụng đối tượng SqiCommiand nhu
Trang 24
Như vậy, khi sử dụng đối tượng này, bạn có thể khai và khởi tạo một
trong 4 cú pháp sau:
SqlCommand sq1Command = new Sq1Command () ;
SqlCommand sqlCommand = new $q1Command (commandText ) ; SqlCommand sqlCommand = new Sq1Command (commandText, sqlConnection);
SqlCommand sqlCommand = new S$q1lCommand (commandText ,
sqlConnection, sqlTransaction);
Sau khi khai báo và khởi tạo, bạn có thể gán giá trị cho các thuộc tính của đối tượng này như: CommandText, CommandType, ComandTimeout,
Connection, Transaction, Parameters,
Chẳng hạn, bạn khai báo đoạn chương trình trong biến cố Page_Load của trang CommandPage.aspx để in ra tổng số mẩu tin cha bang
tblJSAceounts như ví dụ 17-8
Khai báo x chói cu đối tượng SqlCommandl
protected void Page_Load (object sender, EventArgs e}
{
11 Khai báo chuỗi kết nối cơ sở dữ liệu
string connectionString = WebConfigurationManager Connect1onStrings [ "RCVDB2005"] ConnectionString; SqlConnection sqlConnection = new Sq1Connection () ; sqiConnection.ConnectionString = connectionString; try sqlConnection.Open(};
+1 Khai báo nà khởi igo déi tugng SqiCommand Sqlcommand sqlCommand =
new Sq1Command () ;
11 Khai báo thuậc tính cho đối tượng SqlCommand
sqicommand.CommandText =
Trang 25sqlCommand.Connection = sqlConnection; sqlCommand.CommandType = CommandType Text ; Literall.Text += "Count: "+ sqlCommand.ExecuteScalar().ToString(); Literall.Text += "<br>";
/1 Giải phóng đối tượng SqlCommand
sqlCommand.Dispose();
11 Khai báo đóng kết nối cơ sở dữ liệu
sqlConnection.Close(); catch (Exception ex)
{
Literall.Text += "Failed: " + ex.Message;
}
11 Khai báo giải phóng đối tượng SqÌlConnection
sqlConnection.Dispose();
thi thực thi chương trình, bạn có thể thấy kết quả trình bày như
hình 17-13
Z- Untitled Page - Windows Internet E [= |Í](X] GS + [BB http: focalhost: 1035) es) k # : 2) Count: 148
Hình 17-18: Sở dụng đối tượng SqiCommand
Ngồi các thuộc tính vừa trình bày ở trên, bạn có thể sử dụng các
phương thức như ExecuteNonQuery, ExecuteScalar, ExecuteReader để
thực thi phát biểu SQL hay thủ tục nội tại và ExecuteXmlReader để đọc dữ
Trang 26Chú ý: Bạn có thể tìm thấy chỉ tiết các phương thức và thuộc tính của đối tượng SqlCommand trong tập 4 quyển 2
2.1 Phương thức ExecuteNonQuery
hi có nhu cầu thực thi phát biểu SQL dạng hành động hay thủ tục nội tại, bạn có thể sử dụng phương thức này với cú pháp như sau:
int records = sqlCommand ExecuteNonQuery ();
Chẳng hạn, bạn thiết kế giao diện trang thêm mới mẩu tin vào bảng
tblJobCategories như hình 17-14
dd New Job Category
1 F Literal “lteratError* ] Cavogoryin: rey
Hình 17-14: Sử dụng phương thức của déi tuong SqlCommand
Khi người sử dụng nhấn nút Save, bạn lưu thông tin nhập trên man hình vào bảng tblJobCategories như ví dụ 17-4
protected void btnSave_Click(object sender, EventArgs e€)
{
L1 Khai báo uà khởi tạo đối tượng SqÌConnection sqlConnection = new SqlConnection(): sqiConnection ConnectionString = connectionString;
try
{
1] Khai bdo mé két néi co sở dữ liệu
sg1Connection Open (} ;
LỊ Khai báo va khôi tạo đối tượng SqiCommand
sqlCommand = new Sqlcommand();
Trang 27
sqiCommand.CommandText =
"Insert into tblJobCategories"+
“values (GID, @Name)"; // Khai báo tham số
AddParameters (sqlCommand,
{ new string[2]{"@ID", "@Name"},
new string[2] {txtID.Text, txtName Text} de sqlCommand.Connection = sqlConnection; sqlCommand.CommandType = Commandatype Text ; {1 Thực thị phát biểu SQL dạng Insert bằng / 1 phương thúc ExecuteNonQuery 3£{sg1Command ExeCuteNonQuery () >0) { literalError.Text =
"New record has been inserted.";
!1 Tạo mã mới bằng phương thức CreateNeuID
CreateNewTD () ;
Sg1Command Dispose (} ; sqiconnection.Close()};
}
catch (Exception ex)
{ literalError.Text = "<br>Failed: " + ex.Message; } søg1Connection.Dispose () ; }
Luu ý: Đối tượng SglConnection, SqlCommand và chuỗi kết nối cơ sở
đữ liệu khai báo bên ngoài như sau: string connectionString =
WebContigurationManager ConnectionStrings[ "RCVDB2000"] -ConnectionString;
SqlConnection sqlConnection ? Sqg1Command sq1Command :
Khi người sử dụng nhập dữ liệu như hình 17-15, rồi nhấn nút Save thì kết quả trình bày như hình 17-16, trong đó mã số (JobCategoryID) mới
Trang 28
Add New Job Category
CategoryID: |4 Category Name: jE
Hình 17-15: Thém moi mau tin
Add New Job Category New record has been mserted
CaegexIDiS | Category Name: Hình 17-16: Thêm thành cơng
"Trong đó, phương thức AddParameters cho phép bạn thêm tham số va gid trị vào đối tượng SqlCommnand có cấu trúc như vi dy 17-5
Khai báo phương thức AddParameters
void AddParameters (SqlCommand sqiCommand, string[} parameterCollection,
string[] valueCollection)
for (int i = 0; i < parameterCollection.Length; it+)
sqlCommand Parameters AddWithvalue (
parameterCollection[il, valueCollection[i]);
} }
9.2 Phương thức ExecuteSecalar
Trong ví dụ trên, chúng ta có nhu cầu lấy ra mã số lớn nhất để tạo mã
số kế tiếp, bởi vì chúng ta không muốn tạo số tự động tăng Thay vào đó,
chúng ta cần kiểm soát mã số này với lý do kiểu dữ liệu cho số tự động tăng là kiểu int thay vì tỉnyint
Trang 29
Để làm điều này, bạn khai báo phương thức CreateNewID bằng cách sử dụng phương thức ExecuteScalar nhu vi du 17-6
void CreateNewID()
if Thém méi méu tin
btnSave.Text = "Save";
txtID.Text i txtName.Text = "1";
11 Khéi tao déi tugng SqlConnection
sqlConnection = new SqlConnection({);
sqlConnection.ConnectionString =
connect ionString; try
{
sqlconnection.Open();
?] Khởi tạo đối tugng SqiCommand
Sg1Command z new Sq1Command (} ;
£1 Khai báo thuộc tính cho đối tượng SqlCommand
sqlCommand.CommandText =
“select Max(JobCategoryID) +1" + " from tblJobCategories";
sqlcommand Connection = sqiConnection;
sqlCommand.CommandType
CommandType.Text;
1] Gọi phương thúc ExecuteScalar của f1 đối tượng SglCommand
txtID.Text = sqlCommand.ExecuteScalar() ToString() sqlCommand.Dispose(); sqlConnection.Close(); }
catch (Exception ex)
{
literalBrror.Text +=
"Failed: " + ex.Message;
}
Trang 30
Trong ví dụ trên, bằng cách sử dụng hàm Max, bạn có thể lấy ra được giá trị có số lớn nhất của cột JobCategoryID trong bảng tblJobCategories
như sau:
select Max(JobCategoryID) +1 from thlJobCategories
Chú ý: Chúng ta có lấy giá trị của cột trong bảng dữ liệu theo hình vừa trình bày ở trên khi bảng đữ liệu chứa số mẩu tin có hạn Trong trường hợp bảng dữ liệu có số lượng mẩu tin lớn, chúng ta nên cho phép cột
JobCategories là số tự động
Trong trang JobCategory.aspx, bạn có thể tìm thấy khai báo gọi
phương thức CreateNewID trong biến cố Page_Load như ví dụ 17-7
í dụ 17-7: Khai báo gọi phương thức
protected void Page_Loađ (objecL sender, EventArgs e)
if (!IsPostBack)
CreateNewID();
else
EditData();
}
Mỗi khi người sử dụng nhấn nút New hay lần đầu tiên gọi đến trang đobCategory.aspx thì mã số mới tạo ra như hình 17-17
Add New Job Category
CategoryID:|5
Hinh 17-17; Mé mdi
Để làm điều này, bạn gọi phương thức CreateNewID trong biến cố
Gliek của nút btaNew như ví dụ 17-8
í đụ 17-8: Khai báo gọi phương
protected void btnNew_Click {object sender, EventArgs e)
Trang 31
2.3 Phương thức ExecuteReader
Phương thức ExecuteReader dùng để đọc và trả về tập dữ liệu chỉ đọc và điều hướng một chiều rồi điển vào đối tượng SglDataReader
Khi bạn có nhu cầu đọc tập đữ liệu có số lượng nhỏ hay không có nhu cầu điều hướng trên từng mẩu tin thì sử đụng phương thức này cùng với đối tượng SqlDataReader
Để tìm hiểu chỉ tiết về cách sử dụng phương thức này, bạn tim doc tap 4 của bộ sách “C# 2005 — Lập trình cơ sở dữ liệu” đã phát hành
Chẳng hạn, trong trường hợp này chúng ta khai báo sử dụng phương thức ExecuteReader trong chức năng hiển thị đữ liệu trên các điều khiển ASP.NET 2.0, cho phép người sử dụng cập nhật vào cơ sở đữ liệu như ví đụ
17-9
void EáitDarca (string itemTd)
{
/‡ Trường hợp cho phép cập nhật dữ liệu
btnSave.Text = "Update";
literalHeader.Text = "Update Job Category"; if(itemId != null)
{
/1 Khai bảo uà khởi tao déi tugng Common
Common cls = new Common () ;
11 Khai bdo goi ham gidi ma chudi QueryString
itemId=
cls.RCVQueryStringDecrypting(itemId) ; /1 Khai bdo va khdi tgo déi tugng SqlConnection
sqlConnection = new SqiConnection();
sqiConnection.ConnectionString = connectionString;
try
{
sglConnection Open () ;
11 Khai báo uà khởi tạo đối tượng SqlCommand
sqlCommand = new Sq1Command QO;
sqiCommand.Commana@Text =
Trang 32
+" where JobCategorylID='"+ itemId + "'"; sqiCommand Connection = sqlConnection; sqlCommand.CommandType =
CommandType Text;
}{ Khai bdo déi tugng sqlDataReader
SqlDataReader sqlDataReader = sqlCommand ExecuteReader (}; if (sql DataReader.Read()) { txtiID.Text = itemId; txtName.Text = Convert ToString(sqlDataReader[1]); } sqicommand.Dispose(); sqlConnection.Close(); }
catch (Exception ex)
1iteralError.Text += "Failed: " + ex.Message; } sqlConnection.Dispose(); } }
Khi thực thi chương trình, danh sách loại phịng ban trình bày như hình 17-18
#2 Untitled Page - Windows Internet Explorer PGES)
oe- | hetp:fflocalhost; 1035) 48 (2) Gouge
fe] JobCategoryID JobCategoryName | | 1 Accounting 2 Software Development
Quaility Control and Test
Trang 33
Nếu người sử dụng chọn vào mẩu tin có JobCategoryName là Software Development trong hinh 17-18, trang JobCategory.aspx xuất hiện như hình 17-19
Update Job Category
CategortD: BS
Category Name: [Sofware Development _ TS
eee] (New) (Reset)
Hinh 17-19: Cho phép cập nhật dữ liệu
Để cho phép người sử dụng cập nhật đữ liệu, bạn khai báo đoạn chương trình trong biến cố Cliek của nút Save như ví dụ 17-10
Khai báo thêm mẫu tín|
protected void btnSave_Click(object sender, EventArgs e)
1] Khai bdo va khdi tao déi tugng SqiConnection
sqlConnection = new SqlConnection(); sqlConnection.ConnectionString = connectionString;
try
{ -
LỊ Khai báo mở kết nối cơ sở dữ liệu
sglConnection Open () ;
f1 Khai bdo vd khdi tạo déi tuong SqlCommand
sqlCommand = new SqlCommand() ; /1 Khai bdo thuộc tính cho đối tuong SqiCommand
if (btnSave.Text=="Save")
sqiCommand CommangText =
"Insert into tbldobCategories"+
“values (@ID, @Name)";
}
else
Trang 34
sqlCommand.CommandText = “Update tblJobCategories" + "set JobCategoryName=@Name"+ "where JobCategoryID=@ID";
11 Khai báo tham số
AddParameters (sqlCommand, new string[2]{"@ID","@Name"}, new string[2]{txtID.Text,txtName.Text}); sqlCommand.Connection = sqlConnection; sqlCommand.CommandType = CommandType Text; 11 Thực thị phát biểu SQL dạng Insert bằng +1 phương thúc ExecuteNonQuery
if (sqlCommand Execut eNonQuery () >0) if (ptnSave.Text=="Save")
{
literalError.Text =
"New record has been inserted."; /! Tạo mã mới bằng phuong thitc CreateNewID CreateNewID();
}
else
{
literalError.Text =
"Record has been updated.";
Response.Redirect ("JobCategories.aspx");
} }
sq1Conmand, Dispose () ;
sqiConnection.Close();
catch (Exception ex)
literalError.Text =
"<br>Failed: " + ex.Message;
}
sqlConnection.Dispose()};
Trang 35
Lưu ý: Bạn cần khai báo đoạn chương trình trong biến cố Click của nút New như ví dụ 17-11
protected void btnNew_Click(object sender, EventArgs e)
{
CreateNewID();
2.4 Phuong thiic ExecuteXmlReader
Tương tự như phương thức ExecuteReader, phuong thức ExecuteXmlReader cho phép bạn đọc dữ liệu theo định dạng XML và điển vào đối tượng XmlReader
Chẳng hạn, bạn khai báo phát biểu SQL dạng SELECT như sau:
select * from tblữcbCategories
for XML Auto
Khi thực thi phat biéu SQL dang SELECT trong SQL Query Analyzer cia SQL Server 2000 hay Microsoft SQL Server Management Studio, kết quả trả về trình bày tương tự như sau:
<tblJobCategories JobCategoryID="1" JobCategoryNames"Accounting"/>
<tb17obCategories JobCategoryID="2"
JobCategoryName="Software Development "/> <tblJobCategories JobCategoryID="3"
JobCategoryName="Quaility Control and Test"/> <tblJobCategories JobCategoryID="4"
JobCat egoryName="Engineering and Technology"/>
Để doc dữ liệu này, bạn có thể sử dụng phương thức ExecuteXmlReader nhu vi du 17-12
du 17-12
Protected void Page_Load (object sender, EventArgs e)
string connectionString =
Trang 36
Sqicommand sqiCommand;
sqiConnection = new SqlConnection(); sqlConnection.ConnectionString = connectionString;
try
{
sqiConnection.Open();
sqlCommand = new SqlCommand()};
11 Khai báo phát biéu SQL tra vé dit ligu dinh dang XML
sqlCommand.CommandText =
"select * from tbluobCategories"
+" for XML Auto ";
sqlCcommand.Connection = sqlConnection; sqlCommand.CommandType =
CommandType.Text;
// Khai bdo đối tượng XmilReader 0à gọi 11 phương thức ExecuteXmiReader XmlReader xmlReader = sqlCommand ExecutexmlReader (); Literall.Text=""; while (xmlReader.Read({}) {
Literall.Text +=Convert ToString ( xmiReader.GetAttribute(
"JobCategoryName")) +"<br>";
}
sqlCommand.Dispose(); sqlConnection.Close();
catch (Exception ex)
Literall.Text += "Failed:" + ex.Message;
sqlConnection.Dispose();
}
Khi thực thị chương trình, bạn có thể tìm thấy danh sách tên phòng ban được trình bày như hình 17-20
Trang 37
Z2 Untitled Page - Windows Internet Explo a le
Ge) ~ Elmertearon oid) ix)
Accounting Software Development
Quaility Controt and Test Engineering and Technology
Hình 17-20: Sứ dụng phương thie ExecuteXmlReader
3 ĐỐI TƯỢNG SQLDATAREADER
Như vừa trình bày trong phần phương thức ExecuteReader, déi tượng SqlDataReader ding dé nim git tập đữ liệu chi đọc và diéu hướng một chiều từ cơ sở đữ liệu SQL Server
Trong tập 4, bạn không thể sử dụng đối tượng SqlDataReader để
trình bày dữ liệu trên điều khiển GridView, nhưng khi làm việc với
ASP.NET, bạn có thể gán đối tượng này cho thuộc tính DataSouree của điều
khiển GridView
Chẳng hạn, bạn khai báo đoạn chương trình trong biến cd Page_Load
của trang dobCategories.aspx để gọi phương thức ExecuteReader rôi điền
dữ liệu vào đối tượng SqlDataReader và trình bày trên điều khiển GridView
như ví dụ 17-18
vi du 17-13: Khai bao
protected void Page_Load (object sender, EventArgs e) { 11 Khởi tạo đối tượng SqlConnectiion
sqlConnection = new Sqlconnection();
Trang 38
connectionString;
try
{
sqlconnection.Open();
(1 Khai bdo vé khdi tao déi tugng SqiCommand
sqlCommand = new Sq1Command (} ; sqlCommand.CommandText =
"select * from tblJobCategories";
sqlCommand.Connection = sqlConnection; sqlCommand CommandType =
CommandType Text;
11 Khai báo đối tượng SạIDo(aReader SqlDataReader sqlDataReader = sqicommand ExecuteReader ();
1] Néu tén tai mdu tin
if (sq]DataReader HasRows)
{
11 Điền mẩu tin uào đổi tượng GridVieo
Gridviewl.DataSource = sqlDataReader;
GridViewl.DataBind();
11 Khai báo liên kết
CreateLink(Gridviewl,
"JobCategory.aspx",0,1);
}
sqlCommand.Dispose();
sqlConnection.Close();
catch (Exception ex)
{
literalError.Text += "Failed:" + ex.Message;
sqlConnection.Dispose(}; }
Khi thực thi chương trình, bạn có thể tìm thấy danh sách mẩu tin
trong bang tblJobCategories trinh bày trên trang dobCategories.aspx như
hình 17-21
Mặc dù cho phép bạn điển dữ liệu vào điều khién GridView tit déi
Trang 39
(=
/ Untitled Page - Windows Internet Explo EEI
JobCategoryID JobCategaryName
Accounting
Software Development Quaility Control and Test Engineering and Technology|
Hinh 17-21; Danh séch méu tin
Vi du, ban khai báo thuộc tinh AllowPaging cia diéu khién GridView ˆ
là True thì lỗi sẽ phát sinh như sau:
The data source does not support server-side data
paging
Trong đó, phương thức CreateLink dùng để tạo ra liên kết trên từng
phương thức của điểu khiến GridView bằng cách sử dụng đối tượng GridViewRow như ví dụ 17-14
void CreateLink (GridView Gridviewl, stringurl, int £ielđ1đInđex,
int fieldLinkindex)
{
Common cls = new Common O);
foreach (GridViewRow
gridViewRow in Gridviewl Rows)
HyperLink hyperLink = new HyperLink (); hyperLink Text =
gridViewRow.Cells [f£ieldLinkIndex]} -Text; hyperLink.NavigateUr1 =url +
"?2TtemTđ=" +
Trang 40
gridViewRow.Cellis[(fieldIdIndex].Text); gridViewRow.Cells[
1}.Controls.Add(hyperLink) ;
Chú ý: Để tìm hiểu chi tiết về các thuộc tính và phương thức của đối tượng SqlDataReader, bạn có thể tìm đọc tập 4 - quyển 2
4 ĐỐI TƯỢNG SQLDATAADAPTER
Đối tượng SaIDataAdapter đã được giới thiệu trong quyển 2 của tập 4, trong ASP.NET 3.0 bạn có thể sử dụng đối tượng này để đọc dữ liệu và điển vào đối tượng DataSet hay DataTable
Ngoài ra, bạn có thể kết hợp đối tượng SqIDataAdapter với đối tượng 8alCommand để cập nhật dữ liệu từ đối tượng DataSet hay DataTable trở lai eo sở dữ liệu nguồn SQL Server
Chẳng hạn, khi bạn muốn trình bày danh sách tài khoản người sử dung trong bang tblJSAccounts vào điều khiển GridView thi ban có thể khai báo trong biến cố Page_ load của trang Áccounis.aspx tương tự như ví
dụ 17-15
protected void Page_Load(object sender, EventArgs e)
{
+1 Khai bdo vé khdi tao déi tugng SqiConnection Sqiconnection sqiconnection;
sqlconnection = new Sqlconnection();
sqlConnection.ConnectionString =
connectionString;
try
sqlconnection.Open();
/ 1] Khai báo uà khởi tạo đối tượng sqlCommand
8q1Command sq1Command;
sqlCommand = new SqlCommand (); sqlCommand.CommandText =
"select UserID, FirstName+"+ ® + * 4 LastName as FullName, "+