1
TRUY XUẤT CƠ SỞ DỮ LIỆU BẰNG
ADO.
I. Thư viện ADO và ODBC
II. Sử dụng các đối tượng Connection và
Recordset
2
Giới thiệu
Hiện nay hầu các web site từ đơn giản cho
đến các web site phục vụ thương mại điện
tử đều có sử dụng cơ sở dữ liệu (CSDL)
để lưu trữ thông tin. Chính vì thế việc viết
các trang web có truy xuất tới database là
một trong những yêu cầu bắt buộc với
những người lập trình web.
Nội dung của chương này đề cập tới các kỹ
thuật lập trình với CSDL bằng ASP, sử
dụng thư viện ADO.
3
I. Thư viện ADO và ODBC
Database
ODBC
ADO
(OLE-DB)
Script
Để cung cấp khả năng làm việc với CSDL cho các trang web, ASP sử dụng thư
viện COM có tên là ADO (ActiveX Data Objects). ADO là một bộ các đối tượng
thực hiện các thao tác cơ bản để làm việc với CSDL. Các đối tượng của ADO có
thể được sử dụng bởi các lệnh script của trang ASP một cách khá dễ dàng, điều
này làm cho việc xây dựng các ứng dụng CSDL là một trong các đặc điểm ưu việt
của ASP.
Sau khi đã có một DNS, việc truy xuất tới cơ sở dữ liệu mà DNS đó đại diện được
thực hiện khà dễ dàng thông qua các đối tượng mà thư viện ADO cung cấp.
5
Sử dụng file DSN
File DSN là một file đặc tả các thông số cho kết nối thông qua ODBC. File này là
một file văn bản trơn, có nội dung như sau:
[ODBC]
DRIVER=Microsoft Access Driver (*.mdb)
ReadOnly=0
UserCommitSync=Yes
Threads=3
SafeTransactions=0
PageTimeout=5
FILL=MS Access
DriverId=25
MaxScanRows=8
axBufferSize=512
ImplicitCommitSync=
Thay vì phải sử dụng danh hiệu DSN như ở trên, khi thực hiện kết nối người lập
trình chỉ cần tạo file DSN và trong kịch bản xác định việc sử dụng file này.
Phương pháp sử dụng file DSN có lợi điểm là: Người lập trình không cần phải
khai báo DSN tường minh bằng chương trình ODBC trên server.
6
Sử dụng MS-OLEDB provider
Microsoft OLEDB provider cho phép có thể đặc tả các tham
số để kết nối tới bất kỳ một CSDL nào thông qua ODBC.
Cú pháp của chuỗi đặc tả kết nối tới CSDL MS-Access,
không có khai báo DSN tường minh như sau:
“DBQ=Duong_dan_toi_file_mdb;Driver={Microsoft
Access Driver (*.mdb)};
Khi sử dụng một đối tượng ADO, cũng giống như
việc sử dụng các component khác, chúng ta phải
tạo các biến thể hiện của chúng. Cú pháp chung
cho việc tạo thể hiện là:
Tên_ThểHiện=Server.CreateObject(“ADODB.Tên_
ĐốiTượng”);
Ví dụ:
Tạo đối tượng Connection có tên là Conn:
Conn=Server.CreateObject(“ADODB.Connection”);
Tạo đối tượng Recordset có tên là Rs:
Rs=Server.CreateObject(“ADODB.Recordset”);
Tạo đối tượng Command có tên là Comm:
Comm=Server.CreateObject(“ADODB.Command”);
9
II. Sử dụng các đối tượng Connection và
Recordset
Trong phần này, chúng ta sẽ sử dụng các đối tượng
Connection, Recordset để tạo các trang .asp có khả
năng thực hiện các thao tác: cập nhật, thêm, xóa và
liệt kệ các record trong một cơ sở dữ liệu .mdb
10
1. Cơ sở dữ liệu ví dụ
Giả sử có một cơ sở dữ liệu (đơn giản) lưu trữ thông tin về
các mặt hàng mà một công ty muốn trình bày trên web site
của họ. Luợc đồ của CSDL này được miêu tả như sau:
1. MAT_HANG(MaMH, TenMH, GiaMH, TinhNang, MaLoai,
SoLGH, DonVi, MaTien)
Ý nghĩa: MAT_HANG lưu trữ các mặt hàng có trong kho. Mỗi
mặt hàng gồm có các thông tin như: Mã mặt hàng (MaMH,
Autonumber), Tên mặt hàng (TenMH, text), Giá thành mặt
vấn SQL hoặc các đối tượng ADO.
3. Đóng kết nối.
13
2. Đối tượng Connection
Đối tượng Connection được sử dụng để tạo, duy trì và đóng một cầu nối từ
chương trình tới CSDL thông qua phương thức ODBC. Đối tượng
Connection cũng dùng để thực hiện các thao tác quản lý transaction và
thực hiện lệnh truy vấn SQL. Phần này sẽ hướng dẫn sử dụng đối tượng
Connection để: Tạo và duy trì cầu nối ODBC, đóng cầu nối và thực hiện
lệnh truy vấn SQL.
Thiết lập kết nối
Sau khi đã có một thể hiện của đối tượng Connection, ta có thể thiết lập
kết nối tới CSDL bằng phương thức Open, với cú pháp như sau:
TênConnection.Open([ConnectionString][, UserID][, Password]);
Trong đó:
UserID: tên tài khoản được phép sử dụng CSDL. Tham số này là tùy chọn.
Password: Mật khẩu của tài khoản UserID. Tham số này là tùy chọn.
ConnectionString: Tham số này có thể không có, nếu đã khởi động giá trị
cho thuộc tính ConnectionString của đối tượng Connection. Giá trị của
tham số này (của thuộc tính) là một chuỗi đặc tả thông tin của kết nối.
Chuỗi này có thể là một tên DSN hoặc một chuỗi xác định cụ thể các thông
tin kết nối.
14
Ví dụ 1:
Tạo kết nối tới CSDL mydb.mdb thông qua ODBC, sử dụng tên DSN,
bao gồm các bước sau:
Khai báo ODBC Data Source Name.
Sau khi khai bao, giả sử chúng ta có một DSN tên là: “MYDATA”.
Khai báo này chỉ thực hiện một lần, khi đưa cơ sở dữ liệu mới lên server.
Mở kết nối. Có thể thực hiện bằng hai cách sau:
SafeTransactions=0
PageTimeout=5
FILL=MS Access
DriverId=25
MaxScanRows=8
axBufferSize=512
ImplicitCommitSync=
17
Bước 2. Thực hiện kết nối.
<%
Conn=Server.CreateObject("ADODB.Connection");
DBPath=Server.MapPath("mydb.mdb");
DSNPath=Server.MapPath("mydata.dsn");
Conn.ConnectionString="fileDSN="+DSNPath+";DBQ="+DBPath;
Conn.Open();
%>
18
Ví dụ 3:
Tạo kết nối tới CSDL mydb.mdb thông qua ODBC bằng cách đặc tả chuỗi
ConnectionString.
<%
DBPath = Server.MapPath("mydb.mdb");
Conn = Server.CreateObject("ADODB.Connection");
ConString=’’DBQ=’’+DBPath +’’;Driver={Microsoft Access Driver (*.mdb)};’’;
Conn.ConnectionString=ConString;
Conn.Open();
%>
19
<%
var sqlconnection;
tục (stored-procedure)…
LoạiLệnh: là hằng số, xác định CâuLệngSQl, cụ thể là câu truy vấn hay tên
bảng hay tên thủ tục…. Các giá trị tương ứng là:
0: Câu truy vấn
1: Tên bảng
2: tên stored-procedure
3: Là chuỗi đặc tả thực thi chưa biết.
Giá trị mặc nhiên là 0.
SốRecord: Là một biến nguyên, được khởi động giá trị là 0, trước khi thực thi.
Sau khi thực thi, có giá trị là số Record mà lệnh SQL tác động tới.
22
Ví dụ 5:
Đoạn chương trình chèn một record vào bảng LOAI_HANG trong CSDL.
<%
DBPath = Server.MapPath("mydb.mdb");
Conn = Server.CreateObject("ADODB.Connection");
ConString="DBQ="+DBPath +";Driver={Microsoft Access Driver (*.mdb)}; ’’;
Conn.ConnectionString=ConString;
Conn.Open();
SQL=’’ insert into LOAI_HANG(TenLoai) values (‘Noi Com Dien’)’’;
Conn.Execute(SQL);
Conn.Close();
%>
Chú ý: Vì thuộc tính MaLoai có kiểu là autonumber, nên khi thực hiện insert, ta
không điền giá trị cho thuộc tính này.
23
Ví dụ 6: Tạo trang web có tên là LoaiHang.htm cung
cấp form để điền tên loại hàng, sau khi submit sẽ gửi
dữ liệu tới trang insertLH.asp, trang này thực hiện
thêm tên loại hàng nhận được vào CSDL.
}
Response.redirect("loaihang.htm");
%>
25
3. Đối tượng Recordset
Sử dụng đối tượng Connection như trong phần trên ta đã có thể thực
hiện các thao tác chèn, xóa và sửa chữa dữ liệu trong CSDL bằng các
câu lệnh SQL. Việc liệt kê giá trị của các record trong CSDL sẽ sử dụng
các truy vấn dạng SELECT, kết quả của một truy vấn SELECT sẽ trả về
là một tập hợp các record theo yêu cầu của truy vấn. Để có thể dễ dàng
duyệt, hiển thị các record được trả về từ một truy vấn SELECT, ADO
cung cấp đối tượng Recordset là một kiểu danh sách lưu trữ tập các
record này.
Đối tượng Recordset thể hiện một cursor-list lưu trữ tập các record nhận
về từ cơ sở dữ liệu sau khi thực hiện một truy vấn SQL dạng SELECT.
Recordset có thể được coi là một bảng ảo và có một con trỏ luận lý
(tương tự như khái niệm con trỏ file) để dễ dàng duyệt các record trong
danh sách.
Recordset làm việc với cơ sở dữ liệu dựa trên một cầu nối đã được mở
(Actived Connection object).