Tài liệu tham khảo kỹ thuật công nghệ, chuyên ngành tin học Phần mềm xây dựng Website Tuyển Dụng Lao Động Trên Mạng Interne
Trang 1Phần mềm xây dựng Website Tuyển Dụng Lao ĐộngTrên Mạng Interne
Lời Cảm Ơn
Em xin chân thành cảm ơn quí thầy cô đã giúp đỡ em thực hiện đềtài này Đặc biệt thầy Vũ Thành Nam đã tận tình giúp đỡ, chỉ bảoem Em xin chân trọng cảm ơn những tình cảm quí báu mà các thầycô cùng các bạn đã truyền đạt cho em, những kinh nghiệm, kỹ thuậtvà cách thức trong việc xây dựng đề tài này.
Tuy nhiên, do thời gian có hạn nên em không thể phát huy hết nhữngý tưởng, khả năng hỗ trợ của ngôn ngữ và kỹ thuật lập trình vào đồán Trong quá trình xây dựng chương trình, không thể tránh khỏinhững sai xót, mong nhận được sự đóng góp và cảm thông của quíthầy cô và các bạn.
Em xin chân thành cảm ơn Nguyễn Xuân Trung-Tin quản lý-K44
Trang 2Chương 2: GIỚI THIỆU VỀ ADO
1.Tại sao lại sử dụng ADO và ADO là gì:
Trải qua một quá trình phát triển khá dài ,công nghệ tin học đã chứngtỏ cơ sở dữ liệu là cực kỳ quan trọng và cần thiết đối với hầu hết các ứngdụng máy tính.KhởI thủy các chương trình đơn giản sử dụng file văn bản(text file) làm nơi lưu dữ liệu Những ứng dụng hiện đại như Foxpro,Accesssử dụng hẳn tập tin với cấu trúc đặc biệt làm nơi chứa dữ liệu Những filenày được gọi là cơ sở dữ liệu Phát triển hơn nữa ,các hệ cơ sở dữ liệu quanhệ chuyên nghiệp hơn ra đờI phục vụ cho nhu cầu lưu trữ dữ liệu lớn và truyxuất nhanh như SQL Server ,Oracle,DB2,…Khó khăn lớn nhất khi lập trìnhtruy cập cơ sở dữ liệu đó là cơ chế kết nốI ,đọc và xử lý dữ liệu từ các filecủa các hệ quản trị cơ sở dữ liệu Chúng có cấu trúc khác nhau và có cáchxử lý riêng biệt
Điểm chung nhất mà các hệ cơ sở dữ liệu có thể tương đồng đó là khảnăng sử dụng ngôn ngữ truy vấn chuẩn SQL Tuy nhiên ,để kết nốI và sửdụng được câu lệnh SQL tác động vào cơ sở dữ liệu ,lập trình viên cần sửdụng các trình điều khiển do mỗI hệ quản trị cơ sở dữ liệu cung cấp Họccách sử dụng các hàm của trình điều khiển là công việc không mấy dễ dàngđốI vớI các nhà phát triển ứng dụng Microsoft đã giảI quyết vấn đề nàybằng cách xây dựng một tập các hàm giao tiếp tổng quát (API-ApplicationProgramming Interface)dành cho kết nốI và truy xuất dữ liệu Các hệ dữ liệumuốn những chương trình windows có khả năng truy xuất dữ liệu của mìnhmột cách thống nhất cần viết chương trình điều khiển cài đặt theo giao tiếpcủa những hàm API này Đây chính là mô hình hoạt động của cơ chế cầunốI ODBC (Open Database Connectivity).ODBC cho phép ứng dụng dùngmột cách truy xuất duy nhất kết nốI đến mọI hệ cơ sở dữ liệu Nó được xemlà cầu nốI giữa ứng dụng và cơ sở dữ liệu Sử dụng ODBC lập trình viênkhông cần quan tâm đến sự khác biệt của các hệ dữ liệu Trình điều khiểnODBC do nhà phát triển hệ dữ liệu cung cấp sẽ chịu trách nhiệm giao tiếpvớI bạn thông qua ngôn ngữ SQL do các hàm API của Windows quản lý.
Tuy nhiên ,ODBC tỏ ra quá chậm và không hiệu quả Microsoft tiếnxa hơn nữa ,xây dựng cầu nốI và tập các hàm truy xuất dữ liệu tổng quát ởdạng đốI tượng gọI là OLEDB Đây là các đốI tượng xây dựng theo mô hìnhCom (Component Object Model) hoạt động gắn liền vớI hệ điều hành ,cho
Trang 3lập trình viên C và C++.ADO(ActiveX Data Object)là lớp đốI tượng đơngiản hóa hơn cho giao tiếp OLEDB cấp thấp Thật sự ADO đơn thuần chỉ làđối tượng Com tập chung vào xử lý dữ liệu thông qua OLEDB củaWindows.
1.1Kiến trúc ADO:
Để hiểu rõ cách sử dụng của ADO ta phảI tìm hiểu qua về kiến trúc
của ADO hình sau là mô hình kiến trúc của ADO tương tác giữa ứngdụng và nguồn dữ liệu (data store),khái niệm nguồn dữ liệu là để chỉ mọIloạI dữ liệu và nơi chứa thông tin có thể truy xuất được ADO thiết kế chomục đích truy xuất dữ liệu tổng quát ,không chỉ dùng xử lý các hệ cơ sở dữliệu thuần túy ,bạn còn có thể dùng ADO để truy xuất dữ liệu email ,dữ liệufile hay bất kỳ loạI dữ liệu nào hỗ trợ cơ chế cho phép giao tiếp thông quaOLEDB.
Data store
(Kiến trúc ADO và OLEDB)
1.2Trình tiêu thụ(consumer) và trình cung cấp(provider):
Mô hình kiến trúc ADO ở hình trên cho thấy cách ADO làm việc nằm Application
ADO
OLE DB
File System CSDL
liệu file ,cơ sở dữ liệu …Trong thế giớI lập trình chương trình chính làtrình tiêu thụ dữ liệu (data consumer)bởI nó cần truy xuất vào các nguồndữ liệu để xử lý ,còn trình cung cấp dữ liệu là tập lệnh cho phép truy xuấtvào nguồn dữ liệu (data store) theo cách đặc trưng của chúng Provider chophép giao tiếp giữa nguồn dữ liệu và tầng điều khiển OLE DB ADO chỉtrao đổI vớI nguồn dữ liệu thông qua OLE DB mà không cần quan tâm đếncách thức làm việc của Provider Chính điểm này làm cho ADO mang tínhtổng quát và không phụ thuộc vào nguồn chứa dữ liệu Để giúp OLE DBbiết được Provider nào cần phảI giao tiếp ,khi mở kết nốI ADO ta phảI chỉđịnh trình cung cấp dữ liệu Provider tương ứng Microsoft cung cấp sẵnmột số Provider cho phép truy xuất dễ dàng vào các nguồn dữ liệu đangthông dụng như sau:
oJet OLE DB 4.0-Cơ sở dữ liệu MS Access
oDTS Packages-Dịch vụ chuyển đổI dữ liệu trong SQL Server
oODBC Driver-Provider cho phép truy xuất nguồn dữ liệu thông quaODBC
oSQL Server-Cơ sở dữ liệu SQLoOracle-Cơ sở dữ liệu Oracle
oSimple Provider-Truy xuất dữ liệu dạng text
oIndex Service-Sử dụng cho dịch vụ tìm kiếm site server
oMicrosoft Directory Service-Sử dụng cho truy xuất dịch vụ thư mụccủa Windows 2000
Danh sách này sẽ được mở rộng bằng các nhà cung cấp khác.
1.3Trình cung cấp(Provider) và trình điều khiển (driver):
Ta cần phảI phân biệt giữa trình cung cấp và trình điều khiển Về ýnghĩa thì cả hai đều có mục đích như nhau đó là cho phép các chươngtrình ngoài cũng như hệ điều hành giao tiếp vớI nguồn dữ liệu thông quahàm xử lý trực tiếp (native).Tuy nhiên Provider hướng đến tính tổng quátcủa OLE DB trong khi trình điều khiển cơ sở dữ liệu Driver lạI nhắm vàogiao tiếp chung cho thành phần kết nốI theo kiến trúc ODBC Điều quantrọng đó là Provider mang tính tổng quát hơn Driver Bạn có thể dùngODBC Provider để truy xuất dữ liệu thông qua các trình điều khiểnDriver cho cơ chế ODBC.Hình sau sẽ minh họa rõ khái niệm này.
Do ODBC đã khá phổ biến và nhiều trình điều khiển hỗ trợ nó nên cho đếnkhi nhà cung cấp đưa ra một Provider mớI tương thích vớI cơ sở dữ liệu củahọ ,chúng ta chỉ có cách sử dụng ADO kết nốI vào nguồn dữ liệu thông qua
Trang 5ODBC yêu cầu các trình điều khiển Driver bên dướI tiếp cận vớI cơ sở dữliệu mà nó quản lý
OLE DB Layer
(Provider vàDrivers)
Rõ ràng sử dụng ODBC Driver sẽ chậm hơn trình cung cấp OLE DBProvider cho phép truy xuất trực tiếp (do phảI qua lớp trung gian của trìnhđiều khiển ODBC ).Tuy nhiên ODBC Provider giúp ADO tiếp cận vớI mọInguồn dữ liệu thông dụng nhất trên Windows dựa vào trình điều khiểnODBC sẵn có trong khi chờ nhà cung cấp đưa ra một phiên bản tiếp cận vớIdữ liệu bằng OLE DB Provider khác.
2.Mô hình đối tượng ADO 2.5:
Hình sau mô tả mối quan hệ giữa các đối tượng ADO Trước khi tìm hiểucách sử dụng chi tiết những đối tượng này trong trang ASP ta sẽ xem quatổng quan và mục đích sử dụng của chúng.
2.1 Đối tượng Connection(kết nối):
Đối tượng Connection cho phép thực hiện việc mở kết nối đến nguồndữ liệu cần truy xuất.Thông qua đối tượng Connection ta chỉ định trình cungcấp OLE DB 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ư: Tên đăng nhập cơ sở dữ liệu (username),mật
ADOOLE DB
SQL
Trang 6được lưu vào một chuỗi gọi là chuỗi kết nối (connection string).Một lưu ý làđể kết nốI và truy xuất vào nguồn dữ liệu ,không bắt buộc phảI tạo ra đốItượng Connection Các đốI tượng như Command ,Recordset,Record…cũngcho 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 ta tách biệt thao tác kết nốI và thao tác truy xuất 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ụngkhác như cho phép thực thi câu lệnh SQL tác động lên dữ liệu(Insert,Update,Delete,gọI thủ tục nộI Store Procedure…)hoặc kiểm soát giaotác (transaction) như Rollback(hủy mọi thay đổi lên dữ liệu ),Commit(xácnhận thay đổi)…
2.2 Đối tượng Command (lệnh thực thi):
Mặc dù ta có thể sử dụng đốI tượng Connection để thực hiện các lệnhSQL ,nhưng tốt nhất ta chỉ nên dùng đốI tượng Connection cho mục đích kếtnốI ĐốI tượng Command sẽ được dùng cho mục đích thực thi lệnh tốthơn.Khi đốI tượng Connection thực thi lệnh ,mặc định Connection sẽ khởItạo và gọI đến đốI tượng Command.
ĐốI tượng Command cho phép chuyển tham số vào các lệnh thực thiSQL Tham số có thể chỉ định kiểu và giá trị tường minh Các tham số cóthể nhận trị trả về sau khi thực thi…ĐốI tượng Command có thể dùng chohai mục đích:Thực thi các lệnh SQL không cần nhận kết quả trả về(nhưInsert,Update,Delete,Các thủ tục Store Proceduce)hoặc thực thi các lệnh trảvề tập Recordset như lệnh Select.
2.3.Đối tượng Recordset(tập các mẩu tin):
Recordset có thể nói là đốI tượng được sử dụng thường xuyên nhất trongADO ĐốI tượng này cung cấp cho ta kết quả trả về từ câu lệnh truy vấn mộttập các mẩu tin Trang ASP có thể dùng vòng lặp duyệt qua các mẩu tin nàyvà hiển thị dữ liệu kết xuất ra trang web phía trình duyệt Ngoài ra Recordsetcòn cho phép lọc dữ liệu (filter)từ tập các mẩu tin ,truy xuất đến từng trườngcụ thể của mẩu tin thông qua đốI tượng Field hoặc danh sách các trườngtrong trong mẩu tin thông qua đốI tượng Fields.
2.4.Đối tượng Record (mẩu tin):
ĐốI tượng Record cho phép ta truy cập chi tiết đến thông tin của từngmẩu tin Thật sự nếu chỉ dùng đến loạI dữ liệu dạng bảng của cơ sở dữ liệuthì có thể không cần dùng đến đốI tượng Record Tuy nhiên đốI tượngRecord giúp ta truy xuất tổng quát đến mọI nguồn dữ liệu không riêng gì dữliệu bảng Hãy hình dung nếu ta muốn truy xuất nộI dung của nguồn dữ liệulà thư mục thì sao?Thư mục có thể xem là một bảng dữ liệu vớI danh sáchfile là các mẩu tin (Record ).Tuy nhiên ,mỗI mẩu tin của file trong thư mục
Trang 7thước file …Thông tin về mỗI mẩu tin biểu diễn cho file có thể khác nhauvề quyền truy xuất trên file ,nộI dung file.ĐốI tượng Record sẽ giúp thể hiệnsự khác biệt này của từng mẩu tin thông qua phương thức và thuộc tính Nếuchỉ sứ dụng và truy xuất mẩu tin thông qua Recordset theo cách thôngthường bạn sẽ không xử lý được
2.5.Đối tượng Stream(Luồng):
ĐốI tượng Stream cho phép biểu diễn nộI dung của một nút (node)dữ liệu.Cụ thể thông qua Stream ,bạn có thể xem và truy xuất được các loạI dữ liệunhị phân không thuộc dạng bảng như nộI dung file,e-mail,trang web,dữ liệuXML…ĐốI tượng Stream thường được kết hợp xử lý thông qua đốI tượngRecord và Recordset
2.6.Đối tượng Collections(Tập hợp):
Thư viện ADO cung cấp rất nhiều loạI tập hợp MỗI tập hợp có thể nắmgiữ một hoặc nhiều đốI tượng khác thậm chí có thể là một tập hợp rỗngkhông chứa phần tử nào cả.Bạn có thể dùng vòng lặp để duyệt qua các phầntử trong tập hợp theo cấu trúc sau:
ĐốI với VBScript:
For each Object In Collection
‘Sử lý nộI dung của phần tử đốI tượng Object trong tập hợp Next
Ví dụ để duyệt qua tập hợp Fields chứa các trường trong recordset mangtên rs
For each objField In rs.Fields
Reponse.write objField.Name &”<BR>” Next
Thư viện ADO cung cấp các tập hợp thường xuyên sử dụng là :
oĐối tượng tập hợp Fields:Chứa danh sách các trường trong bảng dữliệu
oĐốI tượng tập hợp Parameters:Chứa danh sách các tham số sử dụngtrong câu lệnh SQL
oĐối tượng tập hợp Errors:Chứa danh sách các lỗi ,ta có thể duyệt quađối tượng tập hợp Errors để biết các lỗi mà các đối tượng ADO gặpphải trong quá trình triệu gọi hoặc thực thi lệnh
oĐối tượng tập hợp Properties:Chứa danh sách các thuộc tính có thểdùng chung giữa các đối tượng
2.7.Các hằng ADO:
Trang 8Khi sử dụng ADO ,ta sẽ cần dùng đến rất nhiều loại hằng số để thiết lậpcho các tham số tùy chọn dành cho phương thức của đối tượng Ví dụ cursortype,Lock type.ASP không tự động định nghĩa sẵn các hằng này.Ta dùng chỉthị <!—INCLUDE FILE =”adovbs.inc” >để khai báo đưa vào danh sáchcác hằng ADO cần sử dụng Một cách khác để khai báo hằng là tham chiếutrực tiếp đến thư viện định nghĩa kiểu (type library)bằng thẻ METADATAnhư sau:
<!—METADATA TYPE=”typelib” FILE=”C:\Program Files\CommonFiles\System\ado\msado15.dll” >
3.Kết nối với nguồn dữ liệu: 3.1.Chuỗi kết nối :
Chuỗi kết nối như đã đề cập ở phần trên ,nó cung cấp thông tin chođối tượng Connection biết đặc điểm của cơ sở hay nguồn dữ liệu mà ADOcần truy xuất ,dưới đây là một số kết nối đến các loại cơ sở dữ liệu thôngdụng:
Cơ sở dữ liệu MS Access
Connstr=”Provider=Microsoft.Jet.OLEDB.4.0;Data Source=”” Set conn=Server.CreateObject(“ADODB.Connection”)
Conn.open connStr
Cơ sở dữ liệu MS SQL Server
Connstr=”Provider=SQLOLEDB;Data Source=servername; Initialcatalog=database_name;user ID=user_name;PWD=user_password”
Set conn=Server.CreateObject(“ADODB.Connection”) Conn.open Connstr
Cơ sở dữ liệu Oracle:
ADODB hỗ trợ truy xuất cơ sở dữ liệu nổi tiếng Oracle thông quachuỗi kết nối OLEDB như sau :
connstr=”Provider=MSDAORA.1;Data Source=orcl;UserID=scott;PWD=;Persist Security Info=False”
Set conn=Server.CreateObject(“ADODB.Connection”) Conn.open connstr
Cơ sở dữ liệu MS Access thông qua trình điều khiển ODBC
ConnStr=”Driver=Microsoft Access Driver(*.mdb);DBQ=databasepath”
Set Conn=Server.CreateObject(“ADODB.Connection”)
Trang 9Nếu nguồn dữ liệu không hỗ trợ OLE DB ta có thể sử dụng ADO thông quaODBC theo cách tổng quát :
Kết nối tổng quát thông qua ODBC: <%
strconn =”Provider=MSDASQL.1;Persist Security Info=False;DataSource=database_name”
%>
set conn=Server.CreateObject(“ADODB.Connection”) conn.open connstr
3.2.Sử dụng chỉ thị include:
Thông thường hầu hết các trang ASP sử dụng đối tượng Connectionvà Recordset đều mở kết nối theo cùng cách Để tránh lập lại mã ,ta có thểđưa các lệnh tao Connection và Recordset vào một trang riêng ,tiếp đếndùng chỉ thị include để đưa trang này vào các trang ASP sử dụng ADOkhác.Một cách làm khác là lưu chuỗi kết nối trong trong biến toàn cụcApplication của file global.asa sao cho tất cả các trang ASP khác đều thấyvà truy xuất được Ví dụ:
Sub Application_Onstart()
Strconn=”Provider=SQLOLEDB.1; Data Source=local host;UserID=sa;PWD=;Initial Catalog=database_name”
Set Application(“ConnectionString”)=StrconnEnd sub
Tiếp đến trong trang ASP ta tạo đối tượng Connection và gọi kết nối nhưsau:
Set conn=server.CreateObject(“ADODB.Connection”) Conn.open Application(“ConnectionString”)
3.3.Đóng và chia sẻ kết nối (Share Pooling):
Sau khi mở kết nối và xử lý xong dữ liệu ta nên đóng kết nối lại bằngcách gọi phương thức close của đối tượng Connection như sau:
Set conn=server.CreateObject(“ADODB.Connection”) Conn.open strconn
‘Xử lý truy xuất dữ liệu ‘Ví dụ
‘rs.open “SELECT * PRODUCTS”,conn ‘Đóng kết nối
Trang 10Đóng kết nối sẽ giải phóng tài nguyên giúp cơ sở dữ liệu thao tác và xử lýnhanh hơn .Thực tế khi ta gọi phương thức close của đối tượngConnection ,kết nối sẽ được trả về cho bộ quản lý tài nguyên Do việc mởmột kết nối chiếm nhiều tài nguyên cũng như đòi hỏi hệ thống phải quản lýchặt chẽ Một khi kết nối được mở nó sẽ giữ nguyên và hoạt động trong suốtứng dụng ,mỗi thời điểm chỉ có một trang là được chiếm giữ kết nối (Bằngcách gọi phương thức open của đối tượng Connection ).Nếu đã hoàn tất quátrình xử lý liên quan đến cơ sở dữ liệu ,ta nên gọi phương thức close càngsớm càng tốt để trả kết nối về cho hệ thống phục vụ các trang khác.Nếukhông gọi phương thức close ,kết nối sẽ bị chiếm giữ cho đến khi toàn bộnội dung của trang được thực thi xong Khi đó nếu có một trang khác cầnkết nối vào cơ sở dữ liệu hệ thống phải sử dụng thêm tài nguyên để tạo kếtnối mới Cơ chế dùng chung kết nối được gọi là Share Pooling.Chúng rấtđược quan tâm trong môi trường ứng dụng cơ sở dữ liệu với số lượng ngườidùng và yêu cầu xử lý lớn
4.Sử dụng Recordset : 4.1.Tạo Recordset:
Có thể nói Recordset là đối tượng được sử dụng thường xuyên nhấttrong ADO .Recordset cho phép xem và trích rút dữ liệu theo dạngbảng Mặc dù đối tượng Connection cũng có khả năng thực thi câu lệnhSQL và trả về tập dữ liệu tương tự Recordset nhưng sử dụng Recordset hiểuquả và linh động hơn Đối tượng Recordset được tạo ra như sau:
Set rs=server.createobject(“ADODB.recordset”)
Để trích rút dữ liệu từ một bảng nào đó trong cơ sở dữ liệu ,thường ta kếthợp đối tượng Connection vào câu lệnh SQL Select trong phương thức opencủa đối tượng Recordset
4.2.Duyệt qua các mẩu tin trong Recordset:
Để đi đến từng mẩu tin trong Recordset chúng ta dùng vòng lặpWhile và kiểm tra xem đã đến mẩu tin cuối cùng chưa dựa vào thuộc tínhEOF
4.3.Truy xuất các trường của mẩu tin:
Ta có thể chỉ định trực tiếp tên trường cần truy xuất ngay trong đốitượng Recordset.Tuy nhiên ta cũng có thể sử dụng đối tượng tập hợp Fieldsđể truy xuất nội dung của một trường trong mẩu tin theo nhiều cách
4.4.Lọc các mẩu tin trong Recordsets:
Điều kiện lọc các mẩu tin(Chỉ chọn ra các mẩu tin thỏa điều kiệnnhất định)có thể thực hiện ngay trong mệnh đề Where của câu lệnh SQL khi
Trang 11Hoặc ta có thể sử dụng thuộc tính lọc(Filter) của Recordset để chỉ định điềukiện lọc sau khi đã trích xuất dữ liệu Ví dụ:
Thuộc tính Filter cho phép sử dụng các mệnh đề lọc tương tự mệnh đềWhere của câu lệnh SQL
4.5.Tìm kiếm trên Recordset :
Để tìm kiếm trên recordset ta có thể sử dụng phương thức find Ví dụđể tìm sản phẩm mang mã số ‘11’trong recordset ta gọi phương thức findnhư sau:
Rs.find “Productcode=’11’
Tuy nhiên trong thực tế find ít được sử dụng đến Để tìm một mẩu tinthực tế ,câu lệnh SQL được sử dụng trực tiếp dựa vào mệnh đề Where Vídụ:
Thuộc tính lọc cũng có thể được sử dụng cho mục đích tìm kiếm mẩu tintrên Recordset.
5.Hiệu chỉnh các mẩu tin:
Có hai cách thực hiện việc hiệu chỉnh các mẩu tin trong bảng dữ liệu (Baogồm các thao tác như tạo mới mẩu tin ,thay đổi nội dung mẩu ,xóa mẩutin ):Thứ nhất dựa vào các phương thức AddNew,Update,Delete của đốItượng Recordset .Thứ hai là triệu gọi các câu lệnh SQL trực tiếp nhưINSERT,UPDATE,DELETE thông qua đối tượng Command hoặcConnection.Ví dụ:
6.Thực thi câu lệnh SQL với tham số bằng đối tượng Connection vàCommand:
6.1.Thực thi lệnh bằng Connection và Command:
Ngoài việc thực thi các câu lệnh SQL không trả về kết quả nhưINSERT,UPDATE,DELETE đối tượng connection còn có thể truy vấn dữliệu SQL bằng câu lệnh SELECT .Thực tế ta có thể gọi đối tượngconnection thực thi lệnh SELECT trả về tập Recordset như sau :
Set rs=conn.execute(“Câu lệnh SQL”)
Tuy nhiên đối với câu lệnh SELECT ,phương thức open của đối tượngrecordset lại sử dụng thường xuyên và hiểu quả hơn (thực tế khi thực hiệnlệnh SELECT đối tượng Connection tự động tạo ra đối tượng Recordset ẩndanh).
Trang 12Ta có thể sử dụng đối tượng thực thi lệnh Command thay cho Connection.Đối tượng Command cho phép thực thi tất cả các lệnh SQL và các thủ tụcStore Procedure của cơ sở dữ liệu
Tạo và sử dụng đối tượng Command như sau : 6.2 Thực thi lệnh SQL vớI tham số :
Trường hợp thủ tục Store Procudure hoặc câu lệnh SQL yêu cầu thamsố như trường hợp sau :
CREATE PROCEDURE update_account @m_password VARCHAR(10),
@m_username VARCHAR(10) AS
UPDATE password SET password=@m_password WHERE username=@m_username
Ở đây @m_password và @m_username là các tham số truyền vào từ bênngoài khi thủ tục được gọi Bằng cách sử dụng đối tượng command ,ta cóthể tạo ra đối tượng parameters và thêm vào tập hợp các giá trị tham sốtrước khi thực thi thủ tục như:
‘Tạo và gán giá trị cho tham số :
setuser=CmdUpdate.CreateParameter(“@m_username”,adVarchar,adParamInput, ,”mkuser”)
setpwd=CmdUpdate.CreateParameter(“@m_password”,adVarchar,adParamInput, ,”newpassword”)
‘Đưa tham số vào đốI tượng command cmdUpdate.Parameters.Append user cmdUpdate.Parameters.Append pwd‘Thực thi câu lệnh
cmdUpdate.CommandText=”update_account” cmdUpdate.CommandType=adCmdStoredProc cmdUpdate.execute
7.Phân trang với đối tượng Recordset:
Khi trích rút dữ liệu bằng đối tượng Recordset hoàn tất,ta thường dùngvòng lặp While để duyệt qua các mẩu tin(record)nhằm kết xuất thông tintrong các trường gửi về trình khách Trong trường hợp kết quả mà Recordset
Trang 13một số lượng nhất định các mẩu tin ,ví dụ như ,nếu recordset trả về kết quảbao gồm có 1000 mẩu tin mà ta chỉ muốn hiển thị phía trình khách mỗi lần15 hoặc 20 mẩu tin mà thôi Nếu người dùng muốn xem tiếp họ có thể clickvào các liên kết để đi đến trang kế tiếp (next)hoặc trở về các mẩu tin đã xemtrước đó (previous).Phân trang khi hiển thị các mẩu tin là công việc thườngxuyên phải làm đối với các ứng dụng cần phải trình bày khối lượng dữ liệulớn.Đối tượng Recordset cung cấp cho ta ba thuộc tính quan trọng sau đâyđể sử dụng cho việc phân trang:
PageSize:Kích thước mẩu tin trong một trangPageCount:Tổng số trang Recordset truy vấn được
AbsolutePage:Chỉ định trang hiện hành đang cần đọc thông tin
Để Recordset có khả năng phân trang ,ta cần thiết lập thêm tham số choRecordset trước khi thực hiện truy vấn.
Rs.CursorLocation =3 ‘Có thể sử dụng hằng adUseClientRs.pageSize =15 ’15 record trong một trang
Tiếp theo ta mở đối tượng Recordset truy vấn dữ liệu với tùy chọn là cáchằng adOpenForwardOnly(0),adLockReadOnly(1) truyền cho phương thứcOpen như sau :
Rs.Open sqlStr,conn,0,1
Công việc sau cùng là định vị trang cần hiển thị thông qua thuộc tínhAbsolutePage.Chúng ta lưu lại vị trí hiện hành của trang dữ liệu thông quagiá 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 click vào Hyperlink Next hoặc Previous di chuyểngiữa các trang Ví dụ:
8.Quản lý lỗi khi sử dụng các đối tượng ADO:
Trong quá trình triệu gọi các đối tượng ADO ta có thể gặp các lỗi như kếtnối không hợp lệ ,câu lệnh SQL truy vấn không đúng cú pháp …Để đón bắtlỗi ,cách tốt nhất là sử dụng lệnh On Error Resume Next ,tiếp đến duyệt quađối tượng tập hợp Errors để biết được thông tin lỗi .Ví dụ ,đối tượngRecordset sau đây sử dụng lệnh SELECT truy vấn cột dữ liệu không cóthật ,khi lỗi phát sinh ,hàm CheckForErrors sẽ duyệt qua đối tượngActiveConnection in ra thông báo lỗi
<%
On Error Resume Next …
set rs=Server.CreateObject(“ADODB.Recordset”) sqlStr=”SELECT x,y,username FROM Accounts”
Trang 14‘Cột dữ liệu x,y không có thật trong bảng Accounts rs.open sqlStr ,conn
if CheckForErrors(rs.ActiveConnection)=False then Reponse.Write “Query Success”
End if %>
Hàm CheckForErrors được xây dựng như sau:<%
Function CheckForErrors(objConn) ‘Nếu có lỗi
If objConn.Errors.count >0
For Each E in objConn.Errors
Reponse.Write E.source + E.Description+”<br>” Next
End if
End Function %>
Trang 15
Chương III: PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG
1.PHÂN TÍCH HỆ THỐNG:1.1Khảo sát yêu cầu :
1.1.1Yêu cầu của một trang web tuyển dụng lao động:
Xây dựng một trang web tuyển dụng lao động trên mạng internet là đềtài trong đó chủ yếu là xử lý quy trình đăng thông tin (thông tin tìmviệc,thông tin tuyển dụng),lưu trữ và hiển thị thông tin của người lao độngcó nhu cầu tìm việc và của các nhà tuyển dụng lao động lên mạnginternet.Ta có thể hiểu quy trình này gần giống như quy trình người laođộng tìm việc thông qua các công ty môi giới việc làm ,cũng như quy trìnhkhi các nhà tuyển dụng thông qua các trung tâm môi giới việc làm để tuyểnngười lao động .Qua internet khách hàng(người tìm việc,nhà tuyểndụng),thực hiện việc đăng ký tài khoản trên web site bằng cách nhập vào cácthông tin cần thiết trên web site,sau đó website sẽ dựa vào các thông tinnày(địa chỉ email),để gửi đến người dùng một thư điện tử có chức năng kíchhoạt tài khoản đã đăng ký,sau khi kích hoạt tài khoản ,khách hàng (ngườitìm việc,nhà tuyển dụng),sẽ có thể thực hiện các chức năng như:Đăng tảithông tin (thông tin tìm việc,thông tin tuyển dụng) lên website,cập nhật cácthông tin đã đăng ký.Ngoài ra vì đây là một website thương mạI cho nên nóphảI được thiết kế sao cho không những dễ sử dụng ,không có các thao tácthừa mà còn hấp dẫn được ngườI truy cập,thể hiện ở cách trình bày websitevà nội dung của nó Ta có thể phân tích các vấn đề sau:
1.1.2Phân tích hoạt động của website:
Hoạt động của website bao gồm 3 hoạt động chính:
-Hoạt động của khách hàng(người tìm việc,nhà tuyển dụng) -Hoạt động của nhà quản lý(người thuộc trung tân việc làm) -Hoạt động của nhà quản trị website
1.Hoạt động của khách hàng:
Một khách hàng(người tìm việc,nhà tuyển dụng) khi tham quan website,họsẽ tìm kiếm các thông tin về việc làm mà họ quan tâm(thông tin về các côngty tuyển dụng,thông tin về người lao động vv),sau đó họ có thể thực hiệnviệc đăng ký tài khoản ,để sau đó có thể đăng tin tìm việc,hoặc thông tintuyển dụng lên website.Do đó để đáp ứng các nhu cầu trên của khách hàngwebsite phải cung cấp các thông tin cần thiết ,có giá trị và hơn thế nữa dễthao tác,ngoài ra chức năng tìm kiếm là không thể thiếu để khách hàng cóthể dễ dàng tìm kiếm các thông tin mà mình cần tìm,các chức năng phụ khác
Trang 16như hỗ trợ gõ tiếng việt khi đăng tin vv cũng sẽ làm tăng thêm ấn tượng củakhách hàng đối với website:
Hoạt động của khách hàng bao gồm :
Duyệt website(Xem tin tức,tìm kiếm thông tin)Đăng ký tài khoảnKíchhoạt tài khoản Đăng tải thông tin lên website Cập nhật thông tin(Thêm ,xóasửa các thông tin về tuyển dụng,thông tin tìm việc,mật khẩu đăng nhập)
2.Hoạt động của nhà quản lý:
Nhà quản lý ở đây là người thuộc trung tâm việc làm (chủ sở hữuwebsite),các hoạt động chính của nhà quản lý đó là:
-Gửi thư:Sau khi đăng nhập vào website bằng tài khoản được cấp bởi ngườiquản trị website ,nhà quản lý có thể thực hiện việc gửi thư điện tử cho cácứng viên tìm việc và các nhà tuyển dụng.
-Đăng tin việc làm:Sau khi đăng nhập người quản lý có thể thực hiện chứcnăng đăng thông tin tuyển dụng lên website
-Cập nhật thông tin việc làm:Sau khi đăng nhập người quản lý có thể thựchiện việc cập nhật các thông tin tuyển dụng mà mình đã đăng
3.Hoạt động của nhà quản trị:
Các hoạt động của nhà quản trị bao gồm:
-Gửi mail:Người quản trị có thể gửi thư đến các ứng viên tìm việc hoặcnhà tuyển dụng
-Quản lý CSDL:Người quản trị có thể thực hiện các thao tác thêmxóa ,sửa ,sao lưu ,phục hồi các bảng trong cơ sở dữ liệu
-Sao lưu CSDL:Người quản trị có thể thực hiện việc sao lưu cơ sở dữliệu
-Phục hồi cơ sở dữ liệu:Người quản trị có thể thực hiện chức năngphục hồi cơ sở dữ liệu từ các file đã sao lưu
-Quản lý thông tin của website:Người quản trị có khả năng và quyềnhạn để quản lý mọi thông tin của website,từ các thông tin chung như:Cácthông tin về việc làm do nhà quản lý đưa lên,các thông tin về các lĩnh
Trang 17vực khác(thể thao,văn hóa, vv),các thông tin được đưa lên bởi các kháchhàng đã đăng ký tài khoản(thông tin tuyển dụng,thông tin tìm việc)
1.2.Phân tích hệ thống về xử lý: 1.2.1Sơ đồ phân cấp chức năng:
Qua phân tích hoạt động của website ở phần trên Đầu tiên ta coi cảhệ thống là một chức năng ,sau đó phân rã dần mỗi chức năng lớn thànhnhững chức năng nhỏ hơn ,ta có sơ đồ phân cấp chức năng như sau:
Website tuyển dụng lao động
Chức năng nhà quản trị
Chức năng người quản lý
Chức năng khách hàng
Đăng ký tài khoản
Cập nhật thông tin
Phản hồi(thắc mắc,góp ý)
Gửi thưĐăng tin việc làm
Cập nhật tin việc làm
Sao lưu CSDLPhục hồi CSDLQuản lý cơ sở dữ
tin website
Trang 18Cập nhật thông tin đăng ký
Cập nhật mật khẩu đăng nhập
Người quản lý
Gửi thưĐăng tin việc
làm Cập nhật tin việc làm
Trang 19Sơ đồ chức năng nhà quản trị:
I.2.2Sơ đồ luồng dữ liệu(DFD):
Sơ đồ luồng dữ liệu thể hiện sự trao đổi dữ liệu giữa hệ thống và môitrường ngoài cũng như giữa các thành phần bên trong hệ thống.Sơ đồ luồngdữ liệu được chia làm nhiều mức tương ứng với từng cấp của sơ đồ phân cấpchức năng.
Sơ đồ luồng dữ liệu mức khung cảnh (Hay DFD mức 0)tương ứng vớimức 0 của Sơ đồ phân cấp chức năng.Cả hệ thống được coi như một hộpđen ,ta chỉ quan tâm đến các thông tin đầu vào và các thông tin đầu ra.Đốivới đề tài này thì đây chính là các luồng dữ liệu giữa hệ thống và các tácnhân :Khách hàng(Ứng viên tìm việc,nhà tuyển dụng),nhà quản lý,nhà quảntrị website.Tương ứng với mức một của sơ đồ phân cấp chức năng là sơ đồluồng dữ liệu mức đỉnh Ở đây gồm các hoạt động như:
Sơ đồ luồng dữ liệu mức dưới đỉnh tương ứng với mức 2 của sơ đồ Quản lý CSDLNhà quản trị
Gửi thưSao lưu CSDL
Phục hồi CSDLQuản lý thông tin
Quản lý thông tin việc làm
Quản lý thông tin khác(thông tin về xã hội ,thể thao,thời tiết )Quản lý thông tin
khách hàng(Ứng viên ,nhà tuyển dụng)
Quản lý các thông tin về việc làm(Cẩm nang tìm việc,thông tin tuyển dụng do nhà quản lý đưa lên)
Trang 201.Sơ đồ luồng dữ liệu mức khung cảnh(DFD mức 0):
Đăng ký tài khoản(
Thông tin Cập nhật tin tuyển dụng
tuyển dụng
send mailThông tin phản hồi
Thông tin về tài khoản
Cập nhật thông tin (tuyển dụng,tìm việc vv)Cập nhật thông tin KH
Send mail Cập nhật thông tin website
Các ký hiệu được dùng: :Tác nhân
:Chức năng Tên :Tệp dữ liệu
:Luồng dữ liệu
Website Tuyển dụng lao động
Khách hàng(Ứng viên,nhà
tuyển dụng)
Nhà quản lý
Nhà quản trị websiteThông tin cần tìm
Thông tin việc làm,các thông tin khác
Trang 212.Sơ đồ luồng dữ liệu mức đỉnh(DFD mức 1):
Thông tin mật khẩu
Tin tuyển dụng Tin tuyển dụng Tuyền dụng
Thông tin khác
Thông tin KH Tin tuyển dụng Các thông tin khác
4.Send mailKhách hàng
(Ứng viên,Nhà tuyển dụng)
Nhà quản lý
Nhà quản trị website3.Cập nhật
thông tin
5.Đăng tin việc làm
8.Send mail2.Send
7.Cập nhật thông tin website
6.Cập nhật tin tuyển dụng1.Đăng ký
tài khoản
Yêu cầu cập nhật
11.Quản lý CSDL
9.Sao lưu CSDL
10.Phục hồi CSDL
Trang 221.3Phân tích hệ thống về dữ liệu:
Trong các sơ đồ trên ta thấy được các luồng thông tin vào, ra hệ thống
cũng như các luồng thông tin truyền trong hệ thống Phần này ta sẽ đi sâuvào phân tích nội dung dữ liệu và mối quan hệ về dữ liệu của các luồng thông tin đó.Mô hình được sử dụng để phân tích là mô hình thực thể liên kết Trong mô hình này,thông tin được quy về các đối tượng mà ta gọi là thực thể ,tính chất của các thực thể được thể hiện bằng các thuộc tính và các mối quan hệ giữa chúng
1.3.1Xác định các thực thể:
Thực thể là các đối tượng cần lưu trữ thông tin trong hệ thống,nó có thể là tài nguyên ,giao dịch hay thông tin đã được cấu trúc hóa Đối với hệ thống trong đề tài này ,các thực thể chính được xác định là:
City (Lưu thông tin về các thành phố trong cả nước) Counter(Lưu thông tin về số người truy cập website) DollarsGold(Lưu thông tin về tỷ giá vàng và Dollars) Email(Lưu thông tin về địa chỉ email)
Link(Lưu thông tin về các đường liên kết đến các website khác) NewsCata(Lưu thông tin về các lĩnh vực tin)
NewsCont(Lưu nội dung của các tin trong từng mục tin tương ứng)
Profession(Lưu tên của các nghành nghề) Quangcao(Lưu các mẩu tin quảng cáo)
Recruit(Lưu thông tin tuyển dụng của nhà tuyển dụng) RecruitInfo(Lưu thông tin liên hệ của nhà tuyển dụng)
Sendmail(Lưu địa chỉ email của các Khách hàng muốn nhận bản tin về việc làm của website)
Stories(Lưu các cẩm nang tìm việc) UserInfo(Lưu thông tin của các ứng viên)
VLTTT(Lưu thông tin tuyển dụng do trung tâm việc làm đưa lên) Weather(Lưu thông tin về thời tiết của các vùng trong cả nước)
Trang 231.3.2Các thuộc tính của các thực thể chính trong CSDL:
Mã thành phốTên tiếng việtTên tiếng anh
cập vào website
Mã
Địa điểm giao dịchGiá mua vào của Dollars
Giá bán ra của DollarsGiá mua vào của vàngGiá bán ra của vàngNgày cập nhật thông tin
Địa chỉ emailMã nghành nghề
Mã liên kếtTên liên kết
Địa chỉ URL của liên kết
Ngày cập nhật liên kết
Mã số lĩnh vực tinTên của lĩnh vực tinTên tiếng anh
Trang 24NewsCont NewsIDCataIDSubjectSubjectENQuoteQuoteENContentContentENImageAltimageAltimageENNDate
Mã số tin tức
Lĩnh vực tin mà tin tức thuộc vào
Chủ đề của mẩu tinChủ đề bằnh tiếng anhTrích dẫn của mẩu tinNội dung mẩu tin
Ảnh minh họa cho mẩu tin
Ngày đưa tinTác giả
Mã nghành nghềTên nghành nghềTên tiếng Anh
Mã mục tin quảng cáoTên mục tin quảng cáoTrích dẫn
Địa chỉ URL của website công ty đăng tin quảng cáo
Nội dung quảng cáoNgày đăng tin quảng cáo
Trang 25Recruit TDIDUserIDProPlaRecSpecialityStandardExperienceTimeWorksAmountCityContryLevelGraUsdVndInterestDocumentLimitNameMrMsContactPlaDocTelephoneEmailRegDateComDemnum
Mã của nhà tuyển dụngTên đăng nhập
Nghành nghề đưa tin tuyển dụng
Vị trí cần tuyển dụngYêu cầu công việcYêu cầu trình độYêu cầu kinh nghiệm Yêu cầu về thời gian làm việc
Số lượng cần tuyểnThành phố
Yêu cầu quốc tịchMức lương
Các thông tin thêmYêu cầu thủ tục xin việc
Yêu cầu thời hạn
Tên đại diện nhà tuyển dụng
Giới tínhĐịa chỉ liên hệ
Địa chỉ nhận hồ sơ xin việc
Số điện thoạiĐịa chỉ email
Ngày đăng tin tuyển dụng
Trang 26RecruitInfo UserIDPasswordsCompanyCompanyInfoProf
User đăng nhập của nhàtuyển dụng
Mật khẩu đăng nhập(đãmã hóa)
Công ty
Thông tin về công tyMã nghành nghề đăng tin tuyển dụng
Địa chỉ liên hệThành phốQuốc giaSố điện thoạIFax
Website công tyMật khẩu
Ngày đăng ký
Mã kích hoạt tài khoản
Mã cẩm nangTên cẩm nangTrích dẫn
Nội dung cẩm nangAnh minh họaNgày đăng tin
Trang 27UserInfo UserIDPasswordsNameLearnLanguage1Language2It
Tên đăn nhập
Mật khẩu đăng nhậpTên ứng viên
Trình độ Ngoại ngữNgoại ngữ khácKỹ năng tin học
Kinh nghiệm làm việcNghành nghề muốn tìmviệc
Học vịXếp loại
Bằng cấp khácGiớI tínhNăm sinh
Tình trạng hôn nhânAnh cá nhân
Yêu cầu tìm việcNguyện vọngThời gian làm việcĐịa điểm làm việcMức lương yêu cầuCác thông tin khácĐịa chỉ
Thành phố đang sốngQuốc tịch
Số điện thoạiĐịa chỉ emailMật khẩu
Ngày đăng tin(ngày đăng ký tài khoản)
Trang 28Weather IDCityCityENTemperatureRainsunRainsunENData
Tên thành phốTên tiếng anhNhiệt độNắng/MưaSun/Rain
Ngày cập nhật
1.3.3Biểu đồ cấu trúc dữ liệu:
Biếu đồ cấu trúc dữ liệu thể hiện mối quan hệ giữa các thực thể Các mốiquan hệ được chia làm 3 loại:
Quan hệ 1-1:Một thể hiện của thực thể này tương ứng vớI một và chỉ một thể hiện của thực thể kia.
Quan hệ 1-nhiều:Một thể hiện của thực thể này có thể tương ứng vớinhiều thể hiện của thực thể kia.
Quan hệ nhiều-nhiều:Một thể hiện của thực thể này có thể tương ứng với nhiều thể hiện của thực thể kia và ngược lại.
(Biếu đồ cấu trúc dữ liệu)
2.THIẾT KẾ HỆ THỐNG2.1.Thiết kế Cơ sở dữ liệu:
Qua phần phân tích hệ thống về dữ liệu ở trên ,ta đã xác định được các thực thể của hệ thống cũng như nộI dung dữ liệu và các quan hệ giữa chúng Dựa vào những thông tin này ta sẽ thiết kế các bảng CSDL để tạo Cơ sở dữ liệu cho chương trình (Lưu ý:Các kiểu dữ liệu sử dụng sau đây
I.Cấu trúc các bảng và mối quan hệ giữa các bảng trong Cơ sở dữ liệu: 1.Cấu trúc các bảng trong cơ sở dữ liệu:
Bảng tblCity (Cung cấp thông tin về các thành phố trong nước):
Thiết kế bảng:
của các thành phố
Trang 30 Bảng tblCounter(Cung cấp thông tin về số người truy cập):
Dem Number Lưu số người đã truycập vào website
Trang 32Field Name Data Type Description
TitleVNUnicode Text
ContentVN Memo Nội dung thông báo bằng tiếng việtContentVNUnicode Memo
trỏ đến
kết
Trang 33CataID Auto Number Mã số của lĩnh vực tin
lĩnh vực tin
Minh họa:
(Bảng tblNewsCata) Bảng tblNewsCont(Chứa thông tin về tin tức):
Thiết kế bảng:
Trang 34
tin thuộc vào
anh
Trang 35(Bảng tblNewsCont)
Bảng tblPolls(Chứa nội dung phiếu thăm dò dư luận):Thiết kế bảng:
Trang 36Minh họa:
Trang 37 Bảng tblQuangcao(Chứa các mục tin quảng cáo):
Thiết kế bảng:
quảng cáo
quảng cáo
website của công ty đăng tin quang cáo
quảng cáoQuangcaoData Date/Time Ngày đăng tin
quảng cáo
Minh họa:
(Bảng tblQuangcao)
Trang 38 Bảng tblRecruit(Chứa thông tin tuyển dụng của các công ty):Thiết kế bảng:
Field Name Data Type Description
Trang 39Field Name Data Type Description
CompanyInfo Memo Thông tin về công ty tuyển dụng
Trang 40StoriesData Date/Time Ngày đăng tin cẩm nang