国产成人精品18p,天天干成人网,无码专区狠狠躁天天躁,美女脱精光隐私扒开免费观看

asp經(jīng)典入門(mén)教程 在A(yíng)SP中使用SQL 語(yǔ)句第1/2頁(yè)

發(fā)布時(shí)間:2021-08-17 12:10 來(lái)源: 閱讀:0 作者: 欄目: ASP 歡迎投稿:712375056

MySQL、SQL Server和mSQL都是絕佳的SQL工具,可惜,在A(yíng)SP的環(huán)境下你卻用不著(zhù)它們來(lái)創(chuàng )建實(shí)用的SQL語(yǔ)句。不過(guò),你可以利用自己掌握的Access知識以及相應的Access技能,再加上我們的提示和技巧,相信一定能成功地在你的ASP網(wǎng)頁(yè)中加入SQL。

1. SELECT 語(yǔ)句

在SQL的世界里,最最基礎的操作就是SELECT 語(yǔ)句了。在數據工具下直接采用SQL的時(shí)候很多人都會(huì )熟悉下面的操作:
SELECT what
FROM whichTable
WHERE criteria

執行以上語(yǔ)句就會(huì )創(chuàng )建一個(gè)存放其結果的查詢(xún)。

而在A(yíng)SP頁(yè)面文件上,你也可以采用以上的一般語(yǔ)法,不過(guò)情況稍微不同,ASP編程的時(shí)候,SELECT 語(yǔ)句的內容要作為字符串賦給一個(gè)變量:
SQL = "SELECT what FROM whichTable WHERE criteria"

好了,明白了ASP下SQL“說(shuō)話(huà)”的方式,接下來(lái)如法炮制即可,只要滿(mǎn)足你的需要,傳統的SQL查詢(xún)模式和條件查詢(xún)都能派用場(chǎng)。

舉例說(shuō)明,不妨假設你的數據庫內有個(gè)數據表,名字是Products ,現在你想取出這個(gè)表里的全部記錄。然后你就編寫(xiě)了下面的代碼:
SQL ="SELECT * FROM Products"

以上代碼——SQL語(yǔ)句的作用就是取出表內的全部數據——執行后將會(huì )選出數據表內的全部記錄。不過(guò),要是只想從表內取出某個(gè)特定列,比如p_name。那就不能用 * 通配符了,這里得鍵入具體某列的名字,代碼如下:
SQL ="SELECT p_name FROM Products"

執行以上查詢(xún)之后Products 表內、p_name 列的內容就會(huì )全被選取出來(lái)。

2. 用WHERE子句設置查詢(xún)條件

有的時(shí)候取出全部數據庫記錄也許正好滿(mǎn)足你的要求,不過(guò),在大多數情況下我們通常只需得到部分記錄。這樣一來(lái)該如何設計查詢(xún)呢?當然會(huì )更費點(diǎn)腦筋了,何況本文也存心不想讓你去用那個(gè)什么勞什子的recordset。

舉個(gè)例子,假如你只打算取出p_name 記錄,而且這些記錄的名字必須以字母w打頭,那么你就要用到下面的WHERE 子句了:
SQL ="SELECT p_name FROM Products WHERE p_name LIKE 'W%'"

WHERE 關(guān)鍵詞的后面跟著(zhù)用來(lái)過(guò)濾數據的條件,有了這些條件的幫助,只有滿(mǎn)足一定標準的數據才會(huì )被查詢(xún)出來(lái)。在以上的例子里,查詢(xún)的結果只會(huì )得到名字以w 打頭的p_name 記錄。

以上例子中,百分比符號(%)的含義是指示查詢(xún)返回所有w 字母打頭而且后面是任何數據甚至沒(méi)有數據的記錄條目。所以,在執行以上查詢(xún)的時(shí)候, westwillow 就會(huì )從Products 表內被選取出來(lái)并存放在查詢(xún)里。

就像你看到的那樣,只要仔細地設計SELECT 語(yǔ)句,你就可以限制recordset 中返回的信息量,多琢磨琢磨總能滿(mǎn)足你的要求。

