asp實現(xiàn)的查詢某關(guān)鍵詞在MSSQL數(shù)據(jù)庫位置的代碼
更新時間:2010年04月22日 21:57:20 作者:
整體而言,這段SQL只適宜用在小型數(shù)據(jù)庫上,ASP中的循環(huán)也沒效率,大庫還是別用了,小庫可以考慮。如果是大庫的話,請聯(lián)系皇子要另外一份牛人寫的SQL查詢語句。
功能是:以一個關(guān)鍵字為索引,搜索整個數(shù)據(jù)庫,然后返回那個關(guān)鍵字所在的表名和列名。(很贊...特別是入侵的時候找不到用戶名與密碼所在的表的時候,如果能直接通過輸入admin這個關(guān)鍵詞找出字段...省得一個表一個表的看了。)于是根據(jù)那段語句,寫了個asp的腳本,方便大家以后搜尋數(shù)據(jù)庫。
代碼如下:
<%
'Confirm a keyword's position of a database(which table & which column)
'By oldjun(http://www.oldjun.com)
'Based on huangzi(http://www.2chuizi.com)'s sql
Server.ScriptTimeout=999999999
Response.Buffer =true
On Error Resume Next
keyword=request("keyword")
if keyword="" then
response.write "Need keyword!"
response.End
End if
dim conn
Set conn = Server.CreateObject("ADODB.Connection")
Dim ConnStr
'ConnectionString,Pls change!
ConnStr="Driver={SQL SERVER};Server=localhost;UID=sa;PWD=sa;Database=master"
Conn.open ConnStr
conn.execute("CREATE TABLE huangzi_table(id int identity(1,1),biaoid int,biaoname nvarchar(1000))")
conn.execute("insert huangzi_table select [id],[name] from sysobjects where xtype='U'")
set rs =conn.execute("select count(id) as tnum from huangzi_table")
tnum=rs("tnum")
rs.close
set rs=nothing
for i=1 to tnum
set rsbiao =conn.execute("select biaoid from huangzi_table where id="&i&"")
biaoid=rsbiao("biaoid")
set rst =conn.execute("select [biaoname] from huangzi_table where biaoid="&biaoid&"")
tname=rst("biaoname")
set rsl=conn.execute("select count([name]) as lnum from syscolumns where id="&biaoid&"")
lnum=rsl("lnum")
for j=1 to lnum
topnum=j-1
set rslie=conn.execute("select top 1 [name] from syscolumns where id="&biaoid&" and [name] not in
(select top "&topnum&" [name] from syscolumns where id="&biaoid&")")
liename=rslie("name")
set rsresult=conn.execute("select top 1 ["&liename&"] from ["&tname&"] where CAST(["&liename&"] AS NVARCHAR(1000))='"&keyword&"'")
if rsresult.bof or rsresult.eof then
'response.write "Nothing-"&tname&":"&liename
'response.write "<br>"
else
result=rsresult(liename)
response.write result&"("&tname&":"&liename&")"
response.write "<br>"
End if
rslie.close
set rslie=nothing
rsresult.close
set rsresult=nothing
next
rsbiao.close
set rsbiao=nothing
rst.close
set rst=nothing
rsl.close
set rsl=nothing
next
conn.execute("DROP TABLE huangzi_table")
%>
注:效率很差,使用時可能出現(xiàn)假死, 請耐心等待,大庫還是別用了;代碼簡單,實現(xiàn)的簡單功能,沒技術(shù)含量,留著以后備用;換連接語句的時候有個緩存問題,建議重啟下瀏覽器!
代碼如下:
復(fù)制代碼 代碼如下:
<%
'Confirm a keyword's position of a database(which table & which column)
'By oldjun(http://www.oldjun.com)
'Based on huangzi(http://www.2chuizi.com)'s sql
Server.ScriptTimeout=999999999
Response.Buffer =true
On Error Resume Next
keyword=request("keyword")
if keyword="" then
response.write "Need keyword!"
response.End
End if
dim conn
Set conn = Server.CreateObject("ADODB.Connection")
Dim ConnStr
'ConnectionString,Pls change!
ConnStr="Driver={SQL SERVER};Server=localhost;UID=sa;PWD=sa;Database=master"
Conn.open ConnStr
conn.execute("CREATE TABLE huangzi_table(id int identity(1,1),biaoid int,biaoname nvarchar(1000))")
conn.execute("insert huangzi_table select [id],[name] from sysobjects where xtype='U'")
set rs =conn.execute("select count(id) as tnum from huangzi_table")
tnum=rs("tnum")
rs.close
set rs=nothing
for i=1 to tnum
set rsbiao =conn.execute("select biaoid from huangzi_table where id="&i&"")
biaoid=rsbiao("biaoid")
set rst =conn.execute("select [biaoname] from huangzi_table where biaoid="&biaoid&"")
tname=rst("biaoname")
set rsl=conn.execute("select count([name]) as lnum from syscolumns where id="&biaoid&"")
lnum=rsl("lnum")
for j=1 to lnum
topnum=j-1
set rslie=conn.execute("select top 1 [name] from syscolumns where id="&biaoid&" and [name] not in
(select top "&topnum&" [name] from syscolumns where id="&biaoid&")")
liename=rslie("name")
set rsresult=conn.execute("select top 1 ["&liename&"] from ["&tname&"] where CAST(["&liename&"] AS NVARCHAR(1000))='"&keyword&"'")
if rsresult.bof or rsresult.eof then
'response.write "Nothing-"&tname&":"&liename
'response.write "<br>"
else
result=rsresult(liename)
response.write result&"("&tname&":"&liename&")"
response.write "<br>"
End if
rslie.close
set rslie=nothing
rsresult.close
set rsresult=nothing
next
rsbiao.close
set rsbiao=nothing
rst.close
set rst=nothing
rsl.close
set rsl=nothing
next
conn.execute("DROP TABLE huangzi_table")
%>
注:效率很差,使用時可能出現(xiàn)假死, 請耐心等待,大庫還是別用了;代碼簡單,實現(xiàn)的簡單功能,沒技術(shù)含量,留著以后備用;換連接語句的時候有個緩存問題,建議重啟下瀏覽器!
您可能感興趣的文章:
- access數(shù)據(jù)庫的一些少用操作,ASP,創(chuàng)建數(shù)據(jù)庫文件,創(chuàng)建表,創(chuàng)建字段,ADOX
- ASP ACCESS 日期操作語句小結(jié) By Stabx
- asp 獲取access系統(tǒng)表,查詢等操作代碼
- Asp 操作Access數(shù)據(jù)庫時出現(xiàn)死鎖.ldb的解決方法
- asp.net(C#) Access 數(shù)據(jù)操作類
- asp 在線備份與恢復(fù)sqlserver數(shù)據(jù)庫的代碼
- asp終極防范SQL注入漏洞
- asp連接mysql數(shù)據(jù)庫詳細實現(xiàn)代碼
- asp連接access、sql數(shù)據(jù)庫代碼及數(shù)據(jù)庫操作代碼
- asp操作access提示無法從指定的數(shù)據(jù)表中刪除原因分析及解決
- ASP中巧用Split()函數(shù)生成SQL查詢語句的實例
- asp執(zhí)行帶參數(shù)的sql語句實例
- ASP 連接 SQL SERVER 2008的方法
- ASP通過ODBC連接SQL Server 2008數(shù)據(jù)庫的方法
- ASP語言實現(xiàn)對SQL SERVER數(shù)據(jù)庫的操作
相關(guān)文章
如何在不支持數(shù)據(jù)庫的asp主頁上運用ado
如何在不支持數(shù)據(jù)庫的asp主頁上運用ado...2006-09-09ASP在SQL Server 2000中新建帳號和權(quán)限
ASP在SQL Server 2000中新建帳號和權(quán)限...2006-08-08為什么ASP中執(zhí)行動態(tài)SQL總報錯誤信息?提示語句語法錯誤
為什么ASP中執(zhí)行動態(tài)SQL總報錯誤信息?提示語句語法錯誤...2007-04-04