亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > ASP > 正文

ASP動態網頁制作中使用SQL語句的方法_ASP教程

2024-05-04 11:03:21
字體:
來源:轉載
供稿:網友

推薦:巧用SQL-DMO創建備份及校驗的ASP應用
概述SQL分布式管理對象(SQL Distributed Management objects, SQL-DMO)為開發者提供了使用程序和腳本語言執行普通任務的方法,從而擴展了SQL Server功能。本文談論如何巧妙的利用SQL-DMO創建

1、SELECT 語句

在SQL的世界里,最最基礎的操作就是SELECT 語句了。在數據庫工具下直接采用SQL的時候很多人都會熟悉下面的操作:

以下為引用的內容:
SELECT what
FROM whichTable
WHERE criteria

執行以上語句就會創建一個存放其結果的查詢。

而在ASP頁面文件上,你也可以采用以上的一般語法,不過情況稍微不同,ASP編程的時候,SELECT 語句的內容要作為字符串賦給一個變量:

以下為引用的內容:
SQL = "SELECT what FROM whichTable WHERE criteria"

好了,明白了ASP下SQL“說話”的方式,接下來如法炮制即可,只要滿足你的需要,傳統的SQL查詢模式和條件查詢都能派用場。

舉例說明,不妨假設你的數據庫內有個數據表,名字是Products ,現在你想取出這個表里的全部記錄。然后你就編寫了下面的代碼:

以下為引用的內容:

SQL ="SELECT * FROM Products"

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

以下為引用的內容:
SQL ="SELECT p_name FROM Products"

執行以上查詢之后Products 表內、p_name 列的內容就會全被選取出來。

2、WHERE子句設置查詢條件

舉個例子,假如你只打算取出p_name 記錄,而且這些記錄的名字必須以字母w打頭,那么你就要用到下面的WHERE 子句了:

以下為引用的內容:
SQL ="SELECT p_name FROM Products WHERE p_name LIKE 'W%'"

WHERE 關鍵詞的后面跟著用來過濾數據的條件,有了這些條件的幫助,只有滿足一定標準的數據才會被查詢出來。在以上的例子里,查詢的結果只會得到名字以w 打頭的p_name 記錄。

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

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

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

WHERE子句基礎

在開始創建WHERE 子句的時候,最簡單的方式是采用標準的比較符號,它們是 < 、 <= 、 > 、 >= 、<> 和 =。顯然,你很快就能明白以下代碼的含義和具體運行結果:

以下為引用的內容:

SELECT * FROM Products WHERE p_price >= 199.95
SELECT * FROM Products WHERE p_price <> 19.95
SELECT * FROM Products WHERE p_version = '4'

注意: 這里你會注意到,最后一個例句中的數字4周圍加了單引號。原因是這樣的,在這個例子中的 "4" 是文本類型而非數字類型。

3、比較運算符:LIKE、NOT LIKE和 BETWEEN

比較運算符指定從表內取出數據的內容范圍。你可以用它們來創建過濾器以便縮小recordset的范圍,促使其只保存給定任務下你關心的信息。

你已經在上面取出w打頭記錄的例子中看到了LIKE的用法。LIKE判定詞是一個非常有用的符號。不過,在很多情況下用了它可能會帶給你太多的數據,所以在用到它之前最好先開動腦筋多想想自己到底想獲得什么數據。假設你想取出5位數字的SKU號碼,而且其開頭是1結尾是5,那么你可以用下劃符(_)代替%符號:

SQL ="SELECT * FROM Products WHERE p_sku LIKE '1___5'"

下劃符表示任意一個字符。所以在輸入“1___5”的情況下,你的搜索就會限制在滿足特定模式的5位數范圍內了。

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

BETWEEN

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

…WHERE ID BETWEEN 1 AND 10

或者你也可以采用已經熟悉的數學判斷字句:

…WHERE ID >= 1 AND ID >= 10

4、聯合語句

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

以下面的SQL語句為例:

以下為引用的內容:

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知識,以上的例子也不難解釋,不過上面的語句并沒有很明白地讓你看清條件字句是如何膠合在單一個SQL語句中的。

多行語句

在SQL語句不好懂的情況下,你不妨把整個語句分解為多行代碼,然后在現有變量基礎上逐步增加查詢語句的各個組成部分并把它存在同一變量內:

以下為引用的內容:
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 語句:

以下為引用的內容:

"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"

整句照上面分解之后顯然好讀多了!在進行調試的時候,你或許更樂于多敲幾個字符把程序改得更好讀些。不過你可要記住了,在封閉引號之前或者在打開引號之后你需要增加空格,這樣才能保證字符串連接起來的時候你沒有把幾個詞湊到了一塊。

5、開始執行

