หลังจากอ่านคำแนะนำมามากมาย ฉันรู้ว่าประสิทธิภาพการดำเนินการของ set rs=conn.execute(sql) นั้นสูงกว่า rs.open sql,conn,1,1 มาก แต่มีวิธีการดำเนินการของ set rs=conn หลายวิธี ดำเนินการ(sql) ข้อเสียประการแรกคือไม่มีคุณลักษณะการเพจ เช่น rs.pagesize, rs, Absolutepage และคุณลักษณะอื่นๆ ในกรณีนี้ ให้ตั้งค่าในลักษณะนี้ แม้ว่าความเร็วในการดำเนินการของ rs=conn.execute(sql) จะเร็วกว่า แต่ก็ไม่สามารถเพจได้ตามปกติ ฉันควรทำอย่างไร -
วันรุ่งขึ้น ฉันตรวจสอบข้อมูลบนอินเทอร์เน็ต และทันใดนั้นฉันก็คิดว่าจะใส่ข้อมูลที่ต้องการลงในอาร์เรย์แล้วแบ่งหน้าอาร์เรย์ได้หรือไม่ อันดับแรก ฉันนำผลลัพธ์การสืบค้นของ set rs=conn.execute(sql) ออก และแนบไปกับอาร์เรย์ผ่าน rs.getrows() ดังนั้นฉันจึงค้นหาโพสต์การแบ่งหน้าบนเว็บไซต์ต่างๆ แม้ว่าฉันจะพบโพสต์การแบ่งหน้าประสิทธิภาพสูงจำนวนมากก็ตาม ( รวมถึงขั้นตอนการจัดเก็บ ฯลฯ ) แต่ปรากฎว่าทั้งหมดจำเป็นต้องดำเนินการผ่าน SQL นั่นคือคำสั่ง SQL จะต้องดำเนินการเมื่อเปลี่ยนหน้า ในเวลานี้ หัวของฉันเวียนหัวและเฉพาะคำสั่ง SQL เท่านั้นที่ได้รับการปรับปรุงให้เหมาะสม . ณ เวลานี้ ไม่มีทางเลยจริงๆ เลยต้องทำเอง เยี่ยมมาก! ในที่สุดฉันก็ได้ร่างการแบ่งหน้าอาเรย์แบบคร่าว ๆ เสร็จแล้ว ให้ทุกคนศึกษามันด้วยกัน! รหัสมีดังนี้:
ก่อนอื่นจะมีหน้าแบบสอบถามindex.asp:
<html xmlns=http://www.w3.org/1999/xhtml>
<หัว>
<meta http-equiv=เนื้อหาประเภทเนื้อหา=ข้อความ/html; charset=gb2312 />
<title>เอกสารที่ไม่มีชื่อ</title>
</หัว>
<body><FORM id=SearchForm name=SearchForm method=post action=search.asp?act=cha>
<คลาส div=อินพุต>
<input id=keyword onmouseover=this.focus() title=ค้นหาบันทึกข้อความของคุณอย่างรวดเร็ว onfocus=this.select() class=in maxlength=35 name=keyword />
<select style=width:120px;margin-top:-25px name=ChannelID>
<option value=k2>แสดงความคิดเห็น</option>
<option value=k1>เนื้อหาข้อความ</option>
</เลือก>
<Input id=search_btn type=submit value=query>
</div>
</รูปแบบ>
</ร่างกาย>
</html>
รหัส search.asp:
<html xmlns=http://www.w3.org/1999/xhtml>
<หัว>
<meta http-equiv=เนื้อหาประเภทเนื้อหา=ข้อความ/html; charset=gb2312 />
<title>เอกสารที่ไม่มีชื่อ</title>
</หัว>
<ร่างกาย>
-
ถ้า request.querystring(act)=cha แล้ว
search_type=request.FORM(ChannelID)
คำหลัก=request.form(คำหลัก)
ถ้า search_type=k1 ให้ "ค้นหาตามเนื้อหาข้อความ"
sql=select * จาก gbook_rec โดยที่ g_content เช่น '%&keywords&%'
ElseIf search_type=k2 แล้ว
'ถ้า search_type=k2 ให้'ค้นหาตามบุคคลที่ฝากข้อความไว้
sql=select * จาก gbook_rec โดยที่ g_name เช่น '%&keywords&%'
อื่น
การตอบสนองสิ้นสุด
สิ้นสุดถ้า
ตั้งค่า rs=conn.execute(sql)
ถ้า rs.eof และ rs.bof แล้ว
-
<div class=search>ไม่พบบันทึกที่คุณกำลังมองหา! </div>
-
การตอบสนองสิ้นสุด
อื่น
aResults=rs.getrows()' นำข้อมูลออกมาและใส่ลงในอาร์เรย์ ROW
แอปพลิเคชัน (ข้อมูล) = a ผลลัพธ์
ตั้งค่า rs=nothing
conn.close 'ปิดฐานข้อมูล'
สิ้นสุด ถ้า
สิ้นสุดถ้า
aResults=แอปพลิเคชัน(ข้อมูล)
หรี่ i, แถว, ขนาดหน้า, epage, numb, จำนวนหน้า, fenye
numb=UBound(aResults,2)+1 'จำนวนแถวที่บันทึกไว้ทั้งหมด
pagesize=2 'จำนวนรายการต่อหน้า
ถ้า numb Mod pagesize = 0 จากนั้น 'ตัดสินจำนวนหน้าทั้งหมด'
จำนวนหน้า=Int(จำนวน/ขนาดหน้า)
อื่น
จำนวนหน้า=Int(จำนวน/ขนาดหน้า)+1
สิ้นสุดถ้า
epage=request.querystring(หน้า)
ถ้า epage= ดังนั้น epage=1
สำหรับ i=(epage-1)*pagesize ถึง epage*pagesize-1
ถ้า i>UBound(aResults,2) หรือ i<0 ให้ออกเพื่อ
-
<คลาส div=เนื้อหา>
<ul><li>บันทึก<%=i+1%></li>
<li>แสดงความคิดเห็น: <%=aResults(1,i)%></li>
<li>เนื้อหา: <%=aผลลัพธ์(2,i)%></li>
<li>เวลา:<%=aผลลัพธ์(3,i)%></li>
<li>IP:<%=aผลลัพธ์(5,i)%></li>
</ul>
</div>
-
ต่อไป
ถ้าชา>ขนาดหน้าแล้ว
fenye=<a href=search.asp?page=1>หน้าแรก</a>
fenye=fenye&<a href=search.asp?page=&epage-1& title=&epage-1&>หน้าก่อนหน้า</a>
fenye=fenye&<a href=search.asp?page=&epage+1& title=&epage+1&>หน้าถัดไป</a>
fenye=fenye&<a href=search.asp?page=&pagecount&>หน้าสุดท้าย</a>
เฟนเย=เฟนเย&<BR>
fenye=fenye&จำนวนหน้า &จำนวนหน้า&, หน้าปัจจุบัน &epage&, บันทึกทั้งหมดคือ: &numb
ตอบกลับเขียน fenye
จบถ้า
-
</ร่างกาย>
</html>
สรุป: ฉันคิดว่าโค้ดข้างต้นไม่จำเป็นต้องเชื่อมต่อกับฐานข้อมูลยกเว้นการสืบค้นครั้งแรก และไม่จำเป็นต้องเชื่อมต่อกับฐานข้อมูลในเวลาอื่น ซึ่งมีประโยชน์มากสำหรับการประหยัดทรัพยากรเมื่อทำการสืบค้นข้อมูลขนาดใหญ่หรือเมื่อมี มีคนเชื่อมต่อกันมากมาย! นอกจากนี้ อาร์เรย์การสืบค้นจะถูกบันทึกไว้ในวัตถุแอปพลิเคชัน และคุณยังสามารถตัดสินสิ่งที่ผู้อื่นสอบถามโดยพิจารณาจากแอปพลิเคชัน (ข้อมูล) (ชื่อผู้ใช้) อย่างไรก็ตาม รหัสนี้เป็นรุ่นแรกและจำเป็นต้องได้รับการปรับปรุงโดยความพยายามของทุกคนใน อนาคต! ฉันหวังว่าทุกคนจะให้ความสนใจและสนับสนุน ขอบคุณ!
ทดสอบ.rar