用儲存過程實現ASP對資料庫訪問

2021-03-31 08:56:29 字數 4339 閱讀 5580

一、ado概述

activex 資料物件 (ado) 是一種既易於使用又可擴充的技術,用來將資料庫訪問新增到您的 web 頁可以使用 ado 編寫簡潔和可公升級的指令碼以連線到與 ole db 相容的資料來源,如資料庫、電子**、順序資料檔案或電子郵件目錄。ole db 是乙個系統級的程式設計介面,它提供一套標準的 *** 介面,用來展示資料庫管理系統的功能。使用 ado 的物件模型,您可以輕鬆地(使用 vbscript 或 jscript 等指令碼語言)訪問這些介面並將資料庫功能新增到您的 web 應用程式中。另外,您還可以使用 ado 訪問與開放式資料庫互連 (odbc) 相容的資料庫。

如果您是一位對資料庫互連知識有一定了解的指令碼編寫者,您將會發現 ado 的命令語法很簡單,而且很容易使用。如果您是一位經驗豐富的開發人員,您將會非常欣賞 ado 提供的這種可公升級的對各種資料來源的高效能訪問。

二、訪問資料庫的一般方法

一般的網頁訪問中訪問資料庫是按照下列步驟進行的,首先建立乙個adodb.connection 介面的物件,接著在這乙個物件上繫結相應的資料來源(可以用有名資料來源和無名資料來源),根據需要建立或者不建立記錄集,然後在該資料來源上鏈結用執行或開啟的方法來對相應的表進行操作。

asp訪問資料庫的一般方法:

<

set oconn=server.createobject(「adodb.connection」)

set ors=server.createobject(「adodb.recordset」)

set strconn="provider=sqloledb;user id=sa; initial catalog=pubs;data source=" &request.servervariables("server_name")

oconn.open strconn

set ors=oconn.execute(「select * from test」)

>

以上介紹了無名鏈結的oledb的使用方法,如果是有名鏈結,設為資料來源test,使用者名稱和口令均為空,則只需要改寫一下上述語句oconn.open 「test」,」」,」」

上面簡要介紹了一下對於網頁中涉及到資料庫訪問的一般方法,這些已經是很成熟的,也是很有用的,如果在實際中對於某些資料的訪問過於複雜,需要近10條sql語句才能寫完,那麼這種方法就有點欠缺,另外有些時候需要使用相同的處理過程,而在不同的網頁中使用,而這用儲存過程則是最有利的,還有乙個最大特點是儲存過程對於技術的保密性相對高些,它儲存於遠端伺服器的資料庫內。

三、儲存過程在asp中的使用

在ado中提供了對儲存過程的訪問,它需要用到***mand物件,在這個物件上使用者可以直接執行sql伺服器的儲存過程,而命令中所需要的引數可以借助於其屬性pamaters來進行處理。

注意 乙個 ***mand 物件要想有效,必須和乙個 connection 物件相關聯,方法是***mand 物件的 activeconnection 屬性就被設定到這個 connection 物件。如果乙個 connection 物件不能被標識,在您將它與乙個連線關聯之前,***mand 物件是無效的。

< dim oconn

dim strconn

dim ocmd

dim ors,ors1

dim aa

dim sql

set oconn = server.createobject("adodb.connection")

set ocmd = server.createobject("adodb.***mand")

set ors1=server.createobject("adodb.recordset")

' 開啟鏈結,使用使用者標識sa,口令為空,連線為本地伺服器上的資料庫

strconn="provider=sqloledb;user id=sa;initial catalog=pubs;data source="& request.servervariables("server_name")

'如果連線乙個遠端的資料庫,該資料庫位址為:10.82.88.105,使用者為tmp,口令為123,

『則可用下面的方法

『 strconn="provider=sqloledb;user id=tmp;pwd=123;initial catalog=tjbb;data source="& "10.82.88.110"

oconn.open strconn

『將建立的鏈結新增到命令的活動鏈結屬性中

set ocmd.activeconnection = oconn