在學會了SELECT語句的構造和用途之后你就該學習如何使用它了。在你所掌握的數據庫工具下,這可能意味著你得按下某個寫著“執行”字樣的按鈕。在ASP網頁上,可以立即執行SQL語句也可以當作存儲過程調用。

一旦創建了SQL 語句,你還得設法訪問其查詢結果。顯然,這里的關鍵就是ASP recordset。為了充分利用你更為熟悉的SQL技能,你需要調整常規ASP網頁上最常采用的recordset:

以下為引用的內容:

Dim rs
Set rs = Server.CreateObject ("ADODB.Recordset")
rs.Open SQL,Conn,1,2

這里Conn就是數據庫連接聲明,而唯一的修改就是在rs.Open,之后用包含SQL語句的變量代替了要查詢的數據表的名稱。

這種方法的優點之一是你可以指定游標類型(如以上1 ,2 所示)。

執行SQL

你還可以用緊湊的一行代碼執行SQL語句來創建recordset。以下是語法:

Dim rs
set rs = Conn.Execute(SQL)

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

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

6,存儲查詢

當你的查詢相對簡單的時候,每次從頭開始創建SQL語句也不費什么工夫,不過,復雜的查詢就不同了,每次都從頭來會產生很多開發錯誤。因此,一旦讓SQL順利地運行起來,你最好把它們存起來,在需要時再調用它們。這樣,哪怕是一個簡單查詢你都能隨時用上存儲的查詢語句了。

假設你每周都要給團隊做一次報告,指出目前存在的業務支持問題,這些數據需要從你的數據庫中選取,而且要按照日期選擇記錄,同時根據你所在團隊所采用的支持問題的類別排序。一旦你設計了這一查詢,你何必以后每周都重新編寫一次呢?不要在你的HTML頁面上創建查詢,你應該用你的數據庫工具創建查詢并且保存它。 然后你可以采用ActiveCommand 屬性把查詢插入到你的ASP網頁。頭一兩回你可能會覺得沒啥意思,其實也就幾行代碼而已:

以下為引用的內容:
Set objSQ = Server.CreateObject ("ADODB.Command")
objSQ.ActiveConnection = "databaseName"
objSQ.CommandText = "storedQueryName"
objSQ.CommandType = adCmdStoredProc
set objRec = objSQ.Execute

注意,采用adCmdStoredProc 表示你已經在頁面上包含了adovbs.inc 文件。該文件定義了你可以按照名字而非數字進行訪問的Access常數。只需要在頁面上包含該文件即可),然后你就可以用adCmdStoredProc 這類名字了。這樣,將來你再看到的時候更容易理解以上被存儲的查詢到底是個什么意思。

7、ORDER BY

從Access數據庫中選取記錄有件最令人喪氣的事情,它們是以怎樣的順序輸入到數據庫內就按照怎樣的順序出來。就算你在Access環境內采用Sort By來改變記錄視圖,數據表內的記錄順序也并沒有發生改變。

如果你正在使用ASP recordset在網頁上寫出記錄,那么你或許知道亂紛紛的順序是多令人痛苦的事。但是你可能不得不經常得面對這一問題,因為并不存在什么簡單方便的解決方案。好在ORDER BY 可以簡化這一難題。

為了對你的結果排序,只要在SELECT語句末尾加上ORDER BY,然后指定你需要排序的參照列即可。因此,如果你想要根據顧客的姓氏對Customers表排序,那么你可以編寫如下的查詢語句:

SQL = "SELECT c_lastname,c_firstname,c_email FROM Customers ORDER BY c_lastname"

這樣,只要你建立了recordset而且開始把結果寫到屏幕上,你就會看見數據按照字母順序排列起來了。

下面是對表的操作:

只復制a表的結構到b表(不復制數據)

以下為引用的內容:

sql = "select * into b from a where 1<>1"
sql = "select * into b from a where 1=0"

復制a表的結構和數據到b表

以下為引用的內容:

sql = "select * into b from a"

