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

首頁 > 編程 > ASP > 正文

ASP在 Access 中使用“存儲過程”

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

我們已經熟悉在 ASP 中通過調用 SQL Server 存儲過程來執行數據庫操作,不過大家是否知道,在桌面級數據庫 Access 中,我們也能夠創建并使用“存儲過程”?

Access + ASP 是開發輕量級 Web 應用程序的絕佳組合:簡單,快速,兼容性好,但是性能通常不高。并且,用 ADODB.Connection 和 Recordset 對象來執行 SQL 語句的方式,也有一些不方便,因為帶參數的 SQL 語句的參數值也常常是拼接到字符串中,于是便有了諸如“單引號問題”這樣的麻煩。使用存儲過程的一個好處就是,支持 SQL 語句參數值的另外提供。

事實上,Access(2000 及以上版本)中所謂“存儲過程”,和 SQL Server 中的 Stored Procedure 是不能比的。它只能算是“Stored Procedure Lite”,不支持多條 SQL 語句,不支持邏輯語句(呵呵,畢竟不是 T-SQL)等等,我也還不清楚它是不是預編譯了。不過,正如同 VBScript 實現的所謂“類”僅僅具有封裝性,對于代碼結構的“美化”和程序重用性具有很大促進一樣,Access 的“輕量存儲過程”,對于規范,小出錯幾率的數據庫操作應該也有幫助,并且性能可能會有提高。

下面我譯 step by step 的方式,介紹如何在 Access 中創建存儲過程,然后在 ASP 程序中使用它。

(一)在 Access 中創建“存儲過程”

不知道大家的 Access 應用水平如何,反正它對于我來說,僅僅就是一個 MDB 數據庫文件的創建工具,我只會新建 MDB 文件,然后在 Access 的界面中創建表,索引,約束等等,over~

Access 中的“查詢”,就扮演了存儲過程的角色。下文中我提到的 Access 的“存儲過程”或者“查詢”都是指這個東西

對于“查詢”的創建,Access 提供了一個傻瓜工具,類似 VS.NET 里邊建立 DataAdapter 時的向導。不過我喜歡直接寫 SQL 代碼

然后在 Access 主界面上點擊左側的“查詢”按鈕,再在右邊雙擊“在設計視圖中創建查詢”,以打開查詢設計視圖。

這時彈出的是可視化的查詢生成器,我們首先添加 SQL 語句需要涉及的表。

添加表之后,在設計視圖上點擊鼠標右鍵,選擇“SQL 視圖”,以切換到 SQL 代碼編輯窗口。

好,下面說說 Access 的存儲過程的特點。

Access 的查詢,我目前的感覺是對 SQL 語句的一個包裝,或許進行了某種優化如預編譯。我們不能像寫 SQL Server 存儲過程那樣使用多重操作,事務,邏輯判斷,循環等等……

但是我們使用 Access 存儲過程的主要目的,就是使用參數額外提供的查詢,使用存儲過程,我們不必再面對將參數值拼接到 SQL 語句字符串中時遇到的各種麻煩,比如:

代碼:
Dim sql
sql = "SELECT * FROM Users WHERE UserName = '" & userName & "'"

以上代碼中,如果字符串變量 userName 中含有“'”單引號,則會報錯。我們必須手工轉化:

代碼:
Dim sql
sql = "SELECT * FROM Users WHERE UserName = '" & Replace(userName, "'", "''") & "'" '轉化為連續兩個單引號

而使用帶參數查詢,我們的 SQL 語句可以寫為:

代碼:
Dim sql
sql = "SELECT * FROM Users WHERE UserName = @userName"

然后把參數 @userName 的值以 Command 對象的 Parameter 屬性來傳入即可,很方便直觀。

代碼:
With cmd
    '創建參數對象
    .Parameters.Append .CreateParameter("@userName")

    '給各參數指定值
    .Parameters("@userName") = userName
End With

