แนะนำ: ASP ใช้จุดสิ้นสุดของชื่อยาวด้วยจุดไข่ปลา การแยกบทความยาวจากฐานข้อมูลเป็นอุปสรรคต่อการจัดวางของหน้าเว็บเสมอ ดังนั้นฉันต้องการแยกส่วนหนึ่งของตัวละครอย่างสม่ำเสมอและจากนั้นก็มี ... การแทนที่หลังจากนั้น 1. หลักการ: พิจารณาว่าความยาวของบทความเกินความยาวที่ระบุหรือไม่ หากเกินความยาวที่ระบุจะมีเพียงหนึ่งที่ระบุเท่านั้นที่จะแสดง
โปรแกรมเมอร์ ASP จำนวนมากมีประสบการณ์ในการดำเนินการสืบค้นฐานข้อมูลจากนั้นแสดงผลลัพธ์การสืบค้นในตาราง HTML โดยปกติเราทำสิ่งนี้:
| ต่อไปนี้เป็นเนื้อหาที่ยกมา: - 'สร้างการเชื่อมต่อ / recordset 'เติมข้อมูลลงในวัตถุ RecordSet - <table> < % ทำในขณะที่ไม่ใช่ rs.eof %> <tr> <td> <% = rs (field1)%> </td> <td> <% = rs (field2)%> </td> - </tr> <% Rs.Movenext ลูป %> </table> |
หากมีผลลัพธ์การสืบค้นมากมายเซิร์ฟเวอร์จะใช้เวลามากในการอธิบายสคริปต์ ASP ของคุณเนื่องจากมีการตอบสนองมากมายคำสั่งให้ประมวลผล หากคุณใส่ผลลัพธ์ทั้งหมดในสตริงที่ยาว (จาก <blable> ถึง </table>) เซิร์ฟเวอร์จะตีความคำตอบการเขียนคำสั่งและมันจะเร็วขึ้นมาก ผู้ชายที่มีความสามารถบางคนที่ Microsoft ได้เปลี่ยนความคิดของพวกเขาให้เป็นจริง (หมายเหตุนี่เป็นคุณสมบัติที่ ADO 2.0 ขึ้นไปเท่านั้นหากคุณยังคงใช้เวอร์ชันก่อนหน้าโปรดอัปเกรดเป็นเวอร์ชันล่าสุด)
ด้วยวิธีการ GetString เราสามารถใช้การตอบสนองเพียงครั้งเดียวเขียนเพื่อแสดงเอาต์พุตทั้งหมดซึ่งเป็นเหมือนลูปลูปที่สามารถตรวจสอบได้ว่าชุดบันทึกเป็น EOF หรือไม่
การใช้งานของ GetString มีดังนี้ (พารามิเตอร์ทั้งหมดเป็นทางเลือก):
string = recordset.getString (stringFormat, numrows, columnDelimiter, rowdelimiter, nullexpr)
ในการสร้างตาราง HTML จากผลการบันทึกเราจำเป็นต้องดูแลประมาณ 3 จาก 5 พารามิเตอร์ของ GetString:
คอลัมน์ DELIMITER (รหัส HTML ที่แยกคอลัมน์ของชุดบันทึก), rowdelimiter (รหัส HTML ที่แยกแถวของชุดบันทึก) และ nullexpr (รหัส HTML ที่ควรสร้างเมื่อบันทึกปัจจุบันว่างเปล่า) อย่างที่คุณเห็นในตัวอย่างของการสร้างตาราง HTML ด้านล่างแต่ละคอลัมน์จะถูกคั่นด้วย <td> ... </td> และแต่ละแถวจะถูกคั่นด้วย <tr> ... </tr> ลองดูที่โค้ดสำหรับตัวอย่าง
| ต่อไปนี้เป็นเนื้อหาที่ยกมา: < %@ language = vbscript %> <% ตัวเลือกเทคนิคการเข้ารหัสที่ดี 'สร้างการเชื่อมต่อกับ db หรี่ SET Conn = Server.CreateObject (ADODB.Connection) conn.open dsn = Northwind; 'สร้างชุดระเบียน สลัวอาร์เอส ตั้งค่า rs = server.createObject (adodb.recordset) Rs.Open Select * จากตารางที่ 1, Conn 'เก็บสตริงใหญ่ของเรา สลัว strTable = rs.getString (,, </td> <td>, </td> </tr> <tr> <td> - - <html> <body> <table> <tr> <td> < % response.write (strtable) %> </tr> </td> </table> </body> </html> - 'ทำความสะอาด! Rs.close ตั้งค่า rs = ไม่มีอะไร conn.close ตั้งค่า conn = ไม่มีอะไร - |
สตริง strtable ใช้เพื่อจัดเก็บรหัสที่เราสร้างจากผลลัพธ์ตาราง HTML ของ SELECT * จากตารางที่ 1
จะมี </td> <td> รหัส HTML ระหว่างแต่ละคอลัมน์ของตาราง HTML และรหัส HTML ระหว่างแต่ละแถวคือ </td> </td> <tr> <td> วิธีการ getString ส่งออกรหัส HTML ที่ถูกต้องและเก็บไว้ใน strtable เพื่อให้เราต้องการเพียงหนึ่งบรรทัดของการตอบสนองเขียนเพื่อส่งออกระเบียนทั้งหมดในชุดข้อมูล ลองมาดูตัวอย่างง่ายๆโดยสมมติว่าผลลัพธ์การสืบค้นของเราส่งคืนแถวและคอลัมน์ต่อไปนี้:
| ต่อไปนี้เป็นเนื้อหาที่ยกมา: COL1 COL2 COL3 Row1 Bob Smith 40 แถว 1 เอ็ดแฟรงค์ 43 ROW1 SUE เป็นโมฆะ 42 |
จากนั้นสตริงที่ส่งคืนโดยคำสั่ง GetString จะเป็น:
| ต่อไปนี้เป็นเนื้อหาที่ยกมา: Bob </td> <td> Smith </td> <td> 40 </td> <td> </td> </td> </tr> <tr> <td> TD > เอ็ด ... |
พูดตามตรงสตริงนี้ดูยาวและยุ่งเหยิง แต่เป็นรหัส HTML ที่เราต้องการ (โปรดทราบว่าในรหัส HTML ที่เขียนด้วยลายมือเราใส่ <bable> <tr> <td> ไว้ด้านหน้าของการตอบสนองการเขียนและ </td> </tr> </table> ด้านหลังนี่เป็นเพราะสตริงที่จัดรูปแบบของเราไม่มีสตริงที่จำเป็นสำหรับการเริ่มต้นและจุดสิ้นสุดของตารางเหล่านี้
แบ่งปัน: ข้อผิดพลาดและโซลูชันทั่วไปในการโทรฐานข้อมูลใน ASP ต่อไปนี้เป็นข้อผิดพลาดบางอย่างในการเรียกฐานข้อมูลในโปรแกรม ASP ที่มักพบในระหว่างการบำรุงรักษาเครื่องเสมือน ตอนนี้เรารวบรวมและจัดระเบียบพวกเขาดังนี้: ไม่สามารถเปิดคำหลักรีจิสตรี (8007000E) ผู้ให้บริการ Microsoft OLE DB สำหรับข้อผิดพลาดของไดรเวอร์ ODBC '8007000E' [MICR