當前位置:首頁 » 存儲配置 » asp存儲過程

asp存儲過程

發布時間: 2025-10-19 04:54:22

㈠ APS提供什麼技術方便訪問資料庫

用ASP訪問資料庫的幾種常見方式

ActiveXDataObjects(ADO)是一項容易使用並且可擴展的將資料庫訪問添加到Web頁的技術。可以使用ADO去編寫緊湊簡明的腳本以便連接到OpenDatabaseConnectivity(ODBC)兼容的資料庫和OLEDB兼容的數據源。如果您是一個對資料庫連接有一定了解的腳本編寫人員,那麼您將發現ADO命令語句並不復雜而且容易掌握。同樣地,如果您是一個經驗豐富的資料庫編程人員,您將會正確認識ADO的先進的與語言無關性和查詢處理功能。

創建ODBCDSN文件
在創建資料庫腳本之前,必須提供一條使ADO定位、標識和與資料庫通訊的途徑。資料庫驅動程序使用DataSourceName(DSN)定位和標識特定的ODBC兼容資料庫,將信息從Web應用程序傳遞給資料庫。典型情況下,DSN包含資料庫配置、用戶安全性和定位信息,且可以獲取WindowsNT注冊表項中或文本文件的表格。

通過ODBC,您可以選擇希望創建的DSN的類型:用戶、系統或文件。用戶和系統DSN存儲在WindowsNT注冊表中。系統DSN允許所有的用戶登錄到特定的伺服器上去訪問資料庫,而用戶DSN使用適當的安全身份證明限制資料庫到特定用戶的連接。文件DSN用於從文本文件中獲取表格,提供了對多用戶的訪問,並且通過復制DSN文件,可以輕易地從一個伺服器轉移到另一個伺服器。由於以上原因,本主題中的示例將使用文件DSN。

通過在Windows的「開始」菜單打開「控制面板」,您可以創建基於DSN的文件。雙擊「ODBC」圖標,然後選擇「文件DSN」屬性頁,單擊「添加」,選擇資料庫驅動程序,然後單擊「下一步」。按照後面的指示配置適用於您的資料庫軟體的DSN。

配置MicrosoftAccess資料庫的文件DSN

在「創建新數據源」對話框中,從列表框選擇「MicrosoftAccessDriver」,然後單擊「下一步」。
鍵入您的DSN文件名,然後單擊「下一步」。
單擊「完成」創建數據源。
在「ODBCMicrosoftAccess97安裝程序」對話框中,單擊「選擇」。選擇MicrosoftAccess資料庫文件(*.mdb),然後單擊「確定」。
注意由於性能和可靠性的原因,我們極力推薦您使用「客戶-伺服器資料庫引擎」配置由這樣一種Web應用程序驅動的數據,這些Web應用程序必須滿足10個以上的用戶的同時訪問。盡管ASP可以使用任何ODBC兼容的資料庫,但它是為使用客戶-伺服器資料庫而設計的,而且經過了嚴格的測試,這些資料庫包括MicrosoftsqlServer、Oracle等。

ASP支持共享文件資料庫(如MicrosoftAccess或MicrosoftFoxPro)作為有效的數據源。盡管在ASP文檔中的一些示例使用共享文件資料庫,但我們建議只將此類資料庫引擎用於開發或有限的配置方案。共享文件資料庫可能無法很好地適用於可滿足高需求、高質量的Web應用程序的客戶-伺服器資料庫。

配置SQLServer資料庫文件DSN

注意如果資料庫駐留在遠程伺服器上,請與伺服器管理員聯系,獲取附加的配置信息;下面的過程使用SQLServer的ODBC默認的設置,它可能不適用於您的硬體配置。

