運用ASP調用資料庫中視圖及存儲過程

2020-12-16 站長之家
首頁

 > 

語言

 > 

關鍵詞

 > 

asp最新資訊

 > 

正文

運用ASP調用資料庫中視圖及存儲過程

一、前言

ASP (Active Server Pages) 是伺服器端的腳本編寫環境,它由微軟公司的IIS3.0以上版本支持。它可用來創建動態 Web 頁或生成功能強大的 Web應用程式。ASP頁是包括 HTML 標記、文本和腳本命令的文件。ASP頁可調用ActiveX組件來執行任務,例如連接到資料庫或進行商務計算。通過ASP,可為您的Web頁添加交互內容或用HTML頁構成整個Web應用程式,這些應用程式使用HTML頁作為您的客戶的界面。

二、ASP模型

瀏覽器從Web伺服器上請求 .asp文件時,ASP 腳本開始運行。然後Web伺服器調用ASP,ASP全面讀取請求的文件,執行所有腳本命令,並將Web頁傳送給瀏覽器。

ASP提供了一個在HTML頁中使用現有腳本語言如 Microsoft VBScript 和 Microsoft JScript 的框架。

ASP提供內建對象,這些對象使用戶更容易收集通過瀏覽器請求發送的信息、響應瀏覽器以及存儲用戶信息。包括Application、Request、Response、Server、Session 和ObjectContext 對象。其中最為常用的為Request、Response 和Server三個對象,它們分別用於從瀏覽器請求信息、向瀏覽器發送信息和訪問伺服器上對象的屬性和方法。

三、ADO

ASP和後臺資料庫連接使用微軟的ADO(ActiveX Data Objects),ADO是一項容易使用並且可擴展的將資料庫訪問添加到Web頁的技術。可以使用ADO去編寫緊湊簡明的腳本以便連接到Open Database Connectivity(ODBC)兼容的資料庫和 OLE DB兼容的數據源。

ADO包含7個內置對象,它們分別為Connection、Command、RecordSet、Fields、Error、Parameters和Properties。通過這些對象,ASP可以完成對後臺資料庫的所有操作。

四、ASP調用視圖和存儲過程

在一般的MIS應用中,會有大量的報表,此時我們可以在後臺資料庫編寫相應的視圖或存儲過程,用ASP通過ADO調用以完成報表工作。下面用一個例子說明相應的操作過程。

1、創建 ODBC DSN 文件

在創建資料庫腳本之前,必須提供一條使ADO定位、標識和與資料庫通訊的途徑。資料庫驅動程序使用Data Source Name (DSN) 定位和標識特定的ODBC兼容資料庫,將信息從 Web 應用程式傳遞給資料庫。

2、調用資料庫視圖

訪問資料庫信息的第一步是和資料庫源建立連接。ADO提供Connection對象,可以使用該對象建立和管理應用程式和 ODBC資料庫之間的連接。

以下為引用的內容:
<%
Set Dataconn = Server.CreateObject("ADODB.Connection") '建立連接對象
    Dataconn.Open "DSN=SinoTrans;SERVER=APP_SERVER;
UID=sa;PWD=;APP=Microsoft (R) Developer Studio;WSID=APP_SERVER;Regional=Yes"
    Set cmdTemp = Server.CreateObject("ADODB.Command") '建立命令對象
    Set rst= Server.CreateObject("ADODB.Recordset") '建立記錄集對象
    cmdTemp.CommandText = "Customers "
    cmdTemp.CommandType = 2
    Set cmdTemp.ActiveConnection = DataConn
    rst.Open cmdTemp, , 1, 3 '生成查詢結果
%>
 

此時,Customers為視圖,從視圖中查詢數據與從基表中查詢數據的方法是相同的。

3、調用資料庫存儲過程

以下為引用的內容:
<%
Set Dataconn = Server.CreateObject("ADODB.Connection") '建立連接對象
Dataconn.Open "DSN=SinoTrans;SERVER=APP_SERVER;UID=sa;
PWD=;APP=Microsoft (R) Developer Studio;WSID=APP_SERVER;Regional=Yes"
Set cmdTemp = Server.CreateObject("ADODB.Command") '建立命令對象
Set rst = Server.CreateObject("ADODB.Recordset") '建立記錄集對象
cmdTemp.CommandText = "dbo.pd_test" '存儲過程名稱
cmdTemp.CommandType = 4 '命令類別為4,表示為存儲過程
Set cmdTemp.ActiveConnection = Dataconn
Set tmpParam = cmdTemp.CreateParameter("Return Value", 3, 4, 4)
cmdTemp.Parameters.Append tmpParam
Set tmpParam = cmdTemp.CreateParameter("@BeginDate", 135, 1, 16, riqi)
'創建輸入參數對象
cmdTemp.Parameters.Append tmpParam
rst.Open cmdTemp, , 1, 3    '生成查詢結果
%>

