SQL Server資料庫模糊查詢的ASP實現

來源:互聯網
上載者:User
server|資料|資料庫 ASP及其ADO組件簡介
---- ASP(Active Server Pages)是一種伺服器端的指令碼語言,可以把它看作是Html、指令碼和 CGI(通用閘道介面)的結合。但它卻比Html保密性更高,比指令碼更靈活,比CGI更高效。
----ASP程式的副檔名為“.ASP“,它可以包含Html語句、 ASP命令、文本及其他可以嵌套於Htnk文檔的所有描述性語言(如:VBScripts,JavaScripts 等)。其中ASP命令必須位於ASP定義的符號“<%”、“%>”之間,當使用者訪問ASP網頁時,Web伺服器先將“<%”、“%>”之間的ASP命令解析執行,然後將結果響應給使用者,這樣使用者就無法看到ASP源檔案。這就是ASP保密性高的原因。

----ASP內建了ADO組件,因此可以輕鬆地存取各種資料庫。 ADO是微軟公司提供給開發人員在網頁中存取資料庫的最新技術。ADO組件主要包括 Connection對象、Command對象、Parameter對象、RecordSet對象、Field對象、Property 對象、Error對象等七個對象和Fields資料集合、Properties資料集合、Parameters資料集合、Errors資料集合等四個資料集合。

----Connection對象負責與資料來源(資料庫或文字檔)的串連;

----Command對象傳遞指定的SQL命令;

---- Parameter對象提供Command對象所需的SQL命令參數;

----RecordSet對象負責瀏覽與操作從資料來源中取出的資料;

----Field對象指定RecordSet對象的具體欄位。

----這是與資料庫存取密切相關的幾個對象。

SQL Server資料庫的模糊查詢
----SQL Server 資料庫的Select查詢命令可以實現資料庫的查詢。在Select命令的Where子句中使用“LIKE”關鍵詞和“%”萬用字元就可以做到模糊查詢。下面語句在pubs資料庫的authors表中尋找Name欄位的值含有“Smith”字串的所有記錄。
Use pubs
Select * From authors
Where Name LIKE “%Smith%”
GO

----SQL Server資料庫還提供了一種叫做Stored Procedure (預存程序)的資料庫物件,使用者可以將一些常用的命令過程以預存程序的形式儲存起來,需要運行這些預存程序時,只要輸入預存程序名即可。這樣不僅簡化了操作,而且提高了效率(預存程序的運行比一個個的命令高效得多)。預存程序名的選取應符合SQL Server的命名規則,當它以“#”開頭時,表示一個暫存預存程序,它只在應用程式運行時存在,程式結束後,被自動刪除。

----下面的語句建立一個名字為#query的暫存預存程序:

Create Procedure #Query
As
Select * From authors
Where Name LIKE “%Smith%”

資料庫模糊查詢的ASP實現
----在ASP命令中,沒有類似於SQL命令中的“LIKE”關鍵詞和“%”萬用字元,因此僅僅使用ASP命令實現資料庫的模糊查詢有一定的困難。筆者在編程實踐中利用ADO組件的Connection對象、RecordSet對象分別動態建立、運行資料庫的暫存預存程序對象,不僅實現了模糊查詢,而且具有很好的互動性。
----1.建立一個使用者互動頁面INPUT.HTML

< html >
< head >
< title >使用者輸入介面< /title >< /head >
< body >
< center >< font face=“隸書" size=+3 >
資料庫查詢< /font >< /center >
< form method=“post" action=“query.asp" >
按欄位< select name=“leixing" >
< option value=“Name” >姓名< /option >
< option value=“sex" >性別< /option >
< /select >進行查詢< br >
關鍵詞< input type=“text" name=“keyword" size=40 >< br >
< input type=“submit" value=“查詢" >
< input type=“reset" value=“清除" >
< /form >
< /body >
< /html >

----當使用者在此用戶端頁面上輸入資料後,這些資料通過 Form資料集合由“POST”方法傳遞到伺服器端的query.asp頁面,由query.asp來完成查詢功能。

----2.建立Query.asp檔案,實現模糊查詢

< html >
< head >
< title >< /title >
< /head >
< body >
< %
response.write “< center >< font face="“隸書"
“size=+2 >查詢結果< /font >< /center >"
DIM qucol,str,str5
‘------擷取Form資料 --------
qucol=request.form(“leixing")
str=request.form(“keyword")
‘--------產生Where子句-------
str5=qucol&“LIKE "&“"“%"&str&“%"“"
‘建立資料庫連接。carlos:資料來源名;sa:
使用者名稱;pubs:資料庫名
SetConn= Server.CreateObject(“ADODB.Connection")
Conn.Open “DSN=carlos;UID=sa;PWD=;Database=pubs"
for I=0 to conn.errors.count-1
response.write conn.errors(I).description&“< br >"
next
‘----建立暫存預存程序----------
CommandText=“CREATE PROCEDURE
#query"&session(“num")&_
“AS select * From authors Where "&str5
Conn.execute CommandText,0,-1

‘-------建立RecordSet對象-------
Set rs=Server.CreateObject(“ADODB.RecordSet")
‘------運行暫存預存程序--------
Const adOpenDynamic=2
Const adLockOptimistic=3
const adComdStoredProc=8
CommandText=“#query"&session(“num")
session(“num")=session(“num")+1
rs.Open CommandText,Conn,adOpen
Dynamic,adLockOptimistic,_
adComdStoredProc
‘---------顯示查詢結果 ------
response.write “< table border="“1"“ >"
response.write“< tr >"
for I=0 to rs.fields.count-1
response.write “< td >"&rs(I).Name&“< /td >"
next
response.write “< /tr >"
while not rs.EOF
response.write“< tr >"
for I=0 to rs.fields.count-1
css=rs(I).value
if css< >“" then
response.write “< td >"&css&“< /td >"
else
response.write “< td >.< /td >"
end if
next
rs.moveNext
response.write “< /tr >"
Wend
response.write“< /table >"
rs.close
set rs=nothing
set Conn=nothing
% >
< !-- 查詢結束,返回輸入介面,開始下次查詢 -- >
< a href=“input.html" >返回到查詢< /a >
< /body >
< /html >

----這裡的暫存預存程序名為#query1(#query2,# query3,……),每次的名字都不同,以避免每次執行query.asp時建立同名的預存程序。由於我們建立的是暫存預存程序,當使用者查詢結束退出時,這些預存程序會自動刪除,不會對資料庫造成任何影響。 



相關文章

E-Commerce Solutions

Leverage the same tools powering the Alibaba Ecosystem

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。