http://www.ebook.edu.vn
111
5.3 Mô hình đối tợng ADO
5.3.1 Đối tợng kết nối (Connection)
Cho phép thực hiện việc mở kết nối đến nguồn dữ liệu cần truy xuất. Thông
qua Connection chỉ cần chỉ định trình cung cấp OLEDB Provider sẽ dùng để tiếp
cận dữ liệu. Các thông tin kết nối bổ sung khác nh username, password, server
name, thờng đợc lu vào một chuỗi gọi là chuỗi kết nối (Connection String).
Chú ý: Có thể kết nối và truy xuất vào nguồn dữ liệu mà không bắt buộc phải
dùng đối tợng Connection. Cá đối tợng khác nh Command, RecordSet,
Record, cũng cho phép mở trực tiếp kết nối. Tuy nhiên sử dụng đối tợng
Connection sẽ cho phép bạn tách biệt thao tác kết nối và thao tác truy cập cơ sở dữ
liệu. Hơn nữa đối tợng Connection còn cung cấp thêm một số chức năng chuyên
dụng khác nh cho phép thực thi câu lệnh SQL tác động vào dữ liệu nh Insert,
Update, Delete, gọi thủ tục Procedure Store, hoặc kiểm soát giao tác transaction
nh Rollback, commit.
5.3.2 Đối tợng Command:
Đối tợng này dùng cho mục đích thực thi câu lệnh tốt hơn Connection. Cho
phép bạn chuyển tham số vào các lệnh thực thi SQL. Tham số có thể chỉ định kiểu
hoặc giá trị tờng minh. Các tham số có thể nhận trị trả về sau khi thực
thi Command có thể dùng cho cả 2 mục đích: thực thi câu lệnh SQL không cần
nhận kết quả trả về nh Insert, Update, Delete, Procedure Store, hoặc thực thi các
lệnh trả về tập RecordSet nh lệnh Select.
5.3.3 Đối tợng RecordSet:
Là đối tợng sử dụng thờng xuyên trong ADO. Cung cấp kết quả trả về từ
câu lệnh truy vấn một tập các bản ghi. Trang ASP có thể dùng vòng lặp để duyệt
qua các bản ghi này và hiển thị dữ liệu kết xuất ra trang Web phía trình duyệt.
Ngoài ra RecordSet còn cho phép thực hiện lọc dữ liệu từ tập các bản ghi, truy xuất
đến tong trờng cụ thể của bản ghi thông qua đối tợng Field hoặc danh sách các
trờng trong bản ghi thông qua đối tợng Fields
5.4 Kết nối với nguồn dữ liệu
set conn=Server.CreateObject(ADODB.Connection)
conn.open connStr
5.4.4 Cơ sở dữ liệu MS SQL Server
connStr=Provider=SQLOLEDB.1;Persist Security Info=False;
User ID=sa;Initial Catalog=AdvWorks;Data Source=localhost
set conn=Server.CreateObject(ADODB.Connection)
conn.open connStr
Nếu nguồn dữ liệu hỗ trợ OLEDB ta có thể sử dụng ADO thông qua ODBC
theo cách tổng quát:
connStr="Provider=MSDASQL.1;Persist Security Info=False;
Data Source=Test"
set conn=Server.CreateObject(ADODB.Connection)
conn.open connStr
Trong đó Test là DataSource thiết lập trong System DNS của ODBC
5.5 Sử dụng đối tợng RecordSet
5.5.1 Tạo RecordSet:
set rs=Server.CreateObject(ADODB.RecordSet)
Để trích rút dữ liệu từ một hoặc nhiều bảng nào đó trong cơ sở dữ liệu, ta
thờng kết hợp đối tợng Connection vào câu lệnh SQL Select trong phơng thức
Open của RecordSet:
rs.open SQLCommand, Conn
5.5.2 Duyệt qua các bản ghi và truy xuất các trờng của bản ghi:
Do While not rs.eof
Rs.fields](field_name)
rs.movenext : di chuyển con trỏ của RecordSet đến bản ghi kế tiếp
loop
rs.close
http://www.ebook.edu.vn
113
Các cách truy cập hợp lệ và tơng đơng:
adOpenForwardOnly(0), adLockReadOnly (1) truy cho phơng thức Open nh sau:
Rs.open sqlStr, Conn, 0,1
Công việc sau cùng là định vị trang thông qua thuộc tính AbsolutePage. Ta
lu lại vị trí hiện hành của trang dữ liệu thông qua giá trị chứa trong thẻ <input
hidden>. Giá trị này sẽ đợc chuyển về trình chủ mỗi khi ngời dùng kích vào.
Xét ví dụ sau:
<%sqlStr="SELECT * FROM Products "
' page navigate session here
Dim lCurrentPage
Dim lPageCount
lCurrentPage = CLng(Request("page"))
If lCurrentPage < 1 Then
http://www.ebook.edu.vn
114
lCurrentPage = 1
End If
rs.CursorLocation = 3
rs.PageSize = 15
rs.Open sqlStr, conn, 0, 1 'Const adOpenForwardOnly=0,
adLockReadOnly = 1
lPageCount = rs.PageCount
If lCurrentPage > lPageCount Then
lCurrentPage = lPageCount
End If
if not rs.eof then
rs.AbsolutePage = lCurrentPage
end if
call ShowPageNavigation(lCurrentPage,lPageCount)
Do While rs.AbsolutePage = lCurrentPage And Not rs.Eof
Response.write rs("ProductName")
</script>
5.6 Hiệu chỉnh các bản ghi
5.6.1 Hiệu chỉnh các bản ghi dựa vào RecordSet:
Thêm mới bản ghi: Để thêm mới vào bảng dữ liệu quản lý bởi phơng thức
RecordSet sử dụng phơng thức AddNew
sqlStr=Select * From Accounts
rs.open sqlStr,Conn
Thêm ti khoản mới vo bảng Accounts
rs.Addnew
gán giá trị cho bản ghi
with rs
.fields(username)= New User
.fields(password)=***
end with
lu lại
rs.update
Chỉnh sửa nội dung trong bản ghi hiện hnh:
sqlStr=Select * From Accounts
rs.open sqlStr,Conn
with rs
.fields(password)=newpassword
end with
lu lại
rs.update
Xoá bản ghi hiện hnh:
sqlStr=Select * From Accounts where username= &mkuser &
rs.open sqlStr,Conn
rs.delete
5.6.2 Hiệu chỉnh các bản ghi bằng câu lệnh SQL với đối tợng connection
sqlStr=delete * from Accounts where username= &mkuser &