這裡調用的存儲過程為pd_test,這種是ADO中提供的標準方法,但存在一個問題,就是當在存儲過程中有兩個以上的SELECT語句,但從邏輯上又不可能同時執行的時候,ADO會提示你存儲過程中SELECT語句太多,解決方法是直接用ADO的CONNECTION對象的EXECUTE方法直接執行存儲過程,如下:

以下為引用的內容:
<%
Set Dataconn = Server.CreateObject("ADODB.Connection") '建立連接對象
Dataconn.Open "DSN=SinoTrans;SERVER=APP_SERVER;UID=sa;PWD=;
APP=Microsoft (R) Developer Studio;WSID=APP_SERVER;Regional=Yes"
ss = "EXECUTE dbo.pd_test " & "'" & riqi1 & "'"
Set rs = dataconn.Execute(ss)
%>

有關ASP和ADO使用的詳細信息,請參閱 Microsoft ActiveX Data Objects (ADO) 和Active Server Pages(ASP)的詳細參考。

五、結束語

在B/S結構的開發中,我們可以把一些商業規則或複雜查詢用存儲過程在DBMS中編寫,然後用ASP中的ADO對象調用,完成原來C/S結構中的傳統功能。

相關焦點

  • 「謝燦asp.net三層架構」3、創建增刪改查及複雜操作的存儲過程
    SQL Server中的存儲過程是使用T_SQL編寫的代碼段。它的目的在於能夠方便的從系統表中查詢信息,或者完成與更新資料庫表相關的管理任務和其他的系統管理任務。T_SQL語句是SQL Server資料庫與應用程式之間的編程接口。
  • 第七章SQLServer 2012視圖、存儲、觸發器
    專業ON 班級.專業代碼=專業.專業代碼join系部ON 專業.系部代碼=系部.系部代碼SQLServer 2005 視圖三、視圖的操作創建視圖有以下限制(1)只能在當前資料庫中創建(2)用戶創建視圖嵌套不能超過32層(3)不能將規則或默認定義與視圖相關(4)定義視圖查詢不能包含COMPUTE
  • ASP.NET2.0的控制項狀態和視圖狀態探討
    若要使用控制項狀態,控制項必須在初始化過程中調用 RegisterRequiresControlState 方法,然後重寫 SaveControlState 和 LoadControlState 方法。視圖狀態-視圖狀態是 ASP.NET 頁框架默認情況下用於保存往返過程之間的頁和控制項值的方法。
  • Asp定時執行操作、Asp定時讀取資料庫(網頁定時操作詳解)
    如果用setTimeout實現setInerval的功能,就需要在執行的程序中再定時調用自己才行。>比如要定時打開頁面 Test.asp(當然Test.asp可以是讀取資料庫,生成靜態頁面......)
  • 如何實現Asp與Asp.Net共享Session
    Session的存儲機制已經與Asp的存儲機制不一樣,雖然可以在同一個IIS下同時運行asp與aspx,但是它們之間不能傳遞Session。之前大批系統應用到了asp,在升級過程中,如果完全拋棄asp來重寫,一來工作量太大,二來以前的成果不能保存下來。所以微軟提出了一個Session共享的解決方案,只是此文檔光說明原理,並沒有說具體的操作步驟,由此,我撰文描述過程。
  • 直擊資料庫面試題:資料庫查詢語句
    解釋存儲過程和觸發器 存儲過程是一組Transact-SQL語句,在一次編譯後可以執行多次。因為不必重新編譯Transact-SQL語句,所以執行存儲過程可以提高性能。 觸發器是一種特殊類型的存儲過程,不由用戶直接調用。創建觸發器時會對其進行定義,以便在對特定表或列作特定類型的數據修改時執行。
  • 淺析mysql存儲過程
    而在真實的運用中也是這樣的,我們知道在mysql中,主要是命令行中,每一條語句結尾加 ; 表示語句結束。這樣我們就想到了是不是可以多句一起使用。這個叫做stacked injection。代碼中和一般查詢不同的是,使用了multi_query函數在SQL中,分號(;)是用來表示一條sql語句的結束。試想一下我們在 ; 結束一個sql語句後繼續構造下一條語句,會不會一起執行?
  • Oracle資料庫教與學(教學大綱)
    本課程以資料庫原理為基礎,以Oracle公司最新推出的Oracle 12c作為平臺,以學生成績資料庫為主線,內容包括資料庫概論、Oracle資料庫、創建資料庫、創建和使用表、PL/SQL基礎、高級查詢、視圖、索引和序列、數據完整性、PL/SQL程序設計、函數和遊標、存儲過程、觸發器、事務和鎖、安全管理、備份和恢復等內容。
  • Django 官方推薦的姿勢:類視圖
    對處理首頁的視圖函數來說,雖然其處理的對象一個是文章,另一個是帖子,但是其處理的過程是非常類似的:首先是從資料庫取出文章或者帖子列表,然後將這些數據傳遞給模板並渲染模板。於是,django 把這些相同的邏輯代碼抽取了出來,寫成了一系列的通用視圖函數,即基於類的通用視圖(Generic Class Based View)。
  • 使用SQL Server In-Memory存儲ASP.NET的會話狀態
    它的特徵是在用戶訪問web應用程式的過程中,允許開發者存儲和讀取用戶的數據。 會話數據是自動從存儲中持續保存和恢復,並且自動過期刪除。問題使用Session State的替代方案這些內容超出了本文的範圍。 對於依賴Session State的應用程式也有陷阱,最常見的是訪問每個用戶,每個請求的Session基礎數據。
  • [譯]ASP.NET Core Web API 中使用Oracle資料庫和Dapper看這篇就夠了
    設置Oracle表和存儲過程首先要為演示創建資料庫以及表,我們這裡使用Oracle Developer Tools。因為它非常小巧靈活,可以幫助我們順利的處理Oracle資料庫。Oracle SQL Developer是一個免費的集成開發環境,可簡化傳統和雲部署中Oracle資料庫的開發和管理。
  • Oracle資料庫課程的教與學(教學大綱)
    本課程全面系統地講述了Oracle 11g的管理操作和應用開發,以學生成績資料庫為主線,將基礎知識和實際應用有機結合起來,內容包括資料庫概論、Oracle 11g資料庫、創建資料庫、創建和使用表、PL/SQL基礎、PL/SQL高級查詢、視圖、索引、同義詞和序列、數據完整性、PL/SQL程序設計、函數和遊標、存儲過程、觸發器、事務和鎖、安全管理、備份和恢復。
  • NET開發-在DBHelper中封裝ADO.NET對象,並調用執行添加數據功能
    編寫C#代碼在.NET應用程式中,對於經常性的資料庫操作,一般都會將與資料庫相關的操作封裝到DBHelper類庫中,幫助資料庫的操作。下面在Visual Studio的解決方案中添加一個類庫文件:調用DBHelper類庫對於封裝好的DBHelper類庫,就可以在ASP.NET WebForm應用程式中調用來操作SQL Server資料庫中了。
  • ASP.NET學習篇(3)——幾個簡單的ASP.ENT的例子
    *一個資料庫的應用——如何利用CONFIG.WEB中設置的DNS連接資料庫,資料庫操作對象的一些基本用法。*EMAIL發送——在 引入一個系統類庫後(用IMPORT 標識符 ),利用msgMail對象,可以很方便的操作郵件發送過程。
  • 告訴你 38 個 MySQL 資料庫的小技巧!
    函數可以嵌入在 SQL 語句中使用,可以在 SELECT 語句中作為查詢語句的一個部分調用;而存儲過程一般是作為一個獨立的部分來執行。24存儲過程中的代碼可以改變嗎?目前,MySQL 還不提供對已存在的存儲過程代碼的修改,如果必須要修改存儲過程,必須使用 DROP 語句刪除之後,再重新編寫代碼,或者創建一個新的存儲過程。25存儲過程中可以調用其他存儲過程嗎?
  • 告訴你38個MySQL資料庫的小技巧!
    函數可以嵌入在SQL 語句中使用,可以在SELECT語句中作為查詢語句的一個部分調用;而存儲過程一般是作為一個獨立的部分來執行。24、存儲過程中的代碼可以改變嗎?目前,MySQL還不提供對已存在的存儲過程代碼的修改,如果必須要修改存儲過程,必須使用DROP語句刪除之後,再重新編寫代碼,或者創建一個新的存儲過程。
  • 37 個 MySQL 資料庫小技巧,不看別後悔!
    函數可以嵌入在SQL 語句中使用,可以在SELECT語句中作為查詢語句的一個部分調用;而存儲過程一般是作為一個獨立的部分來執行。24、存儲過程中的代碼可以改變嗎?目前,MySQL還不提供對已存在的存儲過程代碼的修改,如果必須要修改存儲過程,必須使用DROP語句刪除之後,再重新編寫代碼,或者創建一個新的存儲過程。
  • ASP.NET控制項10個最有用的屬性詳解
    1、ClientIDMode  渲染ASP.NET控制項時會自動生成一個ID,當我們在客戶端腳本中引用它們時,卻會製造不少麻煩,雖然它是命名容器和ID的簡單串聯,但仍然無法預測生成的ID範圍。類增加了兩個新的屬性:Meta Keywords和Meta Description,可以在運行時設置這兩個屬性,通過資料庫或其它源驅動,並允許你動態設置標籤,描述特定的頁面,下面的Page標籤顯示了這兩個屬性。
  • 這才是你需要的最基礎的資料庫面試題(通俗易懂)
    觸發器是一個特殊的存儲過程,當對指定的表進行某種特定操作(如:Insert,Delete或Update)時,觸發器產生作用。觸發器可以調用存儲過程。什麼是存儲過程?用什麼來調用?存儲過程其實就是一個sql的方法(你就當成Java(或者C#等等)自己寫的方法,調用存儲過程其實就是調用方法)如果某次操作需要執行多次SQL,使用存儲過程比單純SQL語句執行要快。可以用一個「execute 存儲過程名 參數」命令來調用存儲過程。