分享:ASP 3.0高級編程(四十五)
異步執行是指在后臺檢索數據,可以在全部數據返回之前在Web頁面上使用已經得到的數據。雖然可能需要的是全部的數據,但異步工作至少可提前開始處理數據。也可讓用戶先看到某些內容,這使得Web站

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美电影在线播放| 久久人人爽人人爽人人片亚洲| 欧美日韩国产精品| 成人免费视频xnxx.com| 亚洲国产精品999| 国产欧美最新羞羞视频在线观看| 日韩中文字幕在线看| 中日韩美女免费视频网站在线观看| 在线观看欧美www| 97超级碰在线看视频免费在线看| 亚洲欧美激情一区| **欧美日韩vr在线| 欧美国产乱视频| 国产成人精品一区二区在线| 国产精品高精视频免费| 国产亚洲精品久久久久久| 亚洲精品少妇网址| 国产精品精品久久久久久| 在线观看欧美成人| 亚洲 日韩 国产第一| 亚洲欧美综合区自拍另类| 国产成人在线精品| 秋霞av国产精品一区| 欧美在线观看视频| 中文字幕视频在线免费欧美日韩综合在线看| 亚洲黄色片网站| 中文字幕亚洲国产| 97avcom| 91理论片午午论夜理片久久| 亚洲天堂男人天堂女人天堂| 国产精品视频播放| 久久精品视频播放| 亚洲精品97久久| 韩国精品美女www爽爽爽视频| 日本a级片电影一区二区| 色偷偷综合社区| 亚洲香蕉av在线一区二区三区| 国产精品久久av| 97人人模人人爽人人喊中文字| 亚洲午夜女主播在线直播| 久久天天躁狠狠躁夜夜躁2014| zzijzzij亚洲日本成熟少妇| 国产日本欧美一区二区三区在线| 亚洲第一免费播放区| 日韩视频在线观看免费| 欧美激情中文网| 久久久国产精品免费| 奇米4444一区二区三区| 日韩天堂在线视频| 欧美激情视频给我| 欧洲成人在线观看| 日韩av影视在线| 亚洲美女av在线| 亚洲精品999| 欧美另类69精品久久久久9999| 国产欧美日韩中文字幕在线| 久久久精品久久久| 日韩欧美亚洲国产一区| 91精品视频免费观看| 色哟哟入口国产精品| xxxxx91麻豆| 在线国产精品播放| 亚洲男人第一网站| 亚洲精品一区在线观看香蕉| 在线观看精品国产视频| 久久综合色影院| 亚洲国产婷婷香蕉久久久久久| 亚洲精品99999| 成人激情电影一区二区| 欧美黑人巨大xxx极品| 久久精品国产清自在天天线| 性色av香蕉一区二区| 国产精品亚洲激情| 亚洲无亚洲人成网站77777| 亚洲少妇激情视频| 亚洲春色另类小说| 亚洲欧美日韩在线一区| 在线日韩欧美视频| 国产一区二区三区欧美| 亚洲国产成人精品久久| 精品激情国产视频| 精品日本高清在线播放| 久久人体大胆视频| 国产精品久久久久9999| 免费不卡欧美自拍视频| 中文字幕日韩欧美在线视频| 欧美一区三区三区高中清蜜桃| 亚洲国产成人久久| 精品久久久国产精品999| 欧美激情视频在线免费观看 欧美视频免费一| 国产大片精品免费永久看nba| 一区二区亚洲欧洲国产日韩| 中文字幕在线成人| 亚洲人成网站999久久久综合| 久久久av一区| 国产精品777| 亚洲xxxxx电影| 在线观看久久久久久| 日产精品99久久久久久| 国产成人精品综合久久久| 精品福利免费观看| 日韩av在线播放资源| 欧美另类交人妖| 久久人人97超碰精品888| 亚洲欧美日韩国产成人| 精品福利樱桃av导航| 日韩一区二区三区在线播放| 久久精彩免费视频| 午夜伦理精品一区| 亚洲国产精品一区二区久| 亚洲一区二区久久| 欧美性猛交xxxx富婆弯腰| 久久91精品国产91久久久| 一区二区三区视频免费| 欧美色播在线播放| 日韩av在线免费| 亚洲精品456在线播放狼人| 欧美性视频精品| 黄色精品在线看| 日韩在线观看精品| 91精品国产免费久久久久久| 欧美国产极速在线| 久热精品视频在线观看一区| 久久成年人视频| 成人黄色av网站| 一级做a爰片久久毛片美女图片| 国产午夜精品全部视频播放| 午夜精品久久久久久久久久久久| 97超级碰碰碰| 欧美视频不卡中文| 久久久中文字幕| 91精品国产综合久久男男| 97福利一区二区| 国产精品免费小视频| 最近2019年日本中文免费字幕| 日韩av毛片网| 欧美巨猛xxxx猛交黑人97人| 综合网中文字幕| 亚洲精品网站在线播放gif| 国产精品电影久久久久电影网| 亚洲福利视频二区| 一本色道久久综合亚洲精品小说| 国语自产精品视频在免费| 欧美一区二区三区四区在线| 亚洲激情电影中文字幕| 91免费版网站入口| 欧美日韩ab片| 亚洲欧洲av一区二区| 91香蕉国产在线观看| 国产欧美 在线欧美| 亚洲伊人成综合成人网| 国产精品最新在线观看| 久久精品国产电影| 国产精品夜间视频香蕉| 国产精品入口免费视频一| 91精品免费看| 超碰97人人做人人爱少妇| 国模精品视频一区二区三区| 日韩欧美亚洲范冰冰与中字| 欧洲永久精品大片ww免费漫画| 欧美性猛交丰臀xxxxx网站| 久久69精品久久久久久国产越南| 欧美老女人性视频| 欧美成人h版在线观看|