這里還要說明 Access 存儲過程中參數的使用。和 SQL Server 的存儲過程中用 @ 變量指定參數,然后同名傳入參數對象不同,Access 中的參數,是以“順序”而非“名字”來識別的。傳入的參數無需指定名字,隨便起,SQL 中的參數名字也可以隨便起,只要傳入參數值時,按照 SQL 語句中的參數出現順序指定就行了。通常,我們使用 Command 對象的 Execute 方法,直接傳入參數值數組來執行~

代碼:
cmd.Execute , Array(userName)

再比如,你的一個 Access 存儲過程這么寫:

代碼:
select * from Users where UserName = p_UserName and BookTitle = p_bookTitle

你可以就這么執行,通過傳入參數值數組,但是順序要對應:

代碼:
cmd.Execute , Array(userName, bookTitle)

OK,看看我們的例子中使用的兩個查詢,一個是寫入數據。寫好 SQL 語句后保存并命名。

另一個讀取數據的存儲過程代碼。


(二)使用存儲過程

然后我們可以在 ASP 程序中調用這些存儲過程了。

這里可以看到為什么我說 Access 中的查詢就是它的存儲過程——我們的 Command 對象的 CommandType 屬性設置的是 4,即 Stored Proc!

so...

以下的代碼很簡單:


代碼:
<%
Option Explicit

Dim s
Randomize
s = Rnd * 100

Dim conn, cmd
Set conn = Server.CreateObject("ADODB.Connection")
Set cmd = Server.CreateObject("ADODB.Command")

conn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Server.MapPath("sp.mdb")

With cmd
    .ActiveConnection = conn
    .CommandType = &H0004 '存儲過程
    .CommandText = "AddNewData"
End With

cmd.Execute , Array(CStr(Now()), CSng(s))

With cmd
    .ActiveConnection = conn
    .CommandType = &H0004 '存儲過程
    .CommandText = "GetData"
End With

Dim resultRS, resultArray
Set resultRS = cmd.Execute(, Null)

If Not resultRS.EOF Then
    resultArray = resultRS.GetRows()
End If

Set resultRS = Nothing
Set cmd = Nothing
conn.Close
Set conn = Nothing

Response.Write "<ul>"
Dim i
For i = 0 To UBound(resultArray, 2)
    Response.Write "<li>" & resultArray(0, i)
    Response.Write " " & resultArray(1, i)
    Response.Write " " & resultArray(2, i)
    Response.Write "</li>"