這些啊還不過(guò)是掌握SQL用途剛起步。為了幫助你逐步掌握復雜的SELECT 語(yǔ)句用法,下面就讓我們再來(lái)看一下關(guān)鍵的標準術(shù)語(yǔ):比較運算符,這些玩意都是你在構筑自己的SELECT 字符串來(lái)獲得特定數據時(shí)要經(jīng)常用到的。

WHERE子句基礎

在開(kāi)始創(chuàng )建WHERE 子句的時(shí)候,最簡(jiǎn)單的方式是采用標準的比較符號,它們是 < 、 <= 、 > 、 >= 、<> 和 =。顯然,你很快就能明白以下代碼的含義和具體運行結果:
SELECT * FROM Products WHERE p_price >= 199.95
SELECT * FROM Products WHERE p_price <> 19.95
SELECT * FROM Products WHERE p_version = '4'

注意: 這里你會(huì )注意到,最后一個(gè)例句中的數字4周?chē)恿藛我?。原因是這樣的,在這個(gè)例子中的 '4' 是文本類(lèi)型而非數字類(lèi)型。因為你會(huì )把 SELECT 語(yǔ)句放到引號中來(lái)把它作為一個(gè)值賦給變量,所以你也可以在語(yǔ)句中采用引號。

比較運算符
比較運算符指定從表內取出數據的內容范圍。你可以用它們來(lái)創(chuàng )建過(guò)濾器以便縮小recordset的范圍,促使其只保存給定任務(wù)下你關(guān)心的信息。

3. LIKE 、 NOT LIKE和 BETWEEN

你已經(jīng)在上面取出w打頭記錄的例子中看到了LIKE的用法。LIKE判定詞是一個(gè)非常有用的符號。不過(guò),在很多情況下用了它可能會(huì )帶給你太多的數據,所以在用到它之前最好先開(kāi)動(dòng)腦筋多想想自己到底想獲得什么數據。假設你想取出5位數字的SKU號碼,而且其開(kāi)頭是1結尾是5,那么你可以用下劃符(_)代替%符號:
SQL = "SELECT * FROM Products WHERE p_sku LIKE '1___5'"

下劃符表示任意一個(gè)字符。所以在輸入“1 _ _ _ 5”的情況下,你的搜索就會(huì )限制在滿(mǎn)足特定模式的5位數范圍內了。

假如你想反其道而行之,要找出所有不匹配“1_ _ _ 5”模式的SKU條目。那么你只需要在剛才語(yǔ)句例子中的LIKE前面加上NOT就可以了。

BETWEEN
假設你想取出一定范圍內的數據,而且你事先知道范圍的起點(diǎn)和終點(diǎn),那么你不妨采用BETWEEN 判斷詞?,F在就讓我們假設你想選取給定表內范圍在 1和 10之間的記錄。你可以如下使用BETWEEN
…WHERE ID BETWEEN 1 AND 10

或者你也可以采用已經(jīng)熟悉的數學(xué)判斷字句:
…WHERE ID >= 1 AND ID >= 10

4. 聯(lián)合語(yǔ)句

我們到目前為止所談到的SQL語(yǔ)句相對較為簡(jiǎn)單,如果再能通過(guò)標準的recordset循環(huán)查詢(xún),那么這些語(yǔ)句也能滿(mǎn)足一些更復雜的要求。不過(guò),何必非要拘泥在淺嘗則止的基礎水準之上呢?你完全可以再增加其他一些符號,比如AND、 ORNOT來(lái)完成更強大的功能。

以下面的SQL語(yǔ)句為例:
SQL ="SELECT c_firstname, c_lastname, c_email FROM customers WHERE c_email IS
NOT NULL AND c_purchase = '1' OR c_purchase = '2' AND c_lastname LIKE
'A%'"

就你目前所掌握的SQL知識,以上的例子也不難解釋?zhuān)贿^(guò)上面的語(yǔ)句并沒(méi)有很明白地讓你看清條件字句是如何膠合在單一SQL語(yǔ)句中的。

