Giáo trình Lập trình ngôn ngữ ASP - Chương 1: Giới thiệu ASP

Mục tiêu

¾ Giới thiệu ngôn ngữASP

¾ Cài đặt và chạy ứng dụng ASP trên server IIS

¾ Các cú pháp căn bản VBScript

¾ Các đối tượng có sẵn

¾ Thao tác với Database trong ASP

pdf27 trang | Chuyên mục: ASP | Chia sẻ: dkS00TYs | Lượt xem: 1864 | Lượt tải: 5download
Tóm tắt nội dung Giáo trình Lập trình ngôn ngữ ASP - Chương 1: Giới thiệu ASP, để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
" 
d.add "learn","Hoc tap" ‘tương tự như mảng nhưng mỗi phần tử là một cặp 
khóa/giá trị 
response.write "work nghĩa tiếng Việt là: "&d.item("work") 
response.write "learn nghĩa tiếng Việt là: "&d.item("learn") 
set d=nothing 
%> 
Một số ứng dụng của đối tượng này như dùng mô phỏng giỏ hàng chứa hàng 
hóa(shopping cart) với cặp khóa/giá trị là :ProductID/Quantity (xem chương 
2), sổ địa chỉ với cặp khóa/giá trị là: CustomerName/Address. 
1.4.7 Đối tượng Server 
Đối tượng Server được dùng để truy cập các thuộc tính và phương thức của 
server .Ta thường dùng 2 lệnh sau 
1.4.7.1 Server.CreateObject 
khởi tạo 1 đối tượng. 
Ví dụ: 
Tạo một đối tượng Connection: 
Tạo một đối tượng Dictionary: 
1.4.7.2 Server.Mappath 
biến đường dẫn tương đối thành tuyệt đối. 
Ví dụ: 
<%str= server.mappath("nhanvien.mdb") 
Response.write str%> 
Sẽ cho kết quả: “C:\WEB\nhanvien.mdb” trong trường hợp file nhanvien.mdb 
nằm trong thư mục C:\WEB 
Ta thường áp dụng server.mappath trong những trường hợp xử lý đường dẫn 
tương đối, ví dụ là chuỗi kết nối vào database 
connstr="provider=microsoft.jet.oledb.4.0; data 
source="&server.mappath("nhanvien.mdb")&";" 
1.5 Sử dụng Database với ASP 
Hầu hết các ứng dụng Web động đều lưu trữ dữ liệu trong Database. Vì vậy 
các thao tác kết nối vào Database, xem, thêm, sửa, xóa dữ liệu trong các 
bảng là phần quan trọng đối với các ngôn ngữ lập trình web như ASP. 
Chúng ta sẽ học các kỹ thuật sử dụng Asp để thao tác với dữ liệu trong 
Database thông qua kiến trúc ADO. 
22 ASP 
1.5.1 Các cú pháp căn bản để truy xuất dữ liệu từ DB 
Để thao tác với dữ liệu trong các bảng của DB, có 4 thao tác chính với câu 
lệnh SQL tương ứng như sau: 
(Lấy ví dụ với một Database cụ thể Quanlyhocvien.mdb, trong đó có một 
bảng HosoHocVien (MaHV:text, Ten: text) 
1.5.1.1 Lựa chọn 
Lấy tất cả các bản ghi trong bảng: 
“Select * from HosoHocVien” 
Nếu lựa chọn có điều kiện: 
“Select * from HosoHocVien where MaHV=’10’ “ 
Nếu chỉ lựa chọn một số trường trong bảng: 
“Select Ten from HosoHocVien where MaHV=’10’ ” 
1.5.1.2 Thêm dữ liệu vào bảng 
“Insert into HosoHocVien values (‘001’,’Tran Van A’) “ 
1.5.1.3 Sửa dữ liệu 
“Update HosoHocVien set Ten=’Tran Van B’ where MaHV=’001’ “ 
1.5.1.3 Xoá dữ liệu 
“Delete from HosoHocVien where MaHV=’001’ “ 
Chúng ta có thể sử dụng các lệnh SQL phức tạp hơn để có được kết quả 
mong muốn như sử dụng các lệnh join, order by, group by, having... 
1.5.2 Đối tượng Connection 
Đối tượng Connection cho phép tạo kết nối đến một DB. 
Các bước sử dụng Connection: 
- Khai báo đối tượng Connection 
- Khởi tạo 
- Tạo chuỗi kết nối 
- Mở Connection với chuỗi kết nối trên 
- Sử dụng Connection 
- Đóng và Hủy Connection 
Ví dụ sau đây kết nối đến database Access QuanlyHocvien.mdb (database 
này nằm trong cùng thư mục với file Asp) 
<% 
dim conn ‘khai báo 
set conn=server.createObject("ADODB.connection") ‘khởi tạo 
stringconn="provider=microsoft.jet.OLEDB.4.0;data 
source="&server.mappath("QuanlyHocVien.mdb")&";" ‘chuỗi kết nối 
conn.open stringconn ‘mở connection 
‘ các thao tác với DB sử dụng connection này 
‘....... 
‘conn.close ‘đóng connection 
Set conn=nothing ‘hủy connection 
%> 
Chương 1: Giới thiệu ASP 23 
(chuỗi “stringconn=…” viết trên 1 dòng, trong đó: “… data source = …”chú ý 
có một dấu cách giữa “data” và “source”, chuỗi này chỉ đúng với Access) 
1.5.3 Đối tượng Recordset 
Đối tượng Recordset thường dùng để xem, thêm, sửa, xóa các bản ghi trong 
bảng dữ liệu của Database. Nó trỏ đến tập hợp các bản ghi là kết quả trả về 
từ câu lệnh select 
Các bước sử dụng đối tượng Recordset : 
- Khai báo đối tượng Recorset 
- Khởi tạo 
- Tạo sql query 
- Mở Recordset với chuỗi sql query và connection đã mở 
- Sử dụng Recordset 
- Đóng và Hủy Recordset 
Ví dụ sau đây cho phép lấy các bản ghi trong bảng và hiển thị ra ngoài trang web. 
 <%Dim rs ‘ khai báo Recordset 
set rs=server.createObject("ADODB.Recordset") ‘Khởi tạo 
SQLstring="select * from HosoHocVien" ‘SQL query 
rs.open SQLstring ,conn ‘Mở Recordset 
‘ dùng vòng lặp để hiển thị toàn bộ các bản ghi ra màn hình 
do while not rs.EOF 
 response.write RS(“MaHV”) 
 response.write RS(“Ten”) 
 response.write “” 
rs.movenext ‘dịch con trỏ rs tới bản ghi tiếp theo 
loop 
rs.close ‘đóng recordset 
set rs=nothing ‘hủy recordset 
%> 
Chúng ta có thể kết hợp giữa script và thẻ html để dữ liệu được hiển thị ra ngoài trang 
web với giao diện theo ý muốn : 
 MA HOC VIEN 
 TEN 
24 ASP 
<%rs.movenext 
loop 
rs.close 
%> 
Sau đây là một ví dụ hoàn chỉnh liệt kê các user trong bảng tblUser ra trang 
web: 
Connection.asp 
<% 
dim conn 
Sub openConn() 
set conn=server.createobject("adodb.connection") 
connstr="provider=microsoft.jet.oledb.4.0; data 
source="&server.mappath("myDB.mdb")&";" 
conn.open connstr 
End Sub 
Sub destroyConn() 
conn.close 
set conn=nothing 
End Sub 
%> 
ListUser.asp 
<%openConn 
set rs = server.createobject("ADODB.Recordset") 
rs.open "select * from tblUser", conn%> 
 IDUsernameAddress 
<% do while not rs.EOF 
<% rs.movenext 
loop 
rs.close 
destroyConn%> 
1.5.4Thêm sửa xóa dữ liệu trong DB: 
Với một connection đã mở chúng ta có thể dùng nó để thực thi câu lệnh SQL 
dạng insert, update, delete: 
Thêm dữ liệu: 
Chương 1: Giới thiệu ASP 25 
Sửa dữ liệu: 
<%Conn.execute “Update HosoHocVien set Ten=’Tran Van B’ where 
MaHV=’001’ “%> 
Xoá dữ liệu: 
Ngoài ra chúng ta có thể dùng Recordset để thêm, sửa, xóa dữ liệu trong database 
bằng cách duyệt qua tập hợp các bản ghi trong bảng 
Thêm dữ liệu: 
<%Dim RS 
set rs=server.createObject("ADODB.recordset") 
SQLstring="select * from HosoHocVien" 
rs.open SQLstring ,conn,3,2 
‘rs.open SQLstring ,conn,adOpenStatic,adLockPessimistic 
rs.addnew ‘Thêm một bản ghi 
rs(“MaHV”)=”001” ‘ gán giá trị cho các trường của bản ghi 
rs(“Ten”)=”Tran Van A” 
rs.update ‘ Xác nhận thêm xong 
rs.close ‘đóng recordset 
%> 
Sửa: 
<% set rs=server.createObject("ADODB.recordset") ‘Khởi tạo 
SQLString="select * from HosoHocVien where ma=’001’ " 
‘ lấy ra bản ghi cần sửa 
rs.open SQLString ,conn,3,2 
rs(“Ten”)=”Tran Van B” ‘sửa lại giá trị trường “Ten” 
rs.update ‘ xác nhận sửa xong 
rs.close ‘đóng recordset 
%> 
Xóa: 
<% set rs=server.createObject("ADODB.recordset") ‘Khởi tạo 
SQLString="select * from HosoHocVien where MaHV=’001’ " ‘Câu lệnh 
SQL lấy ra đúng bản ghi cần xóa 
rs.open SQLString ,conn,3,2 
rs.delete ‘xóa bản ghi này 
rs.close ‘đóng recordset 
%> 
1.5.4 Phân trang 
Trong nhiều trường hợp do kết quả câu lệnh “select ....” trả về quá nhiều bản 
ghi, nếu chúng ta hiển thị tất cả trên cùng 1 trang web thì sẽ bất tiện trong 
việc đọc chúng, khi đó người ta tiến hành phân nó ra để hiển thị thành nhiều 
trang, đây gọi là kỹ thuật phân trang. So với cách đọc và hiển thị dữ liệu 
26 ASP 
thông thường, thì phân trang đòi hỏi phải thiết lập thêm một số thuộc tính: 
- Số bản ghi cần hiển thị trên một trang RS.PageSize 
- Trang nào đang được hiển thị: RS.AbsolutePage, 
- Khi mở Recordset đòi hỏi phải thêm các tham số CursorType và 
LockType :rs.open SQLstring ,conn,3,3 
- Vòng lặp hiển thị dữ liệu cần có cơ chế đảm bảo nó chỉ chạy đúng số 
bản ghi trên một trang (rs.pagesize) là phải thoát khỏi vòng lặp. 
Ví dụ để hiển thị bảng HosoHocVien với yêu cầu chỉ hiển thị 4 bản ghi/1 
trang: 
Home.asp 
<% 
dim x ‘biến này dùng để xác định xem cần hiển thị trang nào 
x=request.querystring(“PageNumber”) ‘nhận lại PageNumber khi người 
dùng nhấn vào các nút “Trước” và “Tiếp” 
if x=”” then ‘đầu tiên sẽ hiển thị trang 1 
x=1 
end if 
dim conn 
set conn=server.createObject("ADODB.connection") 
stringconn="provider=microsoft.jet.OLEDB.4.0;data 
source="&server.mappath("QuanlyHocVien.mdb")&";" 
conn.open stringconn 
Dim RS 
set rs=server.createObject("ADODB.recordset") 
SQLstring="select * from HosoHocVien" 
rs.pagesize= 4 ‘chỉ hiển thị 4 bản ghi/1 trang 
rs.open SQLstring ,conn,3,3 
rs.AbsolutePage=x ‘trang cần hiển thị 
dem=0 ‘biến này để đảm bảo vòng lặp chỉ thực hiện tối đa 4 lần lặp 
do while not rs.EOF and dem<rs.pagesize 
 response.write RS(“MaHV”) 
 response.write RS(“Ten”) 
 response.write “” 
dem=dem+1 
rs.movenext 
loop 
%> 
<% ‘Hiển thị nút “Trước” 
if x>1 then %> 
”>Trước 
<% ‘Hiển thị nút “Tiếp” 
if not RS.EOF then %> 
”>Tiếp 
Chương 1: Giới thiệu ASP 27 
<%end if 
rs.close ‘đóng recordset 
%> 
1.5.5 Tìm kiếm dữ liệu trong database 
Để tìm kiếm dữ liệu trong bảng của Database chúng ta dựa vào câu lệnh 
SQL: 
“select * from Tenbang where Tencot like ‘%giatri%’ “ 
Ví dụ đoạn chương trình sau cho phép hiển thị những Sinh Viên trong bảng 
“HosoHV” của DB “Sinhvien.mdb” có tên được tìm kiếm bởi từ khoá “Anh” (Ví 
dụ : Tuấn Anh, Vân Anh, Việt Anh...) 
<% 
set conn=server.createobject("adodb.connection") 
connstring="provider=microsoft.jet.oledb.4.0;data 
source="&server.mappath("sinhvien.mdb")&";" 
conn.open connstring 
set rs=server.createobject("adodb.recordset") 
rs.open "select * from HosoSV where ten like '%Anh%' ",conn 
do while not rs.eof 
response.write rs("MaSV") 
response.write " " 
response.write rs("Ten") 
response.write " " 
response.write rs("Lop") 
response.write "" 
rs.movenext 
loop 
rs.close 
%> 
Thông thường người sử dụng nhập từ khoá cần tìm kiếm vào một trường của 
form. như vậy ta chỉ việc dùng lệnh request.form để lấy lại từ khoá cần tìm 
kiếm và đưa vào câu lệnh SQL ở trên. Chẳng hạn người sử dụng nhập từ 
khoá cần tìm vào trường “Ten” trong form thì chúng ta sẽ mở bảng bằng câu 
lệnh SQL sau: 
<% ten=request.form(“Ten”) 
‘validate 
rs.open "select * from HosoSV where Ten like '%”&ten&”%' ",conn 
‘... %> 
Nếu không tìm thấy bản ghi nào thì giá trị rs.EOF sẽ true. 
<% 
If rs.eof then response.write “Không tìm thấy kết quả nào” %> 

File đính kèm:

  • pdfChương 1 - Giới thiệu ASP.pdf
Tài liệu liên quan