Next
Response.Write "</ul>"
%> 

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美日韩国产va另类| 欧美精品videosex性欧美| 国产一区二区三区视频| 亚洲aa中文字幕| 欧美第一黄网免费网站| 欧美激情综合亚洲一二区| 国产一区二区丝袜| 国产精品高清在线观看| 尤物九九久久国产精品的分类| 精品欧美aⅴ在线网站| 日韩成人在线播放| 日韩精品视频三区| 亚洲aⅴ日韩av电影在线观看| 国产成人精品在线播放| 午夜精品美女自拍福到在线| 欧美视频精品一区| 亚洲精品理论电影| 在线亚洲男人天堂| 精品亚洲精品福利线在观看| 精品一区二区三区电影| 日韩中文字幕av| 日韩精品在线免费观看视频| 97在线视频免费看| 国产精品永久在线| 一区二区三区黄色| 欲色天天网综合久久| 欧美精品电影在线| 国产精品久久久久影院日本| 日韩美女视频免费在线观看| 亚洲欧美日韩综合| 精品成人国产在线观看男人呻吟| 国产精品99久久久久久www| 在线视频免费一区二区| 亲爱的老师9免费观看全集电视剧| 欧美另类极品videosbestfree| 亚洲香蕉成人av网站在线观看| 亚洲精品永久免费精品| 亚洲福利视频免费观看| 国产欧美 在线欧美| 久久91亚洲精品中文字幕奶水| 亚洲精品美女久久久久| 7m第一福利500精品视频| 狠狠久久亚洲欧美专区| 一区二区三区 在线观看视| 韩日精品中文字幕| 亚洲精品视频网上网址在线观看| 日本精品一区二区三区在线| 欧美日韩国产丝袜美女| 久久久人成影片一区二区三区| 久久色免费在线视频| 欧美性感美女h网站在线观看免费| 亚洲性线免费观看视频成熟| 国产不卡视频在线| 91精品国产自产在线老师啪| 色琪琪综合男人的天堂aⅴ视频| 亚洲视频自拍偷拍| 日韩一级裸体免费视频| 国产视频一区在线| 精品一区二区三区电影| 亚洲欧美日韩一区二区三区在线| 亚洲国产小视频| 欧美又大又粗又长| 国产精品三级在线| 日韩国产激情在线| 九九精品视频在线| 欧美精品一本久久男人的天堂| 亚洲最大成人在线| 久久久久99精品久久久久| 在线中文字幕日韩| 亚洲色图av在线| 欧美综合国产精品久久丁香| 久久青草精品视频免费观看| 久久久亚洲欧洲日产国码aⅴ| 国产欧美日韩专区发布| 日韩av资源在线播放| 国产精品久久视频| 狠狠色香婷婷久久亚洲精品| 狠狠爱在线视频一区| 精品成人av一区| 国产精品久久久久不卡| 国产精品美女在线| 在线观看国产精品日韩av| 亚洲free嫩bbb| 一区二区三区日韩在线| 高清一区二区三区四区五区| 久久综合亚洲社区| 亚洲精品自产拍| 91视频九色网站| 久久久精品在线| 色777狠狠综合秋免鲁丝| 欧美精品18videosex性欧美| 成人福利免费观看| 日韩欧美国产网站| 91国产精品视频在线| 欧美电影电视剧在线观看| 精品国产一区二区三区久久久狼| 欧美美最猛性xxxxxx| 欧美夫妻性生活xx| 国产91免费观看| 亚洲电影免费观看高清完整版在线观看| 日韩福利在线播放| 欧美在线视频在线播放完整版免费观看| 日韩国产高清污视频在线观看| 国产在线观看精品一区二区三区| 久久成人综合视频| 国产精品视频白浆免费视频| 国产精品爽爽爽爽爽爽在线观看| 91精品国产91久久久久福利| 欧美成在线视频| 精品亚洲永久免费精品| 日韩视频精品在线| 欧美午夜电影在线| 成人美女免费网站视频| 一本色道久久88亚洲综合88| 国产成+人+综合+亚洲欧美丁香花| 在线播放国产一区中文字幕剧情欧美| 性欧美暴力猛交69hd| 亚洲精品欧美日韩专区| 韩国欧美亚洲国产| 亚洲美女精品久久| 精品国产精品三级精品av网址| 亚洲尤物视频网| 欧美日韩在线视频首页| 欧美午夜精品久久久久久浪潮| 国产精品最新在线观看| 国产精品一区二区三区成人| 亚洲第一中文字幕在线观看| 久久99久久亚洲国产| 美日韩丰满少妇在线观看| 亚洲图片欧洲图片av| 精品国产户外野外| 欧美丰满片xxx777| 久久久亚洲影院你懂的| 国产精品高潮呻吟久久av野狼| 日韩av在线高清| 亚洲国产精品推荐| 久久久噜久噜久久综合| 91人人爽人人爽人人精88v| 日韩一级黄色av| 国产精品99久久久久久久久久久久| 不卡av电影院| 国产精品日韩在线一区| 日韩电视剧在线观看免费网站| xvideos亚洲| 法国裸体一区二区| 久久精品国产欧美激情| 麻豆国产精品va在线观看不卡| 日本一区二区在线播放| 亚洲人成啪啪网站| 九九久久久久久久久激情| 成人做爰www免费看视频网站| 青青久久av北条麻妃海外网| 欧美激情videos| 欧美一区二区大胆人体摄影专业网站| 国产精品美女久久| 亚洲欧美精品一区二区| 欧美裸体xxxx极品少妇软件| 91在线视频成人| 丝袜情趣国产精品| 日韩hd视频在线观看| 成人欧美一区二区三区在线| 国产精品成人免费视频| 超薄丝袜一区二区| 欧美一级淫片播放口|