多行語(yǔ)句
在SQL語(yǔ)句不好懂的情況下,你不妨把整個(gè)語(yǔ)句分解為多行代碼,然后在現有變量基礎上逐步增加查詢(xún)語(yǔ)句的各個(gè)組成部分并把它存在同一變量?jì)龋?
    SQL = "SELECT c_firstname, c_lastname, c_emailaddress, c_phone"
    SQL = SQL & " FROM customers"
    SQL = SQL & " WHERE c_firstname LIKE 'A%' and c_emailaddress NOT NULL"
    SQL = SQL & " ORDER BY c_lastname, c_firstname"
到了最后一句,SQL變量就包含了以下的完整SELECT 語(yǔ)句:
"SELECT c_firstname, c_lastname, c_emailaddress, c_phone FROM customers
WHERE c_firstname LIKE 'A%' and c_emailaddress NO NULL ORDER BY c_lastname,
c_firstname"

整句照上面分解之后顯然好讀多了!在進(jìn)行調試的時(shí)候,你或許更樂(lè )于多敲幾個(gè)字符把程序改得更好讀些。不過(guò)你可要記住了,在封閉引號之前或者在打開(kāi)引號之后你需要增加空格,這樣才能保證字符串連接起來(lái)的時(shí)候你沒(méi)有把幾個(gè)詞湊到了一塊。
5. 開(kāi)始執行

在學(xué)會(huì )了SELECT語(yǔ)句的構造和用途之后你就該學(xué)習如何使用它了。在你所掌握的數據庫工具下,這可能意味著(zhù)你得按下某個(gè)寫(xiě)著(zhù)“執行”字樣的按鈕。在A(yíng)SP網(wǎng)頁(yè)上,可以立即執行SQL語(yǔ)句也可以當作存儲過(guò)程調用。

一旦創(chuàng )建了SQL 語(yǔ)句,你還得設法訪(fǎng)問(wèn)其查詢(xún)結果。顯然,這里的關(guān)鍵就是ASP recordset。在使用非SQL的recordset時(shí),創(chuàng )建recordset的代碼通常如下所示:
Dim objRec
Set objRec = Server.CreateObject ("ADODB.Recordset")
objRec.Open "customers", objConn, 0, 1, 2

如果你對ASP比較熟悉以上的代碼對你可就不陌生了,你應該知道“customers”表示你打開(kāi)數據庫內一個(gè)數據表的名字。

打開(kāi)recordset
為了充分利用你更為熟悉的SQL技能,你需要調整常規ASP網(wǎng)頁(yè)上最常采用的recordset:
 Dim objRec
Set objRec = Server.CreateObject ("ADODB.Recordset")
objRec.Open SQL, objConn, 0, 1, 2

這里唯一的修改就是在objRec.Open,之后用包含SQL語(yǔ)句的變量代替了要查詢(xún)的數據表的名稱(chēng)。

這種方法的優(yōu)點(diǎn)之一是你可以指定游標類(lèi)型(如以上0, 1 ,2 所示)。

執行SQL
你可以用緊湊的一行代碼執行SQL語(yǔ)句來(lái)創(chuàng )建recordset。以下是語(yǔ)法:
Dim objRec
set objRec = objConn.Execute(SQL)

在上例中,你所看到的SQL是你存放自己SQL SELECT 語(yǔ)句的變量。該代碼行“運行”SQL語(yǔ)句(或者說(shuō)對數據庫進(jìn)行查詢(xún)),選取數據并把數據存放在recordset 內,在上例中就是變量objRec。這種方法的主要缺點(diǎn)是你不能選擇自己想采用的游標類(lèi)型。相反,recordset總是用前向游標打開(kāi)。

