Trang chủDiễn đànThư viện TutorialsTin tứcĐăng kýLiên hệ
DANH MỤC

QUẢNG CÁO


THỐNG KÊ
Số bài giảng: 224
Số chuyên mục: 35
Số thành viên: 765495
Đang online: 1206

Trang chủ >> Lập trình web động >> ASP
Bài5 - 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.

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:
Code:
“Select * from HosoHocVien”

Nếu lựa chọn có điều kiện:
Code:
“Select * from HosoHocVien where MaHV=’10’ “

Nếu chỉ lựa chọn một số trường trong bảng:
Code:
“Select Ten from HosoHocVien where MaHV=’10’ ”

1.5.1.2 Thêm dữ liệu vào bảng

Code:
“Insert into HosoHocVien values (‘001’,’Tran Van A’) “

1.5.1.3 Sửa dữ liệu
Code:
“Update HosoHocVien set Ten=’Tran Van B’ where MaHV=’001’ “

1.5.1.3 Xoá dữ liệu
Code:
“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)
Code:
<%
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
%>


(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.
Code:
<%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 “<BR>”
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 :
HTML Code:
<table border="1">
<tr>
<td>MA HOC VIEN</td>
<td>TEN</td>
</tr>
<%do while not rs.eof%>
<tr>
<td ><%=rs("MaHV")%></td>
<td ><%=rs("Ten")%></td>
24 ASP
</tr>
<%rs.movenext
loop
rs.close
%>

</table>

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
Code:
<%
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
Code:
<!--#include file ="Connection.asp"-->
<%openConn
set rs = server.createobject("ADODB.Recordset")
rs.open "select * from tblUser", conn%>
<table border="1" width="200">
<tr><td>ID</td><td>Username</td><td>Address</td>
<% do while not rs.EOF
<tr>
<td><%=rs("id")%></td>
<td><%=rs("username")%></td>
<td><%=rs("address")%></td>
</tr>
<% rs.movenext
loop
rs.close
destroyConn%>
</table>
Code:

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:
Code:
<%Conn.execute “Insert into HosoHocvien values(‘001’,’Tran Van A’)”%>
Sửa dữ liệu:
Code:
<%Conn.execute “Update  HosoHocVien set Ten=’Tran Van B’ where
MaHV=’001’ “%>

Xoá dữ liệu:
Code:
<%Conn.execute “Delete from HosoHocVien where MaHV=’001’ “ %>

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:
Code:
<%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:
Code:
<% 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:
Code:
<% 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 trangTrong 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 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
Code:
<%
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 “<BR>”
dem=dem+1
rs.movenext
loop
%>
<% ‘Hiển thị nút “Trước”
if x>1 then %>
<a href=”home.asp?pageNumber=<%=x-1%>”>Trước</a>
<%end if%>
<% ‘Hiển thị nút “Tiếp”
if not RS.EOF then %>
<a href=”home.asp?pageNumber=<%=x+1%>”>Tiếp</a>
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...)
Code:
<%
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 "<BR>"
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:
Code:
<% 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.
Code:
<%
If rs.eof then response.write “Không tìm thấy kết quả nào” %>
Bài mới nhất cùng chuyên mục Xem bài tiếp theo
BẢO VỆ CƠ SỞ DỮ LIỆU ACCESS TRONG CÁC ỨNG DỤNG WEB (06-09-2009 | 02:02:01 PM)
Bài 6 - Hướng dẫn xây dựng 1 số ứng dụng bằng ASP (Đăng ký, đăng nhập, quản lý, Shoping Cart) (05-09-2009 | 08:47:41 PM)
Bài5 - Sử dụng Database với ASP (05-09-2009 | 08:46:01 PM)
Bài 4 - Các đối tượng căn bản (05-09-2009 | 08:45:26 PM)
Bài 3 - Tóm tắt các cú pháp VBScript (05-09-2009 | 08:44:55 PM)
 
 
© Copyright 2009 SINHVIENIT.NET, All right reserved
Thư viện bài giảng nghành công nghệ thông tin SinhVienIT.Net  
Xây dựng và phát triển bởi các thành viên SinhVienIT.net
Liên hệ: Admin@SinhVienIT.Net | VuThanhLai@Gmail.Com
Ghi rõ nguồn http://sinhvienit.net khi sao chép bài ở đây.