Secara umum, SQL ini hanya cocok untuk digunakan pada database kecil. Loop di ASP juga tidak efisien. Jika databasenya besar, silakan hubungi pangeran untuk meminta pernyataan kueri SQL lain yang ditulis oleh seorang ahli. Fungsinya adalah: menggunakan kata kunci sebagai indeks, mencari seluruh database, lalu mengembalikan nama tabel dan nama kolom tempat kata kunci tersebut berada. (Hebat...terutama ketika Anda tidak dapat menemukan tabel di mana nama pengguna dan kata sandi berada selama intrusi. Jika Anda dapat langsung menemukan kolom dengan memasukkan kata kunci admin...Anda tidak perlu melihat setiap tabel satu per satu.) Jadi Berdasarkan pernyataan itu, saya menulis skrip asp untuk memudahkan pencarian database di kemudian hari.
Kodenya adalah sebagai berikut:
Copy kode kodenya sebagai berikut:
<%
'Konfirmasikan posisi kata kunci dalam database (tabel mana & kolom mana)
'Oleh oldjun(http://www.oldjun.com)
'Berdasarkan sql huangzi(http://www.2chuizi.com).
Server.ScriptTimeout=999999999
Respon.Buffer = benar
Pada Kesalahan Lanjutkan Berikutnya
kata kunci=permintaan(kata kunci)
jika kata kunci= maka
respon.tulis Butuh kata kunci!
respon.Akhir
Berakhir jika
koneksi redup
Setel koneksi = Server.CreateObject(ADODB.Connection)
DimConnStr
'ConnectionString, Tolong ubah!
ConnStr=Driver={SQL SERVER};Server=localhost;UID=sa;PWD=sa;Database=master
Sambungan.buka SambunganStr
conn.execute(BUAT TABEL huangzi_table(id int identitas(1,1),biaoid int,biaoname nvarchar(1000)))
conn.execute(masukkan huangzi_table pilih [id],[nama] dari sysobjects di mana xtype='U')
setel rs =conn.execute(pilih hitungan(id) sebagai tnum dari huangzi_table)
tnum=rs(tnum)
rs.tutup
atur rs=tidak ada
untuk i=1 sampai tnum
setel rsbiao =conn.execute(pilih biaoid dari huangzi_table di mana id=&i&)
biaoid=rsbiao(biaoid)
setel terlebih dahulu =conn.execute(pilih [biaoname] dari huangzi_table di mana biaoid=&biaoid&)
namat=pertama(namabiao)
setel rsl=conn.execute(pilih count([name]) sebagai lnum dari syscolumns di mana id=&biaoid&)
jumlah=rsl(jumlah)
untuk j=1 sampai lnum
angka teratas=j-1
setel rslie=conn.execute(pilih 1 [nama] teratas dari syscolumns di mana id=&biaoid& dan [nama] tidak ada di
(pilih top &topnum& [nama] dari syscolumns di mana id=&biaoid&))
nama kebohongan=rslie(nama)
setel rsresult=conn.execute(pilih 1 teratas [&liename&] dari [&tname&] di mana CAST([&liename&] AS NVARCHAR(1000))='&kata kunci&')
jika rsresult.bof atau rsresult.eof maka
'response.write Tidak ada-&tname&:&liename
'respons.tulis <br>
kalau tidak
hasil=rshasil(nama palsu)
respon.tulis hasil&(&tname&:&liename&)
respon.tulis <br>
Berakhir jika
rslie.close
setrslie=tidak ada
hasil.tutup
atur rsresult=tidak ada
Berikutnya
rsbiao.tutup
setrsbiao=tidak ada
pertama.tutup
set pertama=tidak ada
rsl.tutup
atur rsl=tidak ada
Berikutnya
samb.execute(DROP TABLE huangzi_table)
%>
Catatan: Efisiensinya sangat buruk, dan animasi terhenti saat menggunakannya. Harap menunggu dengan sabar. Lebih baik tidak menggunakan perpustakaan besar. Kode ini sederhana dan mengimplementasikan fungsi sederhana tanpa konten teknis. Ada masalah cache saat mengubah pernyataan koneksi. Disarankan untuk me-restart browser!