因為游標的緣故,你或許打算熟悉兩種創(chuàng )建recordset的方法。直接執行查詢(xún)節省了鍵入字符所消耗的時(shí)間,但那樣的話(huà)你就得采用默認的游標了,這樣有可能遭遇經(jīng)常不能正常運行的毛病。不管你具體采用哪種辦法,兩者之間的最大的差別也不外乎代碼精練與否。在不考慮你取得什么字段、你的標準是什么的前提下,也不管你如何存儲數據,采用SQL式的recordset 在體積上會(huì )比ASP上打開(kāi)的標準recordset 要小得多,更別提操作起來(lái)的簡(jiǎn)易性了。畢竟,通過(guò)過(guò)濾數據,你消除了耗費時(shí)間的if-then 測試和可能用到的循環(huán)。

編寫(xiě)測試用SQL
這里有個(gè)技巧,許多專(zhuān)業(yè)ASP程序員習慣在測試網(wǎng)頁(yè)的時(shí)候“編寫(xiě)”自己的SQL語(yǔ)句。這樣做可以幫助你調試代碼,因為你可以從中看到傳遞給服務(wù)器執行的字符串。而你要做的無(wú)非是增加Response.WriteyourVariable 在屏幕上顯示有關(guān)信息。在你把和SQL有關(guān)的問(wèn)題提交給ASP討論組的時(shí)候你就應該附上這些信息。

6. 存儲查詢(xún)

當你的查詢(xún)相對簡(jiǎn)單的時(shí)候,每次從頭開(kāi)始創(chuàng )建SQL語(yǔ)句也不費什么工夫,不過(guò),復雜的查詢(xún)就不同了,每次都從頭來(lái)會(huì )產(chǎn)生很多開(kāi)發(fā)錯誤。因此,一旦讓SQL順利地運行起來(lái),你最好把它們存起來(lái),在需要時(shí)再調用它們。這樣,哪怕是一個(gè)簡(jiǎn)單查詢(xún)你都能隨時(shí)用上存儲的查詢(xún)語(yǔ)句了。

假設你每周都要給團隊做一次報告,指出目前存在的業(yè)務(wù)支持問(wèn)題,這些數據需要從你的數據庫中選取,而且要按照日期選擇記錄,同時(shí)根據你所在團隊所采用的支持問(wèn)題的類(lèi)別排序。一旦你設計了這一查詢(xún),你何必以后每周都重新編寫(xiě)一次呢?不要在你的HTML頁(yè)面上創(chuàng )建查詢(xún),你應該用你的數據庫工具創(chuàng )建查詢(xún)并且保存它。

然后你可以采用ActiveCommand 屬性把查詢(xún)插入到你的ASP網(wǎng)頁(yè)。頭一兩回你可能會(huì )覺(jué)得沒(méi)啥意思,其實(shí)也就幾行代碼而已:
Set objSQ = Server.CreateObject ("ADODB.Command")
objSQ.ActiveConnection = "databaseName"

objSQ.CommandText = "storedQueryName"
objSQ.CommandType = adCmdStoredProc

set objRec = objSQ.Execute

注意,采用adCmdStoredProc 表示你已經(jīng)在頁(yè)面上包含了adovbs.inc 文件。該文件定義了你可以按照名字而非數字進(jìn)行訪(fǎng)問(wèn)的Access常數。只需要在頁(yè)面上包含該文件即可(<!--#INCLUDE -->),然后你就可以用adCmdStoredProc 這類(lèi)名字了。這樣,將來(lái)你再看到的時(shí)候更容易理解以上被存儲的查詢(xún)到底是個(gè)什么意思。

1

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng )、來(lái)自本網(wǎng)站內容采集于網(wǎng)絡(luò )互聯(lián)網(wǎng)轉載等其它媒體和分享為主,內容觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如侵犯了原作者的版權,請告知一經(jīng)查實(shí),將立刻刪除涉嫌侵權內容,聯(lián)系我們QQ:712375056,同時(shí)歡迎投稿傳遞力量。

99久久精品国产一区二区| 久久五月精品中文字幕| 老妇炕上偷老汉视频露脸| 亚洲麻豆AV成本人无码网站| 老熟妇高潮一区二区三区| 国产精品久久自在自线不卡|