NHẬP MÔN ASP

20 139 0
Tài liệu đã được kiểm tra trùng lặp
NHẬP MÔN ASP

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

159 Chương 5 NHẬP MÔN ASP 1. GIỚI THIỆU VỀ ASP Active Server Page (ASP) do Microsoft phát triển là môi trường lập trình ứng dụng phía server (server side scripting) hỗ trợ mạnh trong việc xây dựng các ứng dụng Web. Các ứng dụng ASP rất dễ viết và sửa đổi, đồng thời có thể tích hợp các công nghệ sẵn có của Microsoft như COM, . một cách dễ dàng. ASP được hỗ trợ mặc định khi cài đặt Internet Information Server. Để thực hiện ASP trên các môi trường khác, bạn phải cài đặt một thư viện hỗ trợ ASP. Thông dụng nhất là Sun Chili!Soft (http://www.chillisoft.com ) Một trang ASP thường có một số đặc điểm sau: • Là một tập tin văn bản (text file) có phần mở rộng là .asp: Phần mở rộng này sẽ giúp webserver yêu cầu trình xử lí trang asp (ASP engine) trước khi trả về cho trình duyệt. • Ngôn ngữ script thông dụng nhất dùng để viết các mã của ASP là VBScript. Ngoài ra, ta cũng có thể viết các mã bằng các ngôn ngữ như JScript, Perl, Python, . nếu trên webserver có cài đặt các bộ xử lí ngôn ngữ này (script engine). • Các đoạn mã viết trong trang ASP sẽ được các bộ xử lí ngôn ngữ trên webserver xử lí tuần tự từ trên xuống dưới. Kết quả của việc xử lí này là trả về trang HTML cho webserver và webserver sẽ gửi trang này về cho trình duyệt. Đó là lí do tại sao, tại trình duyệt ta không thể thấy được các đoạn mã chương trình đã được viết trong trang ASP. 160 2. CÁC KHÁI NIỆM CƠ BẢN VỀ ASP Một trang ASP thông thường gồm có bốn thành phần: • Dữ liệu văn bản (text) • Các tag HTML • Các đoạn mã chương trình phía client đặt trong cặp tag <SCRIPT> và </SCRIPT> • Mã chương trình ASP được đặt trong cặp tag <% và %>: Ba thành phần ban đầu là cấu trúc của một trang HTML thông thường, do đó có thể xem một trang ASP là một trang HTML được nhúng thêm phần xử lí viết bằng mã ASP (VBScript, JScript, Perl, .) Ví dụ sau minh họa một trang ASP, dữ liệu văn bản là “Welcome to my website. Today is:”, các tag HTML là <P>, <B>, . và đoạn mã chương trình đặt giữa <% và %> <HTML> <BODY> <P> <B>Welcome to my website</B>. Today is <% Response.Write Date() %> </BODY> </HTML> Trong trang ASP, ta có thể trộn lẫn mã ASP và mã HTML vào trong các cấu trúc điều khiển. Xét ví dụ sau: <HTML> <BODY> <% Dim dtmHour dtmHour = Hour(Now()) If dtmHour < 12 Then Response. Write "Good Morning!" Else Response. Write "Hello!" End If %> </BODY> </HTML> Lê Đình Duy - ĐH KHTN Tp. HCM Email: ledduy@ieee.org Lê Đình Duy - ĐH KHTN Tp. HCM Email: ledduy@ieee.org 161 Đoạn mã chương trình trên sẽ in ra màn hình lời chào “Good Morning” nếu thời điểm truy cập vào trang này là buổi sáng, ngược lại nó sẽ in ra màn hình lời chào “Hello”. Lệnh Response.Write trong ví dụ trên đóng vai trò kết xuất nội dung dữ liệu ra trang web, do đó ta có thể thay bằng đoạn mã HTML có chức năng tương tự như minh họa sau: <HTML> <BODY> <% Dim dtmHour dtmHour = Hour(Now()) If dtmHour < 12 Then %> Good Morning! <% Else %> Hello! <% End If %> </BODY> </HTML> Do ta có thể sử dụng nhiều ngôn ngữ script khác nhau để viết mã ASP, nên để chỉ định ngôn ngữ nào là ngôn ngữ đang được dùng trong một trang ASP, ta đặt đoạn mã sau vào đầu trang ASP: <%LANGUAGE=ScriptingLanguage%>. Ví dụ, để chỉ định VBScript là ngôn ngữ dùng cho trang ASP, ta viết như sau: <%LANGUAGE=VBScript%> Cách viết các chú thích cho trang ASP: • Đối với VBScript, ta dùng kí tự ‘. Ví dụ: <% 'This line and the following two are comments. 'The PrintTable function prints all 'the elements in an array. PrintTable MyArray() %> 162 • Đối với JScript, ta dùng kí tự //. Ví dụ: <% var x x = new Date() // This line sends the current date to the browser, // translated to a string. Response.Write(x.toString()) %> Các đoạn mã ASP trong tài liệu này từ nay trở về sau sẽ được minh họa bằng VBScript. Để có thể viết được một chương trình bằng ASP, chúng ta cần phải biết: • Cách khai báo và sử dụng các biến. • Cách viết các cấu trúc điều khiển như lệnh điều kiện, lệnh lặp, . • Cách viết hàm, thủ tục, . • Cách sử dụng các hàm thư viện cơ bản hỗ trợ cho việc nhập, xuất dữ liệu. Ví dụ, nếu bạn học C, bạn phải học cách sử dụng các hàm như scanf, printf, . hay nếu bạn học Pascal, bạn phải học cách sử dụng các hàm như readln, writeln, . Trong ASP, bạn phải học cách sử dụng chúng thông qua các đối tượng được xây dựng sẵn như Request, Response, . • Các hàm thư viện hỗ trợ cho các thao tác phức tạp khác như truy xuất tới cơ sở dữ liệu, hệ thống tập tin, các tiện ích của hệ thống, . Ba phần đầu liên quan đến việc sử dụng một ngôn ngữ script đã được đề cập trong bài trước. Hầu hết các đối tượng xây dựng sẵn của ASP đều là các đối tượng kiểu Collection. Collection là cấu trúc dữ liệu tương tự như mảng, nó có thể lưu trữ bất kì loại dữ liệu nào như số, chuỗi kí tự, các đối tượng, . Khác với mảng, kích thước các Collection sẽ thay đổi một cách tự động mỗi khi có các thao tác như thêm hoặc xóa dữ liệu trên biến kiểu này. Có 3 cách để truy cập vào một mục dữ liệu (item) được lưu trữ trong biến Collection: Lê Đình Duy - ĐH KHTN Tp. HCM Email: ledduy@ieee.org Lê Đình Duy - ĐH KHTN Tp. HCM Email: ledduy@ieee.org 163 • Thông qua chuỗi kí tự khóa duy nhất (unique string key). Trong ví dụ sau, Age là chuỗi kí tự khóa được dùng để truy cập vào biến collection Session.Contents: <% Session.Contents("Age") = 29 %> • Thông qua vị trí của mục dữ liệu đó (index). Ví dụ: <% Session.Contents(2) = 29 %> • Bằng cách duyệt qua hết các thành phần trong collection. Ví dụ: <% 'Declare a counter variable. Dim strItem 'For each item in the collection, display its value. For Each strItem In Session.Contents Response.Write Session.Contents(strItem) & "<BR>" Next %> 3. XỬ LÍ DỮ LIỆU NHẬP TỪ NGƯỜI DÙNG Trong các ứng dụng web, người dùng nhập dữ liệu thông qua đối tượng form. Sau khi người dùng submit form, các dữ liệu trong form sẽ được chuyển đến cho chương trình xử lí được khai báo trong mục ACTION. Ví dụ sau minh họa một form nhập liệu, sau khi người dùng nhấn nút Search để submit form, dữ liệu nhập sẽ được chuyển cho trang search.asp: <FORM ACTION=”search.asp” NAME=f1 METHOD=GET> <INPUT TYPE=TEXT NAME=”KEYWORD” SIZE=20> <INPUT TYPE=SUBMIT NAME=b1 VALUE=”Search”> </FORM> Trong trang search.asp, để có thể lấy dữ liệu được chuyển từ form trên. Ta dùng đối tượng Request theo hai cách sau: • Nếu khai báo METHOD trong tag <FORM> là GET, ta dùng Request.QueryString • Nếu khai báo METHOD trong <FORM> là POST, ta dùng Request.Form Để lấy dữ liệu từ ô nhập liệu nào, ta dùng tên của ô nhập liệu đó (khai báo trong thuộc tính NAME của đối tượng) như là chuỗi kí tự khóa theo cách truy cập tới dữ liệu của biến Collection ở trên. Ví dụ, 164 để lấy dữ liệu từ ô nhập liệu của ví dụ trên (có tên là KEYWORD), ta dùng Request.QueryString(“KEYWORD”). Ví dụ sau minh họa một ứng dụng nhỏ, người dùng sẽ nhập vào họ, tên, giới tính trong form nằm trong tập tin input.htm. Sau khi người dùng submit form, chương trình nằm trong tập tin hello.asp sẽ in ra câu chào tương ứng với giới tính của họ. input.htm <HTML> <HEAD> <TITLE>Input data</TITLE> </HEAD> <BODY> <FORM ACTION="hello.asp" NAME="myform" METHOD="GET"> First Name: <INPUT TYPE="TEXT" NAME="FirstName" SIZE=20><br> Last Name: <INPUT TYPE="TEXT" NAME="LastName" SIZE=20><br> Gender: <SELECT NAME="Gender" > <OPTION VALUE="Mr">Male</OPTION> <OPTION VALUE="Ms">Female</OPTION> </SELECT> <INPUT TYPE="SUBMIT" NAME="b1" VALUE=”Submit”> </FORM> </BODY> </HTML> hello.asp <HTML> <HEAD> <TITLE>Output data</TITLE> </HEAD> <BODY> <% FName = Request.QueryString("FirstName") LName = Request.QueryString("LastName") Gender = Request.QueryString("Gender") %> <p>Hello <% Response. Write Gender & " " & FName & " " & LName %> </BODY> </HTML> Lê Đình Duy - ĐH KHTN Tp. HCM Email: ledduy@ieee.org Lê Đình Duy - ĐH KHTN Tp. HCM Email: ledduy@ieee.org 165 4. XỬ LÍ CÁC KẾT XUẤT DỮ LIỆU Trong mã chương trình phía client (đặt trong cặp tag <SCRIPT> và </SCRIPT>), để gửi dữ liệu ra trang web hiện hành, bạn dùng phương thức document.write. Tương tự như vậy, để gửi dữ liệu ra trang web ngay trong đoạn mã ASP (đặt trong cặp tag <% và %>), bạn dùng phương thức Response.Write Sau đây là một số ví dụ khi sử dụng phương thức này: • In một hằng kiểu số, ví dụ như 5: Response.Write 5 • In một hằng chuỗi, ví dụ như “Hello World”: Response.Write “Hello World”. Lưu ý rằng, hằng chuỗi bao giờ cũng được rào quanh bởi cặp dấu nháy đơn (‘) hoặc nháy kép (“). • In một giá trị của một biến, ví dụ như biến FirstName: Response.Write FirstName • In kết hợp các dạng dữ liệu trên, ta dùng toán tử &. Ví dụ: Response.Write “No “ & 1 & FirstName Khi muốn xuất ra một chuỗi dài, ta có thể chia nhỏ chuỗi này thành nhiều dòng bằng cách sử dụng chuỗi kí tự: “&_”. Ví dụ: <% Response.Write "Chào mừng các bạn đến với website" &_ "của Trường ĐH Khoa Học Tự Nhiên" %> Ngoài ra, thay vì sử dụng phương thức Response.Write để kết xuất ra trình duyệt, ta cũng có thể dùng dạng tương tự <%=%>. Ví dụ sau minh họa hai đoạn mã cho kết quả tương đương: <% Response.Write "Trường ĐH Khoa Học Tự Nhiên" %> <%="Trường ĐH Khoa Học Tự Nhiên" %> Cách dùng <%=%> chỉ thích hợp cho trường hợp dùng cho các đoạn mã chỉ thuần các kết xuất đơn giản mà thôi. 4.1. Sử dụng các dấu nháy VB Script dùng các dấu nháy để đánh dấu sự bắt đầu và kết thúc của một chuỗi. Nếu trong bản thân chuỗi có chứa dấu nháy thì vấn đề sẽ nảy sinh. Ví dụ: nếu dùng đoạn mã sau để in chuỗi: He said, “This doesn’t work!”: 166 <% Response.Write "He said, "This doesn’t work!"" %> Thì chương trình sẽ báo lỗi sai cú pháp vì lúc đó chương trình sẽ hiểu "He said, " là chuỗi đầu tiên This doesn’t work!"" là chuỗi thứ hai nhưng viết không đúng cú pháp vì thiếu dấu “ trước This. Có ba cách để giải quyết vấn đề này. Cách thứ nhất là ghi liên tiếp hai dấu nháy để VB Script dịch lại thành còn một dấu nháy. Ví dụ như, câu lệnh trên nên viết lại với hai dấu nháy trước This và ba dấu nháy sau work!: <% Response.Write "He said, ""This doesn’t work!""" %> Cách thứ hai là sử dụng hàm CHR(34) để in dấu nháy ra. Ví dụ: <% Response.Write "He said, " & CHR(34) & "This doesn’t work!" & CHR(34) %> Cách thứ ba là thay thế dấu nháy kép bằng dấu nháy đơn. Nghĩa là: <% Response.Write "He said, 'This doesn’t work! ' " %> 4.2. Hiển thị các kí tự đặc biệt Khi làm việc với lệnh Response.Write, có một số kí tự trong chuỗi có thể sẽ không được hiển thị chính xác, ví dụ như dấu >, <, bởi vì HTML xem các dấu này như là các kí tự bắt đầu và kết thúc của một tag. Do đó, để khắc phục ta phải chuyển các kí tự đặc biệt này sang mã thay thế bằng hàm Server.HTMLEncode. Ví dụ, ta muốn in ra một chuỗi: “<B>Hyperion</b> by <I>Dan Simmons</i> is a great novel”, ta phải dùng như sau: <% Response.Write Server.HTMLEncode("<B>Hyperion</b> by <I>Dan Simmons</i> is a great novel ") %> Lê Đình Duy - ĐH KHTN Tp. HCM Email: ledduy@ieee.org Lê Đình Duy - ĐH KHTN Tp. HCM Email: ledduy@ieee.org 167 Xem rõ hơn qua ví dụ minh hoạ sau: <HTML> <HEAD> </HEAD> <BODY> Response.Write "<B>Hyperion</b> by <I>Dan Simmons</i> is a great novel" Response.Write "<p>" Response.Write server.htmlencode("<B>Hyperion</b> by <I>Dan Simmons</i> is a great novel") Response.Write "<p>" Response.Write "Joe Smith & Hilda = a team" Response.Write "<p>" Response.Write server.URLencode("Joe Smith & Hilda = a team") %> </BODY> </HTML> 4.3. Một số ví dụ minh họa Sau đây là một số ví dụ minh họa việc nhúng các đoạn mã ASP cùng với mã HTML để cho các kết xuất thường gặp trong lập trình. 4.3.1. Ví dụ 1: Trộn lẫn các dạng kết xuất trong trang ASP Ví dụ sau minh hoạ việc trộn lẫn các dạng kết xuất bằng cách dùng phương thức Response.Write, <%=%> hay trộn lẫn mã HTML giữa các lệnh điều khiển ASP, đồng thời minh họa việc sử dụng uyển chuyển các phương pháp dùng dấu nháy. <HTML> <HEAD> </HEAD> <BODY> <% Response.Write "<FORM>" Response.Write "Hello, Joe<br>" UsrName="Joe" Response.Write "Hello, " & UsrName & "<br>" %> Hello, <%=UsrName%><br> Which Book? <input type="TEXT" name="book" value="The 168 Stand"><br> <% Response.Write "Which Book? <input type=""TEXT"" name=""book"" value=""The Stand""><br>" %> <% Response.Write "Which Book? <input type='TEXT' name='book' value='The Stand'><br>" %> <% quote=chr(34) Response.Write "Which Book? <input type=" & quote & "TEXT" & quote & " name=" & quote & "book" & quote & " value=" & quote & "The Stand" & quote & "><br>" %> <%bookname="The Stand"%> Which Book? <input type="TEXT" name="book" value="<%=bookname%>"><br> <% Response.Write "Which Book? <input type=""TEXT"" name=""book"" value=""" & bookname & """><br>" %> </FORM> </BODY> </HTML> Lê Đình Duy - ĐH KHTN Tp. HCM Email: ledduy@ieee.org Lê Đình Duy - ĐH KHTN Tp. HCM Email: ledduy@ieee.org 169 Hình 1 – Kết quả của đoạn mã trên 4.3.2. Tạo một dropdown listbox động Giả sử ta muốn cho phép người dùng nhập vào năm sinh từ một dropdown listbox. Mã HTML của dropdown listbox này có dạng: <FORM> Year&nbsp;<SELECT NAME= "Year" > <OPTION VALUE="1930">1930</OPTION> <OPTION VALUE="1931">1931</OPTION> <OPTION VALUE="1932">1932</OPTION> … <OPTION VALUE="1980">1980</OPTION> </SELECT> </FORM> Dễ thấy rằng nếu soạn bằng HTML, ta phải gõ vào rất nhiều để có thể có được một dropdown listbox gồm các năm từ 1930 đến 1980. Trong khi đó, dropdown listbox này có thể sinh ra dễ dàng bằng cách sử dụng một vòng lặp in tuần tự các dòng dạng: <OPTION VALUE="1930">1930</OPTION> như sau: 170 <FORM> Year&nbsp;<SELECT NAME= "Year" > <% for i=1930 to 1980 Response.Write "<OPTION VALUE=" & i & ">" Response.Write i & "</OPTION>" next %> </SELECT> </FORM> Hay là đoạn mã dùng <%=%> <FORM> Year&nbsp;<SELECT NAME= "Year" > <% for i=1930 to 1980 %> <OPTION VALUE="<%=i%>"><%= i %></OPTION> next %> </SELECT> </FORM> 4.3.3. Tạo bảng dữ liệu động Giả sử ta cần hiển thị một bảng dữ liệu có dạng sau: TT MSSV Họ và Tên Ghi chú 1 99001 A1 2 99002 A2 99 990099 A99 Mã HTML của bảng dữ liệu này có dạng: <TABLE BORDER="1" CELLPADDING="5" CELLSPACING="0" STYLE="border-collapse: collapse" BORDERCOLOR="#111111" WIDTH="400" > <TR> <TD WIDTH="30" ALIGN="center">TT</TD> <TD WIDTH="60" ALIGN="center">MSSV</TD> <TD WIDTH="210" ALIGN="center">Họ và Tên</TD> <TD WIDTH="100" ALIGN="center">Ghi chú</TD> </TR> <TR> <TD>1</TD> <TD>99001</TD> Lê Đình Duy - ĐH KHTN Tp. HCM Email: ledduy@ieee.org Lê Đình Duy - ĐH KHTN Tp. HCM Email: ledduy@ieee.org 171 <TD>A1</TD> <TD>&nbsp;</TD> </TR> <TR> <TD>2</TD> <TD>99002</TD> <TD>A2</TD> <TD>&nbsp;</TD> </TR> … <TR> <TD>99</TD> <TD>990099</TD> <TD>A99</TD> <TD>&nbsp;</TD> </TR> </TABLE> Ta sẽ dùng một vòng lặp để in tuần tự các dòng của bảng, với nội dung chứa trong cặp tag <TR> và </TR> <TABLE BORDER="1" CELLPADDING="5" CELLSPACING="0" STYLE="border-collapse: collapse" BORDERCOLOR="#111111" WIDTH="400" > <TR> <TD WIDTH="30" ALIGN="center">TT</TD> <TD WIDTH="60" ALIGN="center">MSSV</TD> <TD WIDTH="210" ALIGN="center">Họ và Tên</TD> <TD WIDTH="100" ALIGN="center">Ghi chú</TD> </TR> <% for i= 1 to 99 %> <TR> <TD><%=i%></TD> <TD>9900<%=i%></TD> <TD>A<%=i%></TD> <TD>&nbsp;</TD> </TR> <% next %> </TABLE> 172 5. KẾT NỐI VỚI CƠ SỞ DỮ LIỆU ADO (ActiveX Data Object) được dùng để cung cấp khả năng kết nối và xử lí trên cơ sở dữ liệu. Ta có thể sử dụng ADO để kết nối với nguồn dữ liệu tương thích với OLE DB như cơ sở dữ liệu, bảng tính, tập tin tuần tự, … OLE DB là giao diện lập trình mức hệ thống cung cấp tập các giao tiếp COM chuẩn để khai thác các chức năng quản trị hệ cơ sở dữ liệu. Ngoài ra ta cũng có thể sử dụng ADO để truy xuất đến các cơ sở dữ liệu tương thích với ODBC. Việc sử dụng ADO để truy cập và xử lí cơ sở dữ liệu trong các trang ASP có thể chia làm các bước chính sau: • Kết nối với dữ liệu thông qua OLE DB hoặc ODBC • Xây dựng câu truy vấn dữ liệu và yêu cầu thực hiện câu truy vấn để thực hiện các thao tác xử lí trên cơ sở dữ liệu như thêm, xóa, sửa, lọc dữ liệu, … • Xử lí kết quả trả về từ câu truy vấn trong trường hợp câu truy vấn lọc dữ liệu (SELECT queries) • Ngắt kết nối với cơ sở dữ liệu, giải phóng các tài nguyên của hệ thống đã dùng. 5.1. Kết nối với cơ sở dữ liệu 5.1.1. Tạo connection string Giống như khi bạn muốn trò chuyện bằng điện thoại, bước đầu tiên là phải quay số điện thoại của người mà bạn cần trò chuyện. Để có thể xử lí dữ liệu, bước đầu tiên, bạn phải cung cấp các thông tin cần thiết để hệ thống biết bạn muốn truy cập tới cơ sở dữ liệu nào. Một chuỗi kí tự gọi là connection string sẽ được dùng để lưu trữ các thông tin này, bao gồm: • Thông tin về hệ quản trị cơ sở dữ liệu được dùng để quản lí cơ sở dữ liệu của bạn. Ví dụ đó là MS Access hoặc MS SQL hay Oracle, … • Thông tin về vị trí của cơ sở dữ liệu của bạn. Ví dụ: nếu bạn dùng MS Access, bạn phải chỉ ra cơ sở dữ liệu của bạn được lưu trong tập tin .mdb nào. Bảng sau liệt kê các OLE DB connection string cho một số hệ quản trị cơ sở dữ liệu thông dụng: Lê Đình Duy - ĐH KHTN Tp. HCM Email: ledduy@ieee.org Lê Đình Duy - ĐH KHTN Tp. HCM Email: ledduy@ieee.org 173 Data Source OLE DB Connection String Microsoft® Access Provider=Microsoft.Jet.OLEDB.4.0;Data Source=physical path to .mdb file Microsoft SQL Server Provider=SQLOLEDB.1;Data Source=path to database on server Oracle Provider=MSDAORA.1;Data Source=path to database on server Microsoft Indexing Service Provider=MSIDXS.1;Data Source=path to file Bảng sau liệt kê các ODBC connection string cho một số hệ quản trị cơ sở dữ liệu thông dụng: Data Source Driver ODBC Connection String Microsoft® Access Driver={Microsoft Access Driver (*.mdb)};DBQ=physical path to .mdb file Microsoft SQL Server DRIVER={SQL Server};SERVER=path to server Oracle DRIVER={Microsoft ODBC for Oracle};SERVER=path to server Microsoft Excel Driver={Microsoft Excel Driver (*.xls)};DBQ=physical path to .xls file; DriverID=278 Microsoft Excel 97 Driver={Microsoft Excel Driver (*.xls)};DBQ=physical path to .xls file;DriverID=790 Paradox Driver={Microsoft Paradox Driver (*.db)};DBQ=physical path to .db file;DriverID=26 Text Driver={Microsoft Text Driver (*.txt;*.csv)};DefaultDir=physical path to .txt file 174 Data Source Driver ODBC Connection String Microsoft Visual FoxPro® (with a database container) Driver={Microsoft Visual FoxPro Driver};SourceType=DBC;SourceDb=physical path to .dbc file Microsoft Visual FoxPro (without a database container) Driver={Microsoft Visual FoxPro Driver};SourceType=DBF;SourceDb=physical path to .dbf file Ta cũng có thể dễ dàng xây dựng connection string bằng cách tạo Data Source Name trong ODBC. Để đảm bảo tính hiệu quả và tin cậy, bạn nên dùng các hệ quản trị cơ sở dữ liệu kiểu client-server (client-server database engine) khi phát triển các ứng dụng web vì nó đòi hỏi số lượng kết nối đồng thời lớn. Mặc dù ADO hỗ trợ được các nguồn dữ liệu tương thích với OLE DB nhưng nó chủ yếu được thiết kế để làm việc tốt với các hệ quản trị cơ sở dữ liệu kiểu client-server như MS SQL, Oracle, … 5.1.2. Kết nối với cơ sở dữ liệu ADO cung cấp đối tượng Connection để hỗ trợ cho việc tạo và quản lí kết nối với cơ sở dữ liệu cần xử lí. Các thuộc tính và phương thức của đối tượng này cho phép bạn mở, đóng kết nối, đồng thời cho phép thực hiện các câu truy vấn dữ liệu, Để thiết lập kết nối với cơ sở dữ liệu bằng ADO, bạn thực hiện tuần tự các bước sau: • Tạo một thể hiện của đối tượng Connection bằng lệnh: Server.CreateObject(“ADODB.Connection”). • Sử dụng phương thức Open để mở kết nối với cơ sở dữ liệu. Tham số cho phương thức này là chuỗi connection string. Ví dụ sau minh họa việc tạo kết nối đến cơ sở dữ liệu được lưu bằng MS Access: Lê Đình Duy - ĐH KHTN Tp. HCM Email: ledduy@ieee.org Lê Đình Duy - ĐH KHTN Tp. HCM Email: ledduy@ieee.org 175 <% strDSN = “Driver={Microsoft Access Driver (*.mdb)};DBQ=” & server.mappath(“Test.mdb”) 'Create a connection object. Set Conn = Server.CreateObject("ADODB.Connection") 'Open a connection using the ODBC connection string. Conn.Open strDSN %> 5.2. Xây dựng câu truy vấn và yêu cầu thực hiện Cách đơn giản nhất để thực hiện các thao tác trên cơ sở dữ liệu là xây dựng các câu truy vấn SQL (SQL queries) và yêu cầu hệ thống thực hiện. Phương thức Execute do đối tượng Connection cung cấp cho phép thực hiện một câu truy vấn SQL. Ví dụ sau minh họa việc thực hiện thêm một mẩu tin vào cơ sở dữ liệu insert.asp <% strDSN = “Driver={Microsoft Access Driver (*.mdb)};DBQ=” & server.mappath(“Test.mdb”) 'Create a connection object. Set Conn = Server.CreateObject("ADODB.Connection") 'Open a connection using the ODBC connection string. Conn.Open strDSN 'Define SQL statement. strSQL = "INSERT INTO Customers (FirstName, LastName) VALUES ('Jose','Lugo')" 'Use the Execute method to issue a SQL query to database. Conn.Execute strSQL %> Các lệnh như DELETE, UPDATE cũng được thực hiện theo cách tương tự. Ví dụ: update.asp <% strDSN = “Driver={Microsoft Access Driver (*.mdb)};DBQ=” & server.mappath(“Test.mdb”) 176 'Create a connection object. Set Conn = Server.CreateObject("ADODB.Connection") 'Open a connection using the ODBC connection string. Conn.Open strDSN 'Define SQL statement. strSQL = "UPDATE Customers SET FirstName = 'Jeff' WHERE LastName = 'Smith' " 'Use the Execute method to issue a SQL query to database. Conn.Execute strSQL %> delete.asp <% strDSN = “Driver={Microsoft Access Driver (*.mdb)};DBQ=” & server.mappath(“Test.mdb”) 'Create a connection object. Set Conn = Server.CreateObject("ADODB.Connection") 'Open a connection using the ODBC connection string. Conn.Open strDSN 'Define SQL statement. strSQL = "DELETE FROM Customers WHERE LastName = 'Smith'" 'Use the Execute method to issue a SQL query to database. Conn.Execute strSQL %> Một số lưu ý khi xây dựng câu truy vấn cơ sở dữ liệu • Dữ liệu kiểu chuỗi phải được đặt trong cặp dấu nháy đơn ‘ ’ vì cặp dấu nháy kép “ “ được dùng cho việc định nghĩa hằng chuỗi. Ví dụ: Để mô tả LastName sẽ lấy giá trị là chuỗi Smith, trong câu lệnh SQL ta dùng LastName=’Smith’. • Các dữ trường dữ liệu có khoảng trắng ở giữa, trong câu lệnh SQL ta dùng cặp dấu []. Ví dụ, trong cơ sở dữ liệu của bạn có định nghĩa trường “Last Name”, trong câu lệnh SQL, ta dùng [Last Name]=’Smith’ chứ không dùng Last Name=Smith. Lê Đình Duy - ĐH KHTN Tp. HCM Email: ledduy@ieee.org Lê Đình Duy - ĐH KHTN Tp. HCM Email: ledduy@ieee.org 177 5.3. Xử lí kết quả trả về từ câu truy vấn lọc dữ liệu 5.3.1. Lưu trữ dữ liệu trả về ADO sử dụng đối tượng Recordset để lưu trữ kết quả trả về từ câu truy vấn lọc dữ liệu SELECT. Vì kết quả trả về của một câu truy vấn SELECT có thể có nhiều mẩu tin, cho nên có thể xem Recordset như là một mảng các mẩu tin. Thông thường ta dùng 2 cách sau để lấy dữ liệu từ câu truy vấn vào biến Recordset • Lấy kết quả trả về từ việc thực hiện câu truy vấn bằng phương thức Execute của đối tượng Connection. Ví dụ: Set rs = Conn.Execute (strSQL). Trong trường hợp này rs là thể hiện của đối tượng Recordset lưu trữ kết quả trả về từ việc thực hiện câu truy vấn strSQL. • Tạo một thể hiện của đối tượng Recordset và sử dụng phương thức Open, kết hợp với thể hiện của đối tượng Connection đã tạo. Ví dụ: <% strDSN = “Driver={Microsoft Access Driver (*.mdb)};DBQ=” & server.mappath(“Test.mdb”) 'Create a connection object. Set Conn = Server.CreateObject("ADODB.Connection") 'Instantiate a Recordset object. Set rsCustomers = Server.CreateObject("ADODB.Recordset") 'Open a recordset using the Open method 'and use the connection established by the Connection object. strSQL = "SELECT FirstName, LastName FROM Customers WHERE LastName = 'Smith' " rsCustomers.Open strSQL, Conn %> 5.3.2. Hiển thị dữ liệu trả về Có ba vấn đề lưu ý: • Để truy cập đến dữ liệu của một trường (field) của mẩu tin hiện hành, ta chỉ định tên của trường đó như là chuỗi kí tự khóa khi truy cập đến đối tượng Recordset. Ví dụ: để truy cập 178 đến dữ liệu của trường FirstName trong ví dụ trên ta dùng: rsCustomers(“FirstName”) • Để di chuyển đến các mẩu tin được lưu trong đối tượng Recordset, ta dùng phương thức MoveNext , MovePrevious, MoveFirst, MoveLast • Để kiểm tra vị trí của con trỏ mẩu tin hiện hành là trước mẩu tin đầu hay sau mẩu tin cuối trong Recordset, ta dùng các thuộc tính BOF hoặc EOF để kiểm tra. Ví dụ sau minh họa việc thể hiện dữ liệu từ biến Recordset theo dạng tuần tự: <% strDSN = “Driver={Microsoft Access Driver (*.mdb)};DBQ=” & server.mappath(“Test.mdb”) 'Create a connection object. Set Conn = Server.CreateObject("ADODB.Connection") 'Instantiate a Recordset object. Set rsCustomers = Server.CreateObject("ADODB.Recordset") 'Open a recordset using the Open method 'and use the connection established by the Connection object. strSQL = "SELECT FirstName, LastName FROM Customers WHERE LastName = 'Smith' " rsCustomers.Open strSQL, Conn i = 1 do while not rsCustomers.EOF Response.Write “Customer No” & i & “.&nbsp;” Response.Write rsCustomers(“FirstName”) & “&nbsp;” & rsCustomers(“LastName”) & “<br>” i = i+1 rsCustomers.MoveNext loop %> Kết quả thể hiện sẽ có dạng: Customer No1. Michael Platini Customer No2. Dino Zoff Customer No3. Ruddi Voller Lê Đình Duy - ĐH KHTN Tp. HCM Email: ledduy@ieee.org Lê Đình Duy - ĐH KHTN Tp. HCM Email: ledduy@ieee.org [...]... http://www.learnasp.com • Trong IE, bạn vào mục Tools/Internet Options, chọn Advanced tab, bỏ mục (uncheck) "Show friendly HTTP error messages." • http://www.4guysfromrolla.com • http://www.15seconds.com • Trên IIS, bạn vào IIS Admin, trong mục Configuration/App Debugging, chọn "Send detailed ASP error messages to client" • http:/ /asp. superexpert.com • http://www.aspfaqs.com 6.4 Làm thế nào để trang ASP có... http://msdn.microsoft.com/library/default .asp? url=/library/enus/iisref/html/psdk /asp/ vbob150l .asp Nói tóm lại: Khi xem một trang web có phải thực sự là unicode hay không, bạn chỉ cần View Source lên, nếu charset=utf-8 thì đó thực sự là dùng unicode thật theo nghĩa vừa là dùng bảng mã unicode và cách lưu trữ unicode 8 http://support.microsoft.com/default.aspx?scid=kb;enus;Q239530 9 http://support.microsoft.com/default.aspx?scid=kb;enus;q232580... từ webserver đúng nhất khi hiển thị [7] 2.3 Các bước cơ bản của lập trình web asp sử dụng tiếng Việt Unicode • Soạn và lưu trữ tập tin asp dưới dạng mã hóa UTF-8 • Trong các tập tin asp, chèn các đoạn mã chỉ định cho web server và trình duyệt xử lí dữ liệu trong trang web như là UTF8 Các đoạn mã này phải đặt ở đầu trang asp Sử dụng ví dụ mẫu sau: … 6.5 Làm thế nào để bảo vệ đoạn mã ASP Ở phía người dùng thông thường sẽ không biết được nội dung của đoạn mã ASP vì khi truy cập một trang ASP, webserver đã thông dịch và xử lí các đoạn mã trong đó và người dùng chỉ thấy được kết quả trả về dưới dạng trang HTML Chính vì vậy, cách duy nhất có thể xem được mã của trang ASP là bạn phải có quyền trên webserver chứa trang đó Nếu... trình sẽ phát hiện ra trong trang asp này có xuất hiện kí tự Unicode và yêu cầu lưu xuống dưới dạng Unicode, nếu không các kí tự Unicode sẽ bị mất Tuy nhiên, nếu chọn lưu dưới dạng Unicode thì chương trình sẽ lưu tập tin này dưới dạng mã hóa UCS-2 Hiện nay webserver IIS không thể xử lí được trang asp này [10] Do đó không nên dùng Visual InterDev 6.0 để soạn thảo các trang asp trong các ứng dụng Unicode... Điều này giải thích cho trường hợp một số trang web asp hiển thị không đúng dữ liệu Unicode được lưu trong các cơ sở dữ liệu như SQL Server 7.0/2000, MS Access 2000 Ngoài ra, các trang asp có sử dụng đoạn mã lệnh thiết lập CodePage là 65001 phải được lưu theo định dạng tương ứng là UTF-8 [6] Như vậy, việc thiết lập thuộc tính CodePage trong trang asp sẽ giúp cho webserver hiểu được các dữ liệu được... strSQL, Conn • Thiết kế và Lập trình ứng dụng web bằng ASP – Lê Đình Duy – NXB Thống kê, 2001 i=1 do while not rsCustomers.EOF Response.Write “Customer No” & i & “. ” Response.Write rsCustomers(“FirstName”) & “ ” & rsCustomers(“LastName”) & “” i = i+1 rsCustomers.MoveNext loop • Xây dựng trang web động với ASP – Nhóm tác giả ELICOM 2001 • ASP Databases – Nhóm tác giả SAIGONBOOK - 2001 • Professional... lưu trữ vẫn là windows-1252 10 http://support.microsoft.com/default.aspx?scid=kb;enus;Q245000 Có rất nhiều trang web tiếng Việt hiện nay gọi là dùng Unicode nhưng thực chất là Unicode theo dạng windows-1252 kể trên 11 http://support.microsoft.com/default.aspx?scid=kb;enus;Q245000 5 Kết luận 12 http://support.microsoft.com/default.aspx?scid=kb;[LN];Q254 313 Unicode ra đời nhằm khắc phục hạn chế về số... Để ngăn không cho trình duyệt cache lại các trang ASP, bạn đặt đoạn mã sau vào đầu trang : Để ngăn không cho webserver IIS cache lại các trang ASP, bạn phải vào màn hình quản trị của IIS (Microsoft . 159 Chương 5 NHẬP MÔN ASP 1. GIỚI THIỆU VỀ ASP Active Server Page (ASP) do Microsoft phát triển là môi trường lập trình. một form nhập liệu, sau khi người dùng nhấn nút Search để submit form, dữ liệu nhập sẽ được chuyển cho trang search .asp: <FORM ACTION=”search .asp NAME=f1

Ngày đăng: 03/10/2013, 03:20

Hình ảnh liên quan

Đoạn mã chương trình trên sẽ in ra màn hình lời chào “Good Morning” nếu thời điểm truy cập vào trang này là buổi sáng, ng ượ c  lại nó sẽ in ra màn hình lời chào “Hello” - NHẬP MÔN ASP

o.

ạn mã chương trình trên sẽ in ra màn hình lời chào “Good Morning” nếu thời điểm truy cập vào trang này là buổi sáng, ng ượ c lại nó sẽ in ra màn hình lời chào “Hello” Xem tại trang 2 của tài liệu.
4.3.3. Tạo bảng dữ liệu động - NHẬP MÔN ASP

4.3.3..

Tạo bảng dữ liệu động Xem tại trang 6 của tài liệu.
Hình 1– Kết quả của đoạn mã trên - NHẬP MÔN ASP

Hình 1.

– Kết quả của đoạn mã trên Xem tại trang 6 của tài liệu.
Ta sẽ dùng một vòng lặp để in tuần tự các dòng của bảng, với nội dung chứa trong cặp tag &lt;TR&gt; và &lt;/TR&gt;  - NHẬP MÔN ASP

a.

sẽ dùng một vòng lặp để in tuần tự các dòng của bảng, với nội dung chứa trong cặp tag &lt;TR&gt; và &lt;/TR&gt; Xem tại trang 7 của tài liệu.
Bảng sau liệt kê các OLEDB connection string cho một số hệ - NHẬP MÔN ASP

Bảng sau.

liệt kê các OLEDB connection string cho một số hệ Xem tại trang 7 của tài liệu.
Bảng sau liệt kê các ODBC connection string cho một số hệ - NHẬP MÔN ASP

Bảng sau.

liệt kê các ODBC connection string cho một số hệ Xem tại trang 8 của tài liệu.
5.1.2. Kết nối với cơ sở dữ liệu - NHẬP MÔN ASP

5.1.2..

Kết nối với cơ sở dữ liệu Xem tại trang 8 của tài liệu.
Có hai cách có thể hiển thị được kí tự theo bảng mã Unicode trong trình duyệt.  - NHẬP MÔN ASP

hai.

cách có thể hiển thị được kí tự theo bảng mã Unicode trong trình duyệt. Xem tại trang 17 của tài liệu.
Bước 2: Kết xuất dữ liệu dưới dạng bảng theo cách làm thông thường.   - NHẬP MÔN ASP

c.

2: Kết xuất dữ liệu dưới dạng bảng theo cách làm thông thường. Xem tại trang 19 của tài liệu.
Dòng đầu tiên của bảng chứa tên của các cột sẽ được hiển thị - NHẬP MÔN ASP

ng.

đầu tiên của bảng chứa tên của các cột sẽ được hiển thị Xem tại trang 19 của tài liệu.
liệu dưới dạng bảng, ta định dạng dữ liệu theo dạng dữ liệu các cột - NHẬP MÔN ASP

li.

ệu dưới dạng bảng, ta định dạng dữ liệu theo dạng dữ liệu các cột Xem tại trang 20 của tài liệu.

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan