โดยทั่วไปแล้ว SQL นี้เหมาะสำหรับใช้กับฐานข้อมูลขนาดเล็กเท่านั้น การวนซ้ำใน ASP ก็ไม่มีประสิทธิภาพเช่นกัน เป็นการดีกว่าที่จะไม่ใช้มันในฐานข้อมูลขนาดใหญ่ หากเป็นฐานข้อมูลขนาดใหญ่โปรดติดต่อเจ้าชายเพื่อขอคำสั่ง SQL อื่นที่เขียนโดยผู้เชี่ยวชาญ ฟังก์ชันคือ: ใช้คำหลักเป็นดัชนี ค้นหาฐานข้อมูลทั้งหมด จากนั้นส่งคืนชื่อตารางและชื่อคอลัมน์ที่มีคำหลักนั้นอยู่ (จะดีมาก...โดยเฉพาะอย่างยิ่งเมื่อคุณไม่พบตารางที่มีชื่อผู้ใช้และรหัสผ่านในระหว่างการบุกรุก หากคุณสามารถค้นหาฟิลด์ได้โดยตรงโดยการป้อนคำหลัก ผู้ดูแลระบบ...คุณไม่จำเป็นต้องดูที่ ทีละตาราง) ดังนั้น จากข้อความดังกล่าว ผมจึงเขียนสคริปต์ asp เพื่ออำนวยความสะดวกในการค้นหาฐานข้อมูลในอนาคต
รหัสมีดังนี้:
คัดลอกรหัสรหัสดังต่อไปนี้:
-
'ยืนยันตำแหน่งของคำหลักในฐานข้อมูล (ตารางใดและคอลัมน์ใด)
โดย oldjun(http://www.oldjun.com)
'อิงจาก sql ของ huangzi (http://www.2chuizi.com)
Server.ScriptTimeout=999999999
Response.Buffer = จริง
เมื่อเกิดข้อผิดพลาด ดำเนินการต่อต่อไป
คำหลัก=คำขอ(คำหลัก)
ถ้าคำหลัก=แล้ว
response.write ต้องการคำสำคัญ!
การตอบสนองสิ้นสุด
จบถ้า
การเชื่อมต่อแบบสลัว
ตั้งค่า conn = Server.CreateObject (ADODB.Connection)
DimConnStr
'ConnectionString กรุณาเปลี่ยน!
ConnStr=ไดรเวอร์={SQL SERVER};เซิร์ฟเวอร์=localhost;UID=sa;PWD=sa;ฐานข้อมูล=ต้นแบบ
Conn.เปิด ConnStr
conn.execute (สร้างตาราง huangzi_table (id int identity (1,1), biaoid int, biaoname nvarchar (1,000)))
conn.execute (ใส่ huangzi_table เลือก [id], [ชื่อ] จาก sysobjects โดยที่ xtype = 'U')
ตั้งค่า rs =conn.execute (เลือกจำนวน (id) เป็น tnum จาก huangzi_table)
tnum=rs(tnum)
RS.ปิด
ตั้งค่า rs=nothing
สำหรับ i=1 ถึง tnum
ตั้งค่า rsbiao =conn.execute (เลือก biaoid จาก huangzi_table โดยที่ id=&i&)
ไบออยด์=rsbiao(ไบออยด์)
set rst =conn.execute (เลือก [biaoname] จาก huangzi_table โดยที่ biaoid=&biaoid&)
tname=rst(เบียโอนาเมะ)
ตั้งค่า rsl=conn.execute(เลือกจำนวน ([ชื่อ]) เป็น lnum จาก syscolumns โดยที่ id=&biaoid&)
lnum=rsl(lnum)
สำหรับ j=1 ถึง lnum
topnum=j-1
set rslie=conn.execute (เลือก 1 อันดับแรก [ชื่อ] จาก syscolumns โดยที่ id=&biaoid& และ [ชื่อ] ไม่อยู่ใน
(เลือกด้านบน &topnum& [ชื่อ] จาก syscolumns โดยที่ id=&biaoid&))
liename=rslie(ชื่อ)
set rsresult=conn.execute(เลือก 1 อันดับแรก [&liename&] จาก [&tname&] โดยที่ CAST([&liename&] AS NVARCHAR(1000))='&keyword&')
ถ้า rsresult.bof หรือ rsresult.eof แล้ว
'response.write Nothing-&tname&:&liename
'response.write <br>
อื่น
ผล = rsresult (liename)
response.write ผลลัพธ์&(&tname&:&liename&)
ตอบกลับเขียน <br>
จบถ้า
rslie.ปิด
setrslie=ไม่มีอะไร
rsresult.ปิด
ตั้งค่า rsresult=ไม่มีอะไร
ต่อไป
rsbiao.ปิด
setrsbiao=ไม่มีอะไร
อันดับแรกปิด
setrst=ไม่มีอะไร
rsl.ปิด
ตั้งค่า rsl=ไม่มีอะไร
ต่อไป
conn.execute (วางตาราง huangzi_table)
-
หมายเหตุ: ประสิทธิภาพต่ำมากและอาจเกิดภาพเคลื่อนไหวที่ถูกระงับเมื่อใช้งาน โปรดรอสักครู่ เป็นการดีกว่าที่จะไม่ใช้ไลบรารีขนาดใหญ่ และใช้ฟังก์ชันง่าย ๆ โดยไม่มีเนื้อหาทางเทคนิค มีปัญหาแคชเมื่อเปลี่ยนคำสั่งการเชื่อมต่อ ขอแนะนำให้รีสตาร์ทเบราว์เซอร์!