' 設定呼叫儲存過程byroyalty和引數,引數由?引入

ocmd.***mandtext = ""

' 提供輸入的引數

ocmd("@percentage") = 75

『在asp中上述輸入引數的使用也可不用引數屬性來實現直接用vb中的&來形成命令文字中對應的資料即可

『引數的使用在輸出時是特別有用的

set ors = ocmd.execute

ors1.activeconnection=oconn

『該命令物件中也可應用一般的sql語句使用source和open屬性,其中source指出資料來源

ors1.source ="select * from [tmptable] where 年份=2000 and 月份=1"

ors1.cursortype=adopenstatic

ors1.open

>

四、在sql中的儲存過程簡介

利用sql的語言可以編寫對於資料庫訪問的儲存過程,其語法如下:

create proc[edure] procedure_name [;number]

[ [varying] [= default] [output]

][,...n]

[with

][for replication]

assql_statement [...n]

[ ]內的內容是可選項,而()內的內容是必選項,

例: 若使用者想建立乙個刪除表tmp中的記錄的儲存過程select_delete可寫為:

create proc select_del as

delete tmp

例:使用者想查詢tmp表中某年的資料的儲存過程

create proc select_query @year int as

select * from tmp where year=@year

在這裡@year是儲存過程的引數

例:該儲存過程是從某結點n開始找到最上層的父親結點,這種經常用到的過程可以由儲存過程來擔當,在網頁中重複使用達到共享。

空:表示該結點為頂層結點

fjdid(父結點編號)

結點n 非空:表示該結點的父親結點號

dwmc(單位名稱)

create proc search_dwmc @dwidold int,@dwmcresult varchar(100) output

as declare @stop int

declare @result varchar(80)

declare @dwmc varchar(80)

declare @dwid int

set nocount on

set @stop=1

set @dwmc=""

select @dwmc=dwmc,@dwid=convert(int,fjdid) from jtdw where id=@dwidold

set @result=rtrim(@dwmc)

if @dwid=0

set @stop=0

while (@stop=1) and (@dwid<>0)

begin

set @dwidold=@dwid

select @dwmc=dwmc,@dwid=convert(int,fjdid) from jtdw where id=@dwidold

if @@rowcount=0

set @dwmc=""

else

set @result=@dwmc+@result

if (@dwid=0) or (@@rowcount=0)

set @stop=0

else

continue

endset @dwmcresult=rtrim(@result)

充分合理地利用儲存過程,可以提高伺服器吞吐能力,筆者利用儲存過程來從近20個表中獲取資料組合成乙個通用的表,產生近2萬條記錄,而所需時間約7秒鐘,如果這種操作借助於較合理的動態網頁可以將伺服器開發提高到乙個高度,充分利用儲存過程,可以減輕網頁設計帶來的繁重處理,而使所編寫的**得到共享和合理的利用,並將**藏於伺服器的資料庫內部,使得一些技術得到的保密,這也是儲存過程的一大特色,希望讀者能從中得到啟益。

ASP對資料庫的訪問

文 王漢洲 asp即active server page,是微軟推出的動態web設計技術,是用於www服務的伺服器端指令碼環境,在站點的web伺服器上解釋指令碼,可產生並執行動態 互動式 高效率的站點伺服器應用程式。概述利用asp,我們可以很容易地把html 超文字標記語言 文字 指令碼命令及act...

asp用儲存過程實現快速分頁

asp用儲存過程實現快速分頁 在本地測試速度提公升了不少。已經加在本站的mtv歌曲列表網頁 一 先建立儲存過程p splitpage create procedure p splitpage sql nvarchar 4000 currentpage int 2,pagesize int 10,re...

通過ASP實現flash對資料庫的訪問

近來 需要在flash中提取資料庫中的資料,從網上找了一點資料,今天下午在自己的機器上實現了一下,還是比較簡單的。環境 adobe flash cs4,vs2008 access2003 實現步驟 1 建立asp.net頁面 testcommunicatewithflash.aspx,將頁面body...