แนะนำ: ใช้ ASP เพื่อเรียกมุมมองและขั้นตอนที่เก็บไว้ในฐานข้อมูล 1. คำนำหน้า ASP (หน้าเซิร์ฟเวอร์ที่ใช้งานอยู่) เป็นสภาพแวดล้อมการเขียนสคริปต์ฝั่งเซิร์ฟเวอร์ซึ่งรองรับโดย IIS3.0 ของ Microsoft หรือสูงกว่า สามารถใช้เพื่อสร้างหน้าเว็บแบบไดนามิกหรือสร้างเว็บแอปพลิเคชันที่มีประสิทธิภาพ หน้า ASP รวมถึงแท็ก HTML ข้อความและ
การแสดงพลอยคืออะไรเมื่อ ADO เข้าถึงฐานข้อมูล? หากคุณใช้โปรแกรมกระดานข่าวอิเล็กทรอนิกส์ในหลาย ๆ เว็บไซต์ในปัจจุบันคุณควรรู้ว่าเพื่อปรับปรุงความเร็วในการอ่านของหน้าโปรแกรมกระดานข่าวอิเล็กทรอนิกส์โดยทั่วไปไม่ได้แสดงรายการทั้งหมดในหน้าเดียว แต่แบ่งออกเป็นหลายหน้าเพื่อแสดงโพสต์จำนวนหนึ่งต่อหน้าเช่น 20 โพสต์ นี่คือการแสดงการแบ่งแยกของการสืบค้นฐานข้อมูล หากคุณยังไม่เข้าใจคุณจะเข้าใจด้วยการดูผลลัพธ์การสืบค้นของเครื่องมือค้นหาเช่น Yahoo
ดังนั้นเราจะแยกแยะผลลัพธ์การสืบค้นของฐานข้อมูลได้อย่างไร มีหลายวิธี แต่มีสองวิธีหลัก:
1. อ่านระเบียนทั้งหมดในฐานข้อมูลที่ตรงกับเงื่อนไขการสืบค้นลงในระเบียนในครั้งเดียวและเก็บไว้ในหน่วยความจำ จากนั้นจัดการการประมวลผลการเพจผ่านคุณลักษณะหลายอย่างที่จัดทำโดยวัตถุ ADO Recordset ที่รองรับการประมวลผลการเพจโดยเฉพาะ: หน้า (ขนาดหน้า), pagecount (หมายเลขหน้า) และ AbsolutePage (หน้าสัมบูรณ์)
2. ตามคำแนะนำของลูกค้าจำนวนระเบียนที่ระบุจะต้องอ่านและแสดงจากบันทึกที่ตรงตามเงื่อนไขการสืบค้นในแต่ละครั้ง
ความแตกต่างที่สำคัญระหว่างทั้งสองคืออดีตอ่านบันทึกทั้งหมดเป็นหน่วยความจำในครั้งเดียวจากนั้นทำการตัดสินและการวิเคราะห์ตามลำดับตามคำแนะนำเพื่อให้ได้ผลของการแสดงการปนเปื้อนในขณะที่หลังทำให้การตัดสินตามคำแนะนำและอ่านจำนวนบันทึกที่ระบุ
เราสามารถรู้สึกได้อย่างชัดเจนว่าเมื่อจำนวนระเบียนในฐานข้อมูลถึงหลายหมื่นหรือมากกว่านั้นประสิทธิภาพการดำเนินการของวิธีแรกจะต่ำกว่าวิธีที่สองอย่างมีนัยสำคัญเพราะเมื่อลูกค้าแต่ละคนสอบถามหน้าบันทึกทั้งหมดที่ตรงตามเกณฑ์จะต้องเก็บไว้ในหน่วยความจำเซิร์ฟเวอร์ หากลูกค้ามากกว่า 100 คนสอบถามออนไลน์ในเวลาเดียวกันประสิทธิภาพการดำเนินการของแอปพลิเคชัน ASP จะได้รับผลกระทบอย่างมาก อย่างไรก็ตามเมื่อจำนวนเร็กคอร์ดบนเซิร์ฟเวอร์และจำนวนคนออนไลน์ในเวลาเดียวกันไม่ใหญ่มากประสิทธิภาพการดำเนินการของทั้งสองนั้นเกือบจะเหมือนกัน ในเวลานี้วิธีแรกจะถูกนำมาใช้โดยทั่วไปเนื่องจากการเขียนโปรแกรม ASP ของวิธีแรกนั้นง่ายกว่าและชัดเจนกว่าวิธีที่สองมาก
ที่นี่ผู้เขียนจะใช้โปรแกรม ASP BBS ทั่วไปของเราเป็นตัวอย่างในการวิเคราะห์วิธีการใช้ฟังก์ชั่นการแสดงการปนเปื้อนในโปรแกรม BBS เนื่องจากจำนวนระเบียนฐานข้อมูลและจำนวนคนที่เข้าถึงพร้อมกันในโปรแกรม BBS ที่เราใช้โดยทั่วไปจะไม่มากเกินไปดังนั้นตัวอย่างโปรแกรมต่อไปนี้จึงเป็นวิธีการแสดงการปนเปื้อนครั้งแรกที่แนะนำก่อนหน้านี้
การแสดงบรรยากาศเมื่อ ADO เข้าถึงฐานข้อมูลจริง ๆ แล้วเพื่อใช้งานระเบียนของชุดเร็กคอร์ด ดังนั้นเราต้องเข้าใจคุณสมบัติและวิธีการของวัตถุ reordset ก่อน:
แอตทริบิวต์ BOF: ตัวบ่งชี้ปัจจุบันหมายถึงธุรกรรมแรกไปยังชุดบันทึก
แอตทริบิวต์ EOF: ตัวบ่งชี้ปัจจุบันหมายถึงธุรกรรมล่าสุดไปยังชุดบันทึก
วิธีการย้าย: ย้ายตัวชี้วัดไปยังบันทึกในชุดบันทึก
คุณสมบัติ AbsolutePage: ตั้งค่าตำแหน่งปัจจุบันของบันทึกที่หน้าใด คุณสมบัติ AbsolutePosition: ตำแหน่งปัจจุบันของตัวชี้วัดในชุดระเบียน
คุณสมบัติ Pagecount: แสดงจำนวนหน้าของข้อมูลที่มีวัตถุบันทึกชุด
คุณสมบัติ PAGESIZE: แสดงจำนวนระเบียนที่แสดงในแต่ละหน้าของวัตถุ RecordSet
คุณสมบัติ RecordCount: แสดงจำนวนระเบียนทั้งหมดของวัตถุ RecordSet
ลองมาดูคุณลักษณะและวิธีการที่สำคัญเหล่านี้ให้ละเอียดยิ่งขึ้น
1. แอตทริบิวต์ BOF และ EOF
โดยปกติแล้วเราจะเขียนรหัสในโปรแกรม ASP เพื่อตรวจสอบแอตทริบิวต์ BOF และ EOF เพื่อทราบตำแหน่งของชุดเร็กคอร์ดที่ชี้ไปที่ตัวบ่งชี้ปัจจุบัน การใช้แอตทริบิวต์ BOF และ EOF เราสามารถรู้ได้ว่าวัตถุชุดบันทึกมีระเบียนหรือไม่หรือว่าบรรทัดบันทึกที่เคลื่อนที่เกินขอบเขตของวัตถุ RecordSet
ชอบ:
< % ถ้าไม่ใช่ rs.eof แล้ว ... %>
< % ถ้าไม่ (Rs.Bof และ Rs.eof) %>
หากตำแหน่งระเบียนปัจจุบันอยู่ก่อนแถวแรกของวัตถุ RecordSet คุณสมบัติ BOF จะส่งคืนจริงมิฉะนั้นจะส่งคืนเท็จ
หากตำแหน่งระเบียนปัจจุบันอยู่หลังจากแถวสุดท้ายของวัตถุ RecordSet คุณสมบัติ EOF จะส่งคืนจริงมิฉะนั้นจะส่งคืนเท็จ
ทั้ง BOF และ EOF เป็นเท็จ: หมายความว่าตัวบ่งชี้อยู่ในชุดระเบียน
BOF เป็นจริง: ตัวบ่งชี้ปัจจุบันหมายถึงระเบียนแรกไปยังชุดบันทึก EOF เป็นจริง: ตัวบ่งชี้ปัจจุบันหมายถึงระเบียนสุดท้ายไปยังชุดบันทึก
ทั้ง BOF และ EOF เป็นจริง: ไม่มีบันทึกในชุดบันทึก
2. วิธีการย้าย
คุณสามารถใช้วิธีการย้ายเพื่อย้ายตัวชี้วัดไปยังบันทึกในชุดบันทึกด้วยไวยากรณ์ดังนี้:
Rs.move numrecords เริ่มต้น
ที่นี่ RS เป็นตัวแปรวัตถุซึ่งระบุวัตถุ recordSet ที่ต้องการย้ายเมื่อตำแหน่งบันทึกปัจจุบัน; NumRecords เป็นสูตรการคำนวณจำนวนบวกและลบที่กำหนดจำนวนการเคลื่อนไหวของตำแหน่งบันทึกปัจจุบัน Start เป็นรายการเสริมเพื่อระบุฉลากสำหรับการเริ่มต้นของบันทึก
วัตถุระเบียนทั้งหมดรองรับวิธีการย้าย หากพารามิเตอร์ numrecords มากกว่าศูนย์ตำแหน่งบันทึกปัจจุบันจะเคลื่อนที่ไปยังจุดสิ้นสุด ถ้ามันน้อยกว่าศูนย์ตำแหน่งบันทึกปัจจุบันจะย้ายไปที่จุดเริ่มต้น; หากวัตถุ RecordSet ว่างเปล่าเรียกวิธีการย้ายข้อผิดพลาดจะถูกสร้างขึ้น
MoveFirst Method: เลื่อนตำแหน่งระเบียนปัจจุบันไปยังระเบียนแรก
Movelast Method: เลื่อนตำแหน่งระเบียนปัจจุบันไปยังระเบียนสุดท้าย
Movenext Method: เลื่อนตำแหน่งระเบียนปัจจุบันไปยังระเบียนถัดไป MovePrevious Method: ย้ายตำแหน่งบันทึกปัจจุบันไปยังระเบียนก่อนหน้า
ย้าย [n] วิธี: ย้ายดัชนีไปยังระเบียนปากกา n, n เริ่มต้นจาก 0
3. คุณลักษณะ AbsolutePage
คุณสมบัติ AbsolutePage ตั้งค่าหน้าหน้าของหน้าเว็บที่บันทึกปัจจุบันอยู่ที่หน้า; ใช้คุณสมบัติหน้าเว็บเพื่อหารวัตถุชุดบันทึกเป็นหน้าตรรกะและจำนวนระเบียนสำหรับแต่ละหน้าคือหน้า (ยกเว้นหน้าสุดท้ายที่อาจมีบันทึกหน้าน้อยกว่าหน้า) จะต้องมีการบันทึกไว้ที่นี่ว่าผู้ให้บริการข้อมูลบางรายไม่สนับสนุนคุณสมบัตินี้ดังนั้นควรระมัดระวังเมื่อใช้งาน
เช่นเดียวกับคุณสมบัติ AbsolutePosition คุณสมบัติ AbsolutePage เริ่มต้นด้วย 1 ถ้าบันทึกปัจจุบันเป็นแถวแรกของ recordSet, AbsolutePage คือ 1. คุณสมบัติ AbsolutePage สามารถตั้งค่าให้ย้ายไปยังตำแหน่งบันทึกแถวแรกของหน้าระบุ
4. ทรัพย์สินสัมบูรณ์
หากคุณต้องการกำหนดตำแหน่งปัจจุบันของตัวชี้วัดในชุดบันทึกคุณสามารถใช้คุณสมบัติ AbsolutePosition
ค่าของคุณสมบัติ AbsolutePosition คือตำแหน่งของตัวบ่งชี้ปัจจุบันที่สัมพันธ์กับการทำธุรกรรมครั้งแรกซึ่งเริ่มต้นจาก 1 นั่นคือ AbsolutePosition ของธุรกรรมแรกคือ 1
โปรดทราบว่าเมื่อเข้าถึงชุดบันทึกไม่มีการรับประกันว่าชุดบันทึกจะปรากฏในลำดับเดียวกันทุกครั้ง
ในการเปิดใช้งาน AbsolutePosition คุณต้องตั้งค่าให้ใช้เคอร์เซอร์ผู้ใช้ (ตัวชี้) ก่อนและรหัส ASP มีดังนี้:
rs2.cursorLocation = 3
5. ทรัพย์สิน Pagecount
ใช้คุณสมบัติ PageCount เพื่อกำหนดจำนวนหน้าข้อมูลที่มีวัตถุบันทึกชุด หน้านี่คือการรวบรวมบันทึกข้อมูลและขนาดของมันเท่ากับการตั้งค่าของคุณสมบัติหน้า แม้ว่าจำนวนระเบียนในหน้าสุดท้ายจะน้อยกว่าค่าของหน้าเว็บ แต่หน้าสุดท้ายถือเป็นหน้าของ pagecount จะต้องสังเกตว่าผู้ให้บริการข้อมูลบางรายไม่สนับสนุนคุณสมบัตินี้
6. แอตทริบิวต์หน้าเว็บ
คุณสมบัติหน้าเว็บเป็นกุญแจสำคัญในการพิจารณาว่า ADO จะแยกแยะอย่างไรเมื่อเข้าถึงฐานข้อมูล การใช้มันคุณสามารถตัดสินใจได้ว่ามีกี่ระเบียนที่มีหน้าตรรกะ ตั้งค่าและสร้างขนาดหน้าเพื่อให้คุณสมบัติ AbsolutePage ถูกย้ายไปยังระเบียนแรกของหน้าตรรกะอื่น ๆ สามารถตั้งค่าคุณสมบัติหน้าเว็บได้ตลอดเวลา
7. สมบัติ RecordCount
นี่เป็นคุณสมบัติที่พบได้ทั่วไปและสำคัญมาก เรามักจะใช้คุณสมบัติ RecordCount เพื่อค้นหาจำนวนระเบียนที่มีวัตถุบันทึกไว้ ตัวอย่างเช่น: < %totle = rs.recordCount %> หลังจากทำความเข้าใจคุณสมบัติและวิธีการข้างต้นของวัตถุบันทึกชุดแล้วลองพิจารณาวิธีการใช้เพื่อให้บรรลุวัตถุประสงค์ของการแสดงการปนเปื้อนของเรา ก่อนอื่นเราสามารถตั้งค่าสำหรับคุณสมบัติหน้าเว็บซึ่งระบุจำนวนแถวที่ประกอบด้วยหน้าเว็บที่นำมาจากกลุ่มบันทึก จากนั้นใช้คุณสมบัติ RecordCount เพื่อกำหนดจำนวนระเบียนทั้งหมด จากนั้นหารจำนวนระเบียนทั้งหมดโดยหน้าเพื่อให้ได้จำนวนหน้าทั้งหมดที่แสดง ในที่สุดการเข้าถึงหน้าเว็บที่ระบุสามารถทำได้ผ่านคุณสมบัติ AbsolutePage ดูเหมือนว่าจะไม่ซับซ้อนมาก มาดูกันว่าควรใช้โปรแกรมอย่างไร
เราได้สร้างแอปพลิเคชั่น BBS แบบง่าย ๆ ซึ่งมีห้าฟิลด์ต่อไปนี้ในฐานข้อมูล: ID, จำนวนอัตโนมัติของแต่ละโพสต์; เรื่องหัวเรื่องของแต่ละโพสต์; ชื่อชื่อของผู้ใช้ที่เพิ่มโพสต์; อีเมลที่อยู่อีเมลของผู้ใช้ Postdate เวลาของการเพิ่มโพสต์ DSN ของฐานข้อมูลคือ BBS เราวางขั้นตอนทั้งหมดในการแสดงโพสต์เพจในกระบวนการที่เรียกว่า showlist () เพื่อการโทรง่าย ขั้นตอนมีดังนี้:
| ต่อไปนี้เป็นเนื้อหาที่ยกมา: /'---- BBS แสดงโพสต์เพจ ---- < %sub showlist () %> - pgsz = 20 /'สวิตช์กำหนดระบุจำนวนโพสต์ที่แสดงในแต่ละหน้าค่าเริ่มต้นคือ 20 โพสต์ต่อหน้า SET Conn = Server.CreateObject (ADODB.Connection) ตั้งค่า rs = server.createObject (adodb.recordset) sql = เลือก * จากคำสั่งข้อความโดย id desc /'สอบถามโพสต์ทั้งหมดและจัดเรียงตามลำดับย้อนกลับโดยโพสต์รหัส conn.open bbs Rs.Open SQL, Conn, 1,1 ถ้า Rs.RecordCount = 0 แล้ว Response.write <p> <enter> ขออภัยไม่มีข้อมูลที่เกี่ยวข้องในฐานข้อมูล! </enter> </p> อื่น rs.pagesize = cint (pgsz) /'ตั้งค่าของคุณสมบัติหน้าเว็บ Total = Int (Rs.RecordCount / PGSZ * -1) * -1 / 'คำนวณจำนวนหน้าทั้งหมดที่สามารถแสดงได้ pageno = คำขอ (pageno) ถ้า pageno = จากนั้น Pageno = 1 อื่น pageno = pageno 1 pageno = pageno-1 สิ้นสุดถ้า scrollaction = คำขอ (scrollaction) ถ้า scrollaction = หน้าก่อนหน้าแล้ว pageno = pageno-1 สิ้นสุดถ้า ถ้า scrollaction = หน้าถัดไปแล้ว pageno = pageno 1 สิ้นสุดถ้า ถ้า pageno <1 แล้ว Pageno = 1 สิ้นสุดถ้า n = 1 Rs.absolutePage = pageno Response.write <enter> ตำแหน่ง = rs.pagesize*pageno PageBegin = ตำแหน่ง rs.pagesize 1 ถ้าตำแหน่ง <rs.recordcount แล้ว pagend = ตำแหน่ง อื่น pagend = rs.recordcount สิ้นสุดถ้า Response.write <p> <font color = 'Navy/'> <b> ผลลัพธ์การสืบค้นฐานข้อมูล: </b> Response.write (มีข้อมูลทั้งหมด & rs.recordcount & ชิ้นส่วนที่ตรงตามเงื่อนไข, display & pagebegin &-& pagend &) </font> </p> Response.write <width table = 600 border = 1 cellpadding = 4 cellspacing = 0 bgcolor =#ffffff> response.write <tr bgcolor =#5fb5e2> <font size = 2> <td> <b> หัวข้อ < /b> < /td> <td> <b> ผู้ใช้ </b> < /td> <td> <b> อีเมล </b> </td> <td> ทำในขณะที่ไม่ (RS ไม่มีอะไร) rowCount = rs.pagesize ทำในขณะที่ไม่ใช่ Rs.EOF และ ROWCOUNT> 0 ถ้า n = 1 แล้ว response.write <tr bgcolor =#ffffff> อื่น Response.write <tr bgcolor =#eeeeee> สิ้นสุดถ้า n = 1-n %> <td> <span style = font-size: 9pt> <a href = /'view.asp? key = < % = rs (id) %> /'> < % = rs (หัวเรื่อง) %> </a> </span> </td> <td> <span style = font-size: 9pt> < % = rs (ชื่อ) %> < /a> </span> </td> <td> <span style = font-size: 9pt> <a href = mailto: < % = rs (อีเมล) % >> < % = rs (อีเมล) %> </a> </span> </td> <td> <span style = font-size: 9pt> < % = rs (postdate) %> </span> </td> </tr> - RowCount = RowCount - 1 Rs.Movenext วง ตั้งค่า rs = rs.nextrecordset วง conn.close ตั้งค่า rs = ไม่มีอะไร ตั้งค่า conn = ไม่มีอะไร - </table> <วิธีการฟอร์ม = get action = list.asp> <ประเภทอินพุต = ชื่อที่ซ่อน = ค่า pageno = < % = pageno % >> - ถ้า pageno> 1 แล้ว response.write <ประเภทอินพุต = ส่ง name =/'scrollaction/' value =/'หน้าก่อนหน้า/'> สิ้นสุดถ้า ถ้า rowCount = 0 และ pageno <> ทั้งหมดแล้ว response.write <อินพุตประเภท = ส่งชื่อ =/'scrollaction/' value =/'หน้าถัดไป/'> สิ้นสุดถ้า Response.write </form> สิ้นสุดถ้า - < % end sub %> |
ฉันเชื่อว่าทุกคนควรจะสามารถเข้าใจโปรแกรมข้างต้นได้อย่างเต็มที่ดังนั้นผู้เขียนจะไม่อธิบายรายละเอียดที่นี่ เป็นที่น่าสังเกตว่ามีการใช้เคล็ดลับเล็ก ๆ ในโปรแกรมนี้ <อินพุตประเภท = ชื่อที่ซ่อน = ค่า pageno = < % = pageno % >> ซึ่งเป็นข้อความลับที่ใช้ในการส่งข้อมูลทุกครั้งที่ไฟล์ ASP ถูกเรียก เนื่องจากเราจำเป็นต้องผ่านพารามิเตอร์ที่แสดงถึงหมายเลขหน้าปัจจุบันทุกครั้งที่โปรแกรมถูกเรียกคุณอาจนึกถึงการใช้เซสชัน แต่ในแง่ของการบันทึกทรัพยากรระบบและความเป็นสากลโดยใช้รูปแบบที่ซ่อนอยู่เพื่อส่งข้อมูลจะได้ผลลัพธ์ที่ดีขึ้น
โอเคถึงเวลาที่จะบอกลาอีกครั้ง หากคุณไม่เข้าใจโปรแกรมที่ระบุไว้ในบทความนี้อย่างเต็มที่คุณต้องเพิ่มเชื้อเพลิงลงในไวยากรณ์ของ VBScript หากคุณมีคำถามบางอย่างฉันสามารถพยายามอย่างเต็มที่เพื่อตอบคำถามเหล่านั้น หากคุณมีคำแนะนำที่ดีกว่าโปรดส่งจดหมายถึงฉัน
แชร์: สร้างหน้าเว็บคงที่โดยแทนที่แท็ก ทุกคนรู้ว่าหน้าเว็บคงที่ HTML มีแนวโน้มที่จะได้รับการจัดทำดัชนีโดยเครื่องมือค้นหา การสร้างหน้าเว็บ HTML แบบไดนามิกยังสามารถเพิ่มจำนวนหน้าเว็บบนเว็บไซต์และเครื่องมือค้นหาอาจรวมถึงเพิ่มเติม อะไรคือจุดที่การปรับปรุงคุณภาพของหน้าเว็บ? ฉันคิดว่าทุกคนก็รู้เช่นกัน สำหรับ