在「創建新數據源」對話框中,從列表框中選擇「SQLServer」,然後單擊「下一步」。
鍵入DSN文件的名稱,然後單擊「下一步」。
單擊「完成」創建數據源。
鍵入運行SQL服務程序的伺服器的名稱、登錄ID和密碼。
在「創建SQLServer的新數據源」對話框中,在「伺服器」列表框中鍵入包含SQLServer資料庫的伺服器的名稱,然後單擊「下一步」。
選擇驗證登錄ID的方式。
如果要選擇SQL伺服器驗證,請輸入一個登錄ID和密碼,然後單擊「下一步」。
在「創建SQLServer的新數據源」對話框中,設置默認資料庫、存儲過程設置的驅動程序和ANSI標識,然後單擊「下一步」。(要獲取詳細信息,請單擊「幫助」。)
在對話框(同樣名為「創建SQLServer的新數據源」)中,選擇一種字元轉換方法,然後單擊「下一步」。(詳細信息,請單擊「幫助」。)
在下一個對話框(同樣名為「創建SQLServer的新數據源」)中,選擇登錄設置。
注意典型情況下,您只能使用日誌來調試資料庫訪問問題。

在「ODBCMicrosoftSQLServer安裝程序」對話框中,單擊「測試數據源」。如果DSN正確創建,「測試結果」對話框將指出測試成功完成。
SQLserver連接和安全信息
如果您正在開發用於連接遠程SQLServer資料庫的ASP資料庫應用程序,應考慮以下問題:

連接方案-您可以選擇TCP/IP套接字和命名管道的方法訪問遠程的SQLServer資料庫。當使用命名管道時,因為在建立連接之前,資料庫用戶必須被WindowsNT確認,所以對只有適當的SQLServer訪問身份而在該計算機上沒有WindowsNT用戶帳號的用戶可能會被拒絕訪問命名管道。作為一種替代方案,使用TCP/IP套接字的連接可直接連接到資料庫伺服器,而不必通過使用命名管道的中間計算機。因為使用TCP/IP套接字連接可直接連接到資料庫server,所以通過SQLServer的確認,用戶就可以獲得訪問權,而不必通過WindowsNT的確認。
注意在連接到遠程資料庫時使用TCP/IP套接字可提高性能。

安全性-如果您使用SQLServer的集成或混合安全特性,並且SQLServer資料庫位於遠程伺服器上,則不能使用WindowsNT請求/響應的確認。也就是說,不能將WindowsNT請求/響應身份證轉發到遠程計算機上,而只能使用基本身份驗證,它根據用戶提供用戶名和口令信息進行。
有關這一主題的詳細信息,請參閱http://www.microsoft.com/sqlsupport/default.htm
上的MicrosoftSQLServer技術支持主頁。

配置Oracle資料庫文件DSN

首先要確保Oracle用戶軟體被正確地安裝要創建DSN的計算機上。詳細信息,請與伺服器管理員聯系或參閱資料庫軟體文檔。

在「創建新數據源」對話框中,從列表框中選擇「MicrosoftODBCforOracle」,然後單擊「下一步」。
鍵入DSN文件的名稱,然後單擊「下一步」。
單擊「完成」創建數據源。
輸入用戶名、密碼和伺服器名,然後單擊「確定」。
注意DSN文件用.dsn擴展名,位於\Programs\CommonFiles\ODBC\DataSources目錄中。

有關創建DSN文件的詳細信息,請訪問MicrosoftODBCWeb站點:http://microsoft.com/odbc/。

連接資料庫
訪問資料庫信息的第一步是和資料庫源建立連接。ADO提供Connection對象,可以使用該對象建立和管理應用程序和ODBC資料庫之間的連接。Connection對象具有各種屬性和方法,可以使用它們打開和關閉資料庫連接,並且發出查詢請求來更新信息。

要建立資料庫連接,首先應創建Connection對象的實例。例如,下面的腳本創建Connection對象,接著打開資料庫連接:

注意無論在等號(=)之前還是之後,DSN字元串都不能包含空格。

在這種情況下,Connection對象的Open方法引用基於DSN的文件,其中包含關於資料庫的位置和配置信息。也可以不引用DSN,直接顯式引用供應程序、數據源、用戶ID和密碼。

用Connection對象執行查詢
用Connection對象的Execute方法,您可以發出結構化查詢語言(SQL)查詢資料庫源並檢索結果。SQL是用於與資料庫通訊的工業標准語言,它有許多命令可用來檢索和更新信息。

下面的腳本使用Connection對象的Execute方法在SQLINSERT命令的表格中發出查詢,該命令將數據插入特定的資料庫表格。在下面的示例中,腳本將名稱JoseLugo插入名為Customers的資料庫表中。

注意基於DSN路徑字元串的文件在等號(=)前後不應包含空格。

除了SQLINSERT命令以外,您也可以使用SQLUPDATE和DELETE命令更改和刪除資料庫信息。

用SQLUPDATE命令,您可以改變資料庫表中各項目值。下面的腳本使用UPDATE命令將Customers表中每個LastName欄位包含姓Smith記錄的FirstName欄位更改為Jeff。

要想從資料庫表中刪除特定的記錄,可使用SQLDELETE命令。下面的腳本從Customers表中刪除了所有姓Smith的行:

注意在使用SQLDELETE命令時,必須謹慎從事。當使用不帶WHERE子句的DELETE命令時,它將刪除表中的所有行。一定要包含SQLWHERE子句來指定要刪除的確切行。

使用Recordset對象處理結果
盡管Connection對象簡化了連接資料庫和查詢任務,但Connection對象仍有許多不足。確切地說,檢索和顯示資料庫信息的Connection對象不能用於創建腳本;您必須確切知道要對資料庫作出的更改,然後才能使用查詢實現更改。

對於檢索數據、檢查結果、更改資料庫,ADO提供了Recordset對象。正如它的名稱所暗示的那樣,Recordset對象有許多您可以使用的特性,根據您的查詢限制,檢索並且顯示一組資料庫行,即記錄。Recordset對象保持查詢返回的記錄的位置,允許您一次一項逐步掃描結果。

根據Recordset對象的指針類型屬性設置,您可以滾動和更新記錄。資料庫指針可以讓您在一組記錄中定位到特定的項。指針還用於檢索和檢查記錄,然後在這些記錄的基礎上執行操作。Recordset對象有一些屬性,可用於精確地控制指針的行為,提高您檢查和更新結果的能力。例如,您可以使用CursorType和CursorLocation屬性設置指針的類型,將結果返回給客戶端應用程序(結果通常保留在資料庫伺服器上)並顯示其他用戶對資料庫的最後一次更改。

檢索記錄
一個成功的資料庫應用程序都使用Connection對象建立鏈接並使用Recordset對象處理返回的數據。通過「協調」兩個對象的特定功能,您可以開發出幾乎可以執行任何數據處理任務的資料庫應用程序。例如,下面的伺服器端腳本使用Recordset對象執行SQLSELECT命令。SELECT命令檢索一組基於查詢限制的信息。查詢也包含SQLWHERE子句,用來縮小查詢的范圍。此例中,WHERE子句將查詢限制為所有的Customers資料庫表中包含的姓Smith的記錄。

注意,在前面的例子中,用來建立資料庫連接的Connection對象和Recordset對象使用該連接從資料庫中檢索結果。當您需要精確地設置和資料庫建立鏈接所採用的方式時,這個方法是非常有用的。例如,如果您需要在連接嘗試失敗之前指定等待的時間,則需要使用Connection對象去設置屬性。但是,如果您僅僅想使用ADO默認的連接屬性建立連接,則應該使用Recordset對象的Open方法去建立鏈接:

當使用Recordset對象的Open方法建立一個連接時,必須使用Connection對象去保證鏈接的安全。

用Command對象改善查詢
通過ADOCommand對象,可以象用Connection對象和Recordset對象那樣執行查詢,唯一的不同在於用Command對象您可以在資料庫源上准備、編譯您的查詢並且反復使用一組不同的值來發出查詢。這種方式的編譯查詢的優點是您可以最大程度地減少向現有查詢重復發出修改的請求所需的時間。另外,您還可以在執行之前通過您的查詢的可變部分的選項使SQL查詢保持局部未定義。

Command對象的parameter集合減少了您的麻煩,使您不必在每次重新發出查詢時重新建立查詢。例如,如果需要有規律地更新基於庫存清單的Web系統中的供應和價格信息,可以用下面的方法預先定義查詢:

請檢查上面的例子,您將注意到,腳本用不同的數值重復構建和發出一個SQL查詢,而沒有重新定義和重發送查詢到資料庫源。用Command對象編譯查詢也可避免SQL查詢引起的合並字元串和表格變數問題。特別是,通過使用Command對象的Parameter集合可以避免與定義字元串、日期、時間變數的類型有關的問題。例如,包含「'」的SQL查詢值可能導致查詢失敗:

strSQL="INSERTINTOCustomers(FirstName,LastName)VALUES('Robert','O'Hara')"
注意,姓O'Hara中包含一個「'」,它與在SQLVALUES關鍵字中用來表示數據的「'」沖突。通過將查詢數值作為Command對象參數綁定,可以避免此類問題。

結合HTML表格和資料庫訪問
包含HTML表格的Web頁可使用戶遠程查詢資料庫並且檢索特定的信息。用ADO您可以創建非常簡單的腳本來收集用戶表格信息、創建自定義的資料庫查詢以及將信息返回給用戶。使用ASPRequest對象,您可以檢索輸入到HTML表格的信息並將這些信息合並到SQL語句中。例如,下面的腳本模塊將HTML表格提供的信息插入表格中。此腳本用Request對象的Form集合收集用戶信息。

有關表格和使用ASPRequest對象的詳細信息,請參閱使用HTML表格。

管理資料庫連接
設計一個能經得起考驗的Web資料庫應用程序(例如為幾千個客戶服務的聯機購物應用程序)的最大挑戰,在於如何合理地管理資料庫連接。打開並且保持資料庫連接,即使在沒有信息傳輸時,也會嚴重耗費資料庫伺服器的資源並且可能會導致連接性問題。設計良好的Web資料庫應用程序將回收資料庫連接並能夠補償由於網路堵塞造成的延遲。

使連接超時
活動的突然增長可能使資料庫伺服器變得十分笨拙,大量增加建立資料庫連接的時間。結果是,過長的連接延時將降低資料庫的性能。

用Connection對象的ConnectionTimeout,您可以限制放棄連接嘗試並發出錯誤消息之前應用程序等待的時間。例如,下面的腳本設置ConnectionTimeout屬性,在取消連接嘗試之前等待20秒:

Setcn=Server.CreateObject("ADODB.Connection")
cn.ConnectionTimeout=20
cn.Open"FILEDSN=MyDatabase.dsn"

默認的ConnectionTimeout屬性是30秒。

注意在將ConnectionTimeout屬性合並到資料庫應用程序之前,一定要確保連接提供程序和數據源支持該屬性。

共享連接
經常建立和中斷資料庫連接的Web資料庫應用程序可能會降低資料庫伺服器的性能。ASP支持用ODBC3.5的共享特性有效管理連接。連接共享維持打開的資料庫連接並管理不同的用戶共享該連接,以維持其性能和減少空閑的連接數。對每一個連接請求,連接池首先確定池中是否存在空閑的連接。如果存在,連接池返回連接而不是建立到資料庫的新連接。

如果希望將ODBC驅動程序加入到連接共享中,則必須配置資料庫驅動程序並在WindowsNT注冊表中設置驅動程序的CPTimeout屬性。當ODBC斷開連接時,連接被存入池中,而不是被斷開。CPTimeout屬性決定在連接池中的連接保留的時間長度。如果在池中連接保留的時間比CPTimeout設置的時間長,則連接將被關閉並且從池中刪除。CPTimeout的默認值是60秒。

您可以通過創建如下設置的注冊表鍵來有選擇地設置CPTimeout的屬性,從而啟用特定ODBC資料庫驅動程序的連接池:

\HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\driver-name\CPTimeout=timeout
(REG_SZ,unitsareinseconds)

例如,下面的鍵將SQLServer驅動程序的連接池的超時設置定為180秒(3分鍾)。

\HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\SQLServer\CPTimeout=180
注意默認情況下,通過將CPTimeout設置為60秒,Web伺服器將激活SQLServer的連接池。

使用跨頁連接
盡管您可以通過存儲ASP的Application對象的連接重復使用跨頁連接,但是,始終使連接保持打開是不必要的,也沒有充分利用連接池的優點。如果有許多用戶需要連接到同一個ASP資料庫應用程序,一個好方法就是,將跨頁連接字元串置於ASP的Application對象中,重復使用資料庫連接。例如,可以在Global.asa文件的Application_OnStart事件過程中指定連接字元串,如下面的腳本所示:

Application.lock
Application("ConnectionString")="FILEDSN=MyDatabase.dsn"
Application.unlock

然後,在每一個訪問資料庫的ASP文件中寫入:

要想創建連接對象的實例,請使用以下腳本:

cn.OpenApplication("ConnectionString")
對於打開的連接,可以在頁尾寫入以下腳本,關閉連接:

cn.Close
在單個用戶需要重復使用跨頁連接的情況下,使用Session對象連接比使用Application對象更好。

關閉連接
要想更好地使用連接池,就應盡快地關閉資料庫連接。默認情況下,當腳本執行完以後,連接將被終止。當不再需要連接時將其關閉,就可以減少對資料庫伺服器的要求並可以使其他用戶能夠使用該連接。

可以使用Connection對象的Close方法終止Connection對象和資料庫之間的連接。下面的腳本打開連接,然後將其關閉:

㈡ asp 如何返回存儲過程中的某個變數值

你可以使用 ADODB.Command 來調用存儲過程,如:

Dim adoComm
'// 創建一個對象,我們用來調用存儲過程
Set adoComm = CreateObject("ADODB.Command")
With adoComm
'// 設置連接,設 adoConn 為已經連接的 ADODB.Connection 對象
.ActiveConnection = adoConn
'// 類型為存儲過程,adCmdStoredProc = 4
.CommandType = 4
'// 存儲過程名稱
.CommandText = "你的存儲過程名稱"
'// 設置輸入參數
.Parameters.Item("@輸入參數").Value = "值"
'// 執行存儲過程
.Execute

If .Parameters.Item("@返回參數名稱").Value = True Then

Else

End If
End With
'// 釋放對象
Set adoComm = Nothing

詳細參考我原來寫的文章
http://bbs.51js.com/viewthread.php?tid=51505&fpage=2

㈢ 在ASP中調用存儲過程的幾種方法

1. 這也是最簡單的方法,兩個輸入參數,無返回值:
set connection = server.createobject("adodb.connection")
connection.open someDSN
Connection.Execute "procname varvalue1, varvalue2"
'將所有對象清為nothing,釋放資源
connection.close
set connection = nothing

2. 如果要返回 Recordset 集:
set connection = server.createobject("adodb.connection")
connection.open someDSN
set rs = server.createobject("adodb.recordset")
rs.Open "Exec procname varvalue1, varvalue2",connection
'將所有對象清為nothing,釋放資源
rs.close
connection.close
set rs = nothing
set connection = nothing

3. 以上兩種方法都不能有返回值,(Recordset除外),如果要得到返回值,需要用Command的方法。
首先說明,返回值有兩種。一種是在存儲過程中直接return一個值,就象C和VB的函數返回值那樣;另一種是可以返回多個值,存
儲這些值的變數名稱需要在調用參數中先行指定。
這個例子要處理多種參數,輸入參數,輸出參數,返回記錄集以及一個直接返回值。

網路轉載

熱點內容
演算法循環 發布:2025-10-19 06:40:34 瀏覽:929
squid代理ftp 發布:2025-10-19 06:25:53 瀏覽:211
php定義全局變數 發布:2025-10-19 06:21:49 瀏覽:37
為什麼要做配置中心 發布:2025-10-19 06:18:11 瀏覽:81
php非同步上傳圖片 發布:2025-10-19 06:01:23 瀏覽:524
mysql資料庫屬性 發布:2025-10-19 05:39:10 瀏覽:818
python3發送郵件 發布:2025-10-19 05:37:42 瀏覽:149
怎麼把安卓軟體包做成鏈接 發布:2025-10-19 05:31:17 瀏覽:651
安卓系統怎麼越來越大了 發布:2025-10-19 05:30:28 瀏覽:758
db2資料庫編目 發布:2025-10-19 05:22:45 瀏覽:237