用於調用存儲的對象是
⑴ VB中ADODB的Connection對象Execute方法調用sql存儲過程方法
Set adoRs = adoConn.Execute("exec Book_SelectName 'sqlarg'")
改為
Set adoRs = adoConn.Execute("exec Book_SelectName '" & sqlArg & "'")
⑵ admin頁面里用哪個作用域對象
在JSP頁面開發中,通常需要使用四種作用域對象,分別是:
1. pageContext:頁面作用衫頃銀域,即當前JSP頁面內有效,在整個頁面范圍內有效,只對當前頁面其他的JSP或java代碼可見,可通過JSP內置對象 `pageContext` 調用。
2. request:請求作用域,即當前請求內有效,在同一次請求中的所有頁面和資源內或宴共享,可以通過HttpServletRequest對象調用,一般用於實現數據的傳遞和請求的共享。
3. session:會話作用域,即一個用戶登錄後與伺服器建立的一次連接,在該連接的所有頁面、資源內共享,可以通過HttpSession對象調用,一般用於存儲用戶信息和登錄態等。
4. application:應用程序作用域,即整個Web應用內有效,在整個Web應用中共享,可以通過ServletContext對象調用,一般用於存儲全局的配置參數和共享的數據。
在開發admin頁面時,通常需要使用session作用域對象,以存儲用戶登錄信息、許可權管理等數據。具體使用哪個作用域對象還需要根據具體的業務需求和開發場景進行選擇。如果僅是在當前頁面內需要傳遞數據,則可選用pageContext或request作用域;如果需要在多個頁面之間共享同一數據,則可選用session或application作用域乎態。
⑶ 在Access資料庫系統的7種操作對象中,用來存儲數據的操作對象是什麼
是表。
該表由欄位和記錄組成。欄位是表中的一列,每個欄位表示某方面信息的度屬性。欄位有一個類型。
例如:name字元的字元類型和「age」欄位的數字類型。欄位的基本屬性有:欄位名、數據類型、欄位大小、默認值等等。
記錄是數據表中的一行,由一個或多個詞段的值組成。記錄是顯示對象所有屬性的完整信息,若容:001,張三,男,21歲,可作為記錄使用。
(3)用於調用存儲的對象是擴展閱讀:
訪問的主要對象是數據表、查詢、報表、表單、宏、模塊。
表——表是Access資料庫的核心對象,主要用於存儲數據,是創建其他五種對象的基礎。數據表是同一類型數據的集合,以行和列的形式顯示數據記錄。
表由記錄組成,記錄由欄位組成。它是數據存儲在Access資料庫中的位置,因此也稱為資料庫。一個資料庫可以包含一個或多個數據表。
查詢——根據預定義的約束從一個或多個表中檢索符合條件的數據,並執行統計和分析。查詢可以根據索引快速查找所需的記錄,根據需求過濾記錄,並可以連接多個表的欄位形成一個新表。
表單——表單提供了一個方便的窗口來瀏覽、輸入和更改數據。還可以創建顯示相關表內容的子表單。一方面,表單可以使輸入過程更加有趣,另一方面,它也保護了數據的完整性、准確性和安全性。
報表——報表用於以特定的方式顯示檢索到的數據或原始數據。報表不僅可以對數據進行分組,還可以支持各種數據的統計和計算。
宏——一個或多個命令的集合,每個命令執行特定的功能。通過組合這些命令,可以自動執行某些頻繁重復或復雜的操作。Access的大部分功能都可以通過組合宏來完成。
模塊——模塊的功能類似於宏,但它定義的操作比宏更精細、更復雜,用戶可以編寫適合自己需要的程序。
⑷ java中如何調用資料庫的存儲過程
Java調用存儲過程的方法是通過調用Connection的實例方法prepareCall,prepareCall方法返回CallableStatement對象用於填充存儲過程的參數。prepareCall方法形參是調用存儲過程的sql語句,此參數的語法格式如下:
{callstoredProcereName(parameter-list)}
其中,storedProcereName是存儲過程名稱,parameter-list是存儲過程參數列表。
例如,存儲過程名為usp_test,有兩個輸入參數a,b。則調用代碼看起來如下所示:
=connection.prepareCall("{callusp_test(?,?)}");
callableStatement.setObject("a","value-1");
callableStatement.setObject("b","value-2");
callableStatement.execute();
⑸ 儲存過程的類型有哪些
問題一:存儲過程的種類 1系統存儲過程以sp_開頭,用來進行系統的各項設定.取得信息.相關管理工作。2本地存儲過程用戶創建的存儲過程是由用戶創建並完成某一特定功能的存儲過程,事實上一般所說的存儲過程就粗肢螞是指本地存儲過程。3臨時存儲過程分為兩種存儲過程:一是本地臨時存儲過程,以井字型大小(#)作為其名稱的第一個字元,則該存儲過程將成為一個存放在tempdb資料庫中的本地臨時存儲過程,且只有創建它的用戶才能執行它;二是全局臨時存儲過程,以兩個井字型大小(##)號開始,則該存儲過程將成為一個存儲在tempdb資料庫中的全局臨時存儲過程,全局臨時存儲過程一旦創建,以後連接到伺服器的任意用戶都可以執行它,而且不需要特定的許可權。4遠程存儲過程在SQL Server2005中,遠程存儲過程(Remote Stored Proceres)是位於遠程伺服器上的存儲過程,通常可以使用分飢李布式查詢和EXECUTE命令執行一個遠程存儲過程。5擴展存儲過程擴展存儲過程(Extended Stored Proceres)是用戶岩埋可以使用外部程序語言編寫的存儲過程,而且擴展存儲過程的名稱通常以xp_開頭。
問題二:sql,server中的存儲過程有幾種類型 》系統過程,用戶過程;
》內部過程,擴展存貯過程(外部dll)
問題三:SQL Server2005中存儲過程的類型有哪些 10分 存儲過程是指封裝了可重用代碼的模塊或常式。存儲過程可以接受輸入參數、向客戶端返回表格或標量結果和消息、調用數據定義語言 (DDL) 和數據操作語言 (DML) 語句,然後返回輸出參數。在 SQL Server 2005 中,存儲過程有兩種類型:Transact-SQL 或 CLR。
Transact-SQL
Transact-SQL 存儲過程是指保存的 Transact-SQL 語句 *** ,可以接受和返回用戶提供的參數。例如,存儲過程中可能包含根據客戶端應用程序提供的信息在一個或多個表中插入新行所需的語句。存儲過程也可能從資料庫向客戶端應用程序返回數據。
CLR
CLR 存儲過程是指對 Microsoft .NET Framework 公共語言運行時 (CLR) 方法的引用,可以接受和返回用戶提供的參數。它們在 .NET Framework 程序集中是作為類的公共靜態方法實現的。
問題四:sql server存儲過程的參數有哪些類型 int,char,nchar,nvarchar,varchar,text,date,time,datetime,bit,bool……
問題五:sql server存儲過程的參數有哪些類型 SQL Server存儲過程是SQL資料庫的重要組成部分,其中可以用到許多參數。在SQL Server存儲過程中,支持輸入(Input)、輸出參數(Output),也支持返回值參數(ReturnValue)。
返回值參數不是一個形參,而類似於編程中的返回值類型。它都是通過Return語句來返回的,而且在SQL Server中,必須返回INT型的數據,而且很顯然,只能有一個返回值,因為RETURN語句其實是會終止SQL Server存儲過程的。
例子:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
ALTER PROCEDURE [dbo].[GetCustomers]
(@rowcount INT OUTPUT)
AS
SELECT [CustomerID]
,[panyName]
,[ContactName]
,[ContactTitle]
,[Address]
,[City]
,[Region]
,[PostalCode]
,[Country]
,[Phone]
,[Fax]
FROM [Northwind].[dbo].[Customers]
SET @rowcount=
rowcount
問題六:在SQL中存儲過程的一般語法是什麼? sql server存儲過程語法
存儲過程就是作為可執行對象存放在資料庫中的一個或多個SQL命令。
定義總是很抽象。存儲過程其實就是能完成一定操作的一組SQL語句,只不過這組語句是放在資料庫中的(這里我們只談SQL Server)。如果我們通過創建存儲過程以及在ASP中調用存儲過程,就可以避免將SQL語句同ASP代碼混雜在一起。這樣做的好處至少有三個:
第一、大大提高效率。存儲過程本身的執行速度非常快,而且,調用存儲過程可以大大減少同資料庫的交互次數。
第二、提高安全性。假如將SQL語句混合在ASP代碼中,一旦代碼失密,同時也就意味著庫結構失密。
第三、有利於SQL語句的重用。
在ASP中,一般通過mand對象調用存儲過程,根據不同情況,本文也介紹其它調用方法。為了方便說明,根據存儲過程的輸入輸出,作以下簡單分類:
1. 只返回單一記錄集的存儲過程
假設有以下存儲過程(本文的目的不在於講述T-SQL語法,所以存儲過程只給出代碼,不作說明):
/*SP1*/
CREATE PROCEDURE dbo.getUserList
as
set nocount on
begin
select * from dbo.[userinfo]
end
go
以上存儲過程取得userinfo表中的所有記錄,返回一個記錄集。通過mand對象調用該存儲過程的ASP代碼如下:
'**通過mand對象調用存儲過程**
DIM Mym,MyRst
Set Mym = Server.CreateObject(ADODB.mand)
Mym.ActiveConnection = MyConStr 'MyConStr是資料庫連接字串
Mym.mandText = getUserList '指定存儲過程名
Mym.mandType = 4 '表明這是一個存儲過程
Mym.Prepared = true '要求將SQL命令先行編譯
Set MyRst = Mym.Execute
Set Mym = Nothing
存儲嘩程取得的記錄集賦給MyRst,接下來,可以對MyRst進行操作。
在以上代碼中,mandType屬性表明請求的類型,取值及說明如下:
-1 表明mandText參數的類型無法確定
1 表明mandText是一般的命令類型
2 表明mandText參數是一個存在的表名稱
4 表明mandText參數是一個存儲過程的名稱
還可以通過Connection對象或Recordset對象調用存儲過程,方法分別如下:
'**通過Connection對象調用存儲過程**
DIM MyConn,MyRst
Set MyConn = Server.CreateObject(&qu......>>
問題七:商品在儲存過程中的變化形式有哪些 在商品交換發展的歷史過程中,隨著商品交換從偶然的行為逐步擴大成為經濟生活中的重要環節,商品的價值形式也逐步發展。從簡單的、個別的或偶然的價值形式,發展到總和的或擴大的價值形式,再發展到一般價值形式,最後發展到貨幣形式。 商品是使用價值和價值的統一。商品的使用價值是實實在在的,是看得見、摸得著的。米、布、房屋、自行車等等各種商品體的自然形態,體現著各種不同的使用價值,這是一目瞭然的。商品的價值實體是物化在商品中的一般人類勞動,與使用價值不同,商品的這種價值實體是看不見、摸不著的。即使把一件商品拆得粉碎,也找不到價值的任何影跡。這是因為,價值純粹是商品的社會屬性。價值實體雖然是已經消耗的勞動力即勞動,但並不是任何生產物質產品的勞動都會形成價值。只有當勞動產品成了供交換即供他人使用的商品,物化在商品中的勞動,才需要互相比較,才需要撇開其特殊的有用性質而把它看作無差別的一般人類勞動即抽象勞動。勞動產品轉化為商品和消耗在產品生產中的勞動轉化為價值,都是特定的社會關系的表現。價值既然純粹是商品的社會屬性,從商品體的自然形態中,當然無法找到它的影蹤,而只有從價值關系即商品與商品交換的社會關系中,才能探索它的存在。 當兩種商品互相交換,例如商品A與商品B相交換的時候,A、B兩種商品就發生了等價關系。在商品交換中,任何一方都不願吃虧。盡管在每個個別的交換行為中,由於各種各樣的原因,交換的一方吃虧、另一方佔便宜的事會經常發生;但從整體看,從長期趨勢看,商品交換必然是價值量相等的交換。例如,1件上衣同20碼麻布相交換,是因為 1件上衣和20碼麻布,在生產中耗費了等量的勞動,具有等量的價值。在這一商品交換關系中,20碼麻布是 1件上衣的交換價值。上衣的價值從上衣本身雖然看不出來,但它一旦同麻布交換,與麻布發生了價值關系,上衣的價值就可以從麻布上面表現了出來。商品的價值關系表明,價值是交換價值的內容,交換價值是商品價值的形式。在人類歷史中,隨著商品交換的發展,商品的價值形式也隨之變化和發展。
問題八:SQL的存儲過程 語法格式是什麼? ---判斷是否存在存儲過程
if exists( select name from sysobjects where name='proc_name' )
drop proc proc_name
go
---創建存儲過程
create proc proc_name
@parameter varchar(20),
@parameter2 int
as
主體語句
go
if exists:判斷是否存在
drop proc : 刪除存儲過程,後面接存儲過程名稱,名稱不用引起來
create proc: 創建存儲過程,後面接存儲過程名稱,名稱不用引起來
@parameter varchar(20): 參數,在執行存儲過程的時候需要傳入的參數,這里是字元類型,如果有多個參數的話,除了最後一個參數,其他的參數後面需要加逗號(英文狀態),如果不需要傳入,直接去掉就行了。
create proc proc_name
as
主體語句
go
as : 關鍵字
主體語句:就是你要做的操作的語句,和平時的完全一樣,存儲過程就相當把平時的sql語句在外面加了個殼的感覺。比如這里你需要查詢一個表 select * from tableName1 那麼這里就這樣寫
create proc proc_name
as
select * from tableName1
go
傳參數:
create proc proc_name
@parameter varchar(20)
as
select * from tableName where [email protected]
go
執行的時候這樣
exec proc_name '小明'
其他的操作都是這樣的。
希望對你有幫助
問題九:外存主要有哪些類型 外儲存器是指除計算機內存及CPU緩存以外的儲存器,此類儲存器一般斷電後仍然能保存數據。常見的外儲存器有硬碟、軟盤、光碟、U盤等。
問題十:存儲過程傳的參數是list,應該用什麼類型接受 看下這個吧。
bbs.csdn/topics/390094413
有代碼
⑹ 在vb中調用sql存儲過程
分類: 電腦/網路 >> 程序設計 >> 其他編程語言
問題描述:
請問在vb中如何調用sql存儲過程?謝謝啦!
解析:
你可以使用 ADODB.Command 來調用存儲過程,如:
Dim adoComm As Object
' 創建一個對象,我鎮亮們用來調用存儲過程
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
⑺ 如何在VBA中調用存儲過程
方法有幾種
1、
SetConn=Server.CreateObject("ADODB.Connection")
Conn.openstrConn
iferr.number<>0then
response.Write"資料庫鏈接失敗。"'&err.Description
response.End
endIf
setRs=server.CreateObject("adodb.recordset")
'調用存儲過程:[dbo].[Usp_GetUserMenu]
strsql="[dbo].[Usp_GetUserMenu]@UserID='"&Session(g_SessionName&"_UserID")&"'"
'這句話是關鍵,CursorLocation意思是游標本地化
rs.CursorLocation=3
Rs.openstrsql,conn,1,1
iferr.number<>0Then
conn.close
setconn=nothing
endif
fori=1tors.RecordCount
iMenuType=rs("MenuType")
......
rs.MoveNext
next
rs.Close
setrs=nothing
conn.close
setconn=nothing
2. 使用adobd.Command對象
VB6.0調用存儲過程的例子
(說明:以下代碼摘自微軟的MSDN,經過測試沒問題。使用該方法的前提條件是必須知道將要使用的參數化命令的詳細情況。)
打開Form1窗體,Copy以下的代碼到窗體中,該段代碼將測試存儲過程ADOTestRPE的返回值、輸入參數及輸出參數,測試的過程中,可能需要修改鏈接字元串。
SubCreateParms()
DimADOCmdAsNewADODB.Command
DimADOPrmAsNewADODB.Parameter
DimADOConAsADODB.Connection
DimADORsAsADODB.Recordset
DimsParmNameAsString
DimstrConnectAsString
DimrStrAsString
OnErrorGoToErrHandler
strConnect="driver={SQLServer};server=(local);uid=sa;pwd=;database=pubs"
SetADOCon=NewADODB.Connection
WithADOCon
.Provider="MSDASQL"
.CursorLocation=adUseServer'MustuseServersidecursor.
.ConnectionString=strConnect
.Open
EndWith
SetADOCmd.ActiveConnection=ADOCon
WithADOCmd
.CommandType=adCmdStoredProc
.CommandText="ADOTestRPE"
EndWith
'.
sParmName="Return"
SetADOPrm=ADOCmd.CreateParameter(sParmName,adInteger,_
adParamReturnValue,,0)
ADOCmd.Parameters.AppendADOPrm
ADOCmd.Parameters(sParmName).Value=-1
'
'parameter.
sParmName="Output"
SetADOPrm=ADOCmd.CreateParameter(sParmName,adInteger,_
adParamOutput)
ADOCmd.Parameters.AppendADOPrm
ADOCmd.Parameters(sP
armName).Value=999
'Parameter2
sParmName="R1Num"'.
SetADOPrm=ADOCmd.CreateParameter(sParmName,adInteger,_
adParamInput)
ADOCmd.Parameters.AppendADOPrm
ADOCmd.Parameters(sParmName).Value=1
'Parameter3
sParmName="P1Num"'.
SetADOPrm=ADOCmd.CreateParameter(sParmName,adInteger,_
adParamInput)
ADOCmd.Parameters.AppendADOPrm
ADOCmd.Parameters(sParmName).Value=0
'Parameter4
sParmName="E1Num"'
'1.
SetADOPrm=ADOCmd.CreateParameter(sParmName,adInteger,_
adParamInput)
ADOCmd.Parameters.AppendADOPrm
ADOCmd.Parameters(sParmName).Value=0
'Parameter5
sParmName="R2Num"'.
SetADOPrm=ADOCmd.CreateParameter(sParmName,adInteger,_
adParamInput)
ADOCmd.Parameters.AppendADOPrm
ADOCmd.Parameters(sParmName).Value=2
'Parameter6
sParmName="P2Num"'.
SetADOPrm=ADOCmd.CreateParameter(sParmName,adInteger,_
adParamInput)
ADOCmd.Parameters.AppendADOPrm
ADOCmd.Parameters(sParmName).Value=0
'Parameter7
sParmName="E2Num"'
'2.
SetADOPrm=ADOCmd.CreateParameter(sParmName,adInteger,_
adParamInput)
ADOCmd.Parameters.AppendADOPrm
ADOCmd.Parameters(sParmName).Value=0
SetADORs=ADOCmd.Execute
DoWhile(NotADORsIsNothing)
IfADORs.State=adStateClosedThenExitDo
WhileNotADORs.EOF
Fori=0ToADORs.Fields.Count-1
rStr=rStr&":"&ADORs(i)
Nexti
Debug.PrintMid(rStr,3,Len(rStr))
ADORs.MoveNext
rStr=""
Wend
Debug.Print"----------------------"
SetADORs=ADORs.NextRecordset
Loop
Debug.Print"Return:"&ADOCmd.Parameters("Return").Value
Debug.Print"Output:"&ADOCmd.Parameters("Output").Value
GoToShutdown
ErrHandler:
CallErrHandler(ADOCon)
ResumeNext
Shutdown:
SetADOCmd=Nothing
SetADOPrm=Nothing
SetADORs=Nothing
SetADOCon=Nothing
EndSub
PrivateSubCommand1_Click()
CallCreateParms
EndSub
SubErrHandler(objConAsObject)
DimADOErrAsADODB.Error
DimstrErrorAsString
ForEachADOErrInobjCon.Errors
strError="Error#"&ADOErr.Number&vbCrLf&ADOErr.Description_
&vbCr&_
"(Source:"&ADOErr.Source&")"&vbCr&_
"(SQLState:"&ADOErr.SQLState&")"&vbCr&_
"(NativeError:"&ADOErr.NativeError&")"&vbCr
IfADOErr.HelpFile=""Then
strError=strError&"NoHelpfileavailable"&vbCr&vbCr
Else
strError=strError&"(HelpFile:"&ADOErr.HelpFile&")"_
&vbCr&"(HelpContext:"&ADOErr.HelpContext&")"&_
vbCr&vbCr
EndIf
Debug.PrintstrError
Next
objCon.Errors.Clear
EndSub
⑻ 怎樣在項目中使用存儲過程
如何用JAVA調用存儲過程
CallableStatement 對象為所有的 DBMS 提供了一種以標准形式調用已儲存過程的方法。已儲存過程儲存在資料庫中。對已儲存過程的調用是 CallableStatement對象所含的內容。這種調用是用一種換碼語法來寫的,有兩種形式:一種形式帶結果參,另一種形式不帶結果參數。結果參數是一種輸出 (OUT) 參數,是已儲存過程的返回值。兩種形式都可帶有數量可變的輸入(IN 參數)、輸出(OUT 參數)或輸入和輸出(INOUT 參數)的參數。問號將用作參數的佔位符。
在 JDBC 中調用已儲存過程的語法如下所示。注意,方括弧表示其間的內容是可選項;方括弧本身並不是語法的組成部份。
{call 過程名[(?, ?, ...)]}
返回結果參數的過程的語法為:
{? = call 過程名[(?, ?, ...)]}
不帶參數的已儲存過程的語法類似:
{call 過程名}
通常,創建 CallableStatement 對象的人應當知道所用的 DBMS 是支持已儲存過程的,並且知道這些過程都是些什麼。然而,如果需要檢查,多種DatabaseMetaData 方法都可以提供這樣的信息。例如,如果 DBMS 支持已儲存過程的調用,則supportsStoredProceres 方法將返回 true,而getProceres 方法將返回對已儲存過程的描述。CallableStatement 繼承 Statement 的方法(它們用於處理一般的 SQL 語句),還繼承了 PreparedStatement 的方法(它們用於處理 IN 參)。
CallableStatement 中定義的所有方法都用於處理 OUT 參數或 INOUT 參數的輸出部分:注冊 OUT 參數的 JDBC 類型(一般 SQL 類型)、從這些參數中檢索結果,或者檢查所返回的值是否為 JDBC NULL。
1、創建 CallableStatement 對象
CallableStatement 對象是用 Connection 方法 prepareCall 創建的。下例創建 CallableStatement 的實例,其中含有對已儲存過程 getTestData 調用。該過程有兩個變數,但不含結果參數:
CallableStatement cstmt = con.prepareCall("{call getTestData(?, ?)}");
其中?佔位符為IN、OUT還是INOUT參數,取決於已儲存過程getTestData。
2、IN和OUT參數
將IN參數傳給 CallableStatement 對象是通過 setXXX 方法完成的。該方法繼承自 PreparedStatement。所傳入參數的類型決定了所用的setXXX方法(例如,用 setFloat 來傳入 float 值等)。
如果已儲存過程返回 OUT 參數,則在執行 CallableStatement 對象以前必須先注冊每個 OUT 參數的 JDBC 類型(這是必需的,因為某些 DBMS 要求 JDBC 類型)。注冊 JDBC 類型是用 registerOutParameter 方法來完成的。語句執行完後,CallableStatement 的 getXXX 方法將取回參數值。正確的 getXXX 方法是為各參數所注冊的 JDBC 類型所對應的 Java 類型。換言之, registerOutParameter 使用的是 JDBC 類型(因此它與資料庫返回的 JDBC 類型匹配),而 getXXX 將之轉換為 Java 類型。
作為示例,下述代碼先注冊 OUT 參數,執行由 cstmt 所調用的已儲存過程,然後檢索在 OUT 參數中返回的值。方法 getByte 從第一個 OUT 參數中取出一個 Java 位元組,而 getBigDecimal 從第二個 OUT 參數中取出一個 BigDecimal 對象(小數點後面帶三位數):
CallableStatement cstmt = con.prepareCall("{call getTestData(?, ?)}");
cstmt.registerOutParameter(1, java.sql.Types.TINYINT);
cstmt.registerOutParameter(2, java.sql.Types.DECIMAL, 3);
cstmt.executeQuery();
byte x = cstmt.getByte(1);
java.math.BigDecimal n = cstmt.getBigDecimal(2, 3);
CallableStatement 與 ResultSet 不同,它不提供用增量方式檢索大 OUT 值的特殊機制。
3、INOUT參數
既支持輸入又接受輸出的參數(INOUT 參數)除了調用 registerOutParameter 方法外,還要求調用適當的 setXXX 方法(該方法是從 PreparedStatement 繼承來的)。setXXX 方法將參數值設置為輸入參數,而 registerOutParameter 方法將它的 JDBC 類型注冊為輸出參數。setXXX 方法提供一個 Java 值,而驅動程序先把這個值轉換為 JDBC 值,然後將它送到資料庫中。這種 IN 值的 JDBC 類型和提供給 registerOutParameter 方法的 JDBC 類型應該相同。然後,要檢索輸出值,就要用對應的 getXXX 方法。例如,Java 類型為byte 的參數應該使用方法 setByte 來賦輸入值。應該給registerOutParameter 提供類型為 TINYINT 的 JDBC 類型,同時應使用 getByte 來檢索輸出值。
下例假設有一個已儲存過程 reviseTotal,其唯一參數是 INOUT 參數。方法setByte 把此參數設為 25,驅動程序將把它作為 JDBC TINYINT 類型送到資料庫中。接著,registerOutParameter 將該參數注冊為 JDBC TINYINT。執行完該已儲存過程後,將返回一個新的 JDBC TINYINT 值。方法 getByte 將把這個新值作為 Java byte 類型檢索。
CallableStatement cstmt = con.prepareCall("{call reviseTotal(?)}");
cstmt.setByte(1, 25);
cstmt.registerOutParameter(1, java.sql.Types.TINYINT);
cstmt.executeUpdate();
byte x = cstmt.getByte(1);
4、先檢索結果,再檢索 OUT 參數
由於某些 DBMS 的限制,為了實現最大的可移植性,建議先檢索由執行CallableStatement 對象所產生的結果,然後再用 CallableStatement.getXXX 方法來檢索 OUT 參數。如果 CallableStatement 對象返回多個 ResultSet 對象(通過調用 execute 方法),在檢索 OUT 參數前應先檢索所有的結果。這種情況下,為確保對所有的結果都進行了訪問,必須對 Statement 方法 getResultSet、getUpdateCount 和getMoreResults 進行調用,直到不再有結果為止。
檢索完所有的結果後,就可用 CallableStatement.getXXX 方法來檢索 OUT 參數中的值。
5、檢索作為OUT參數的NULL值
返回到 OUT 參數中的值可能會是JDBC NULL。當出現這種情形時,將對 JDBC NULL 值進行轉換以使 getXXX 方法所返回的值為 null、0 或 false,這取決於getXXX 方法類型。對於 ResultSet 對象,要知道0或false是否源於JDBCNULL的唯一方法,是用方法wasNull進行檢測。如果 getXXX 方法讀取的最後一個值是 JDBC NULL,則該方法返回 true,否則返回 flase。
⑼ ASP中的七大對象是什麼
Application對象
Application對象是個應用程序級的對象,用來在所有用戶間共享信息,並可以在Web應用程序運行期間持久地保持數據。
Application的屬性:
方法如下:
Application對象沒有內置的屬性,但是我們可以自行創建其屬性。
<% Application("屬性名")=值 %>
其實大部分Application變數都 存放在Contents集合中,當你創建一個新的Application變數時,其實就是在Contents集合中添加了一項。下面兩個腳本是等效的:
<% Application("greeting")="hello!" %> 或 <% Application.contents("greeting")="hello!"由於Application變數存在集合里,所以如果想要全部顯示,其方法我們已經多次使用,例如For Each循環。
<%
For Each item IN Application.Contents
Response.write("<br>"&item&Application.Contents(item))
next
%>
Application的方法:
Application的方法只有兩個方法:一個是Lock,另一個是Unlock。其中Lock方法用於保證同一時刻只能一個用戶對Application操作。Unlock則用於取消Lock方法的限制。如:
<%
Application.Lock
Application("visitor_num")=Application("visitor_num")+1
Application.Unlock
%>
Application的事件:
1、Application_OnStart()
當事件應用程序啟動時觸發。
2、Application_OnEnd()
此事件應用程序結束時觸發。
這兩個事件過程都是必須定義在Global.asp文件中,一般把連接數據的函數定義在這兩個事件,然後放在Global.asp中。例如:
Sub Application_OnStart
Application("tt18_ConnectionString") = "driver={SQL
Server};server=jeff;uid=sa;pwd=;database=test"
End Sub
一個數組能夠被定義成Application對象,不過這個數組只能作為一個對象保存,而不能用Application(0)取出其值。可以定義一個臨時數組實現這種功能。如:
<%
dim Array()
Array=Application("array")
for i = 0 to ubound(array)
Response.write Array(i)
next i
%>
同樣要修改這個Application對象也可以定義一個臨時數組,把Application對象賦給數組,然後修改這個數組的元素,最後把數組賦回Application對象。如:
<%
dim Array()
Array=Application("array")
Array(0)="jeff"
Array(1)="zhu"
Application.lock
Application("array")=Array
Application.unlock
%>
ObjectContext對象
該對象用於控制Active Server Pages的事務處理。事務處理由Microsoft Transaction Server (MTS)管理。
事件
ObjectContext.OnTransactionAbort
由放棄的事務處理事件激發,在腳本完成處理後發生。
ObjectContext.OnTransactionCommit
由成功的事務處理事件激發,在腳本完成處理後發生。
方法
ObjectContext.SetAbort
顯式的放棄一次事務處理。
ObjectContext.SetComplete
覆蓋前面任何調用ObjectContext.SetAbort方法的調用。
Request對象
Request對象用於接受所有從瀏覽器發往你的伺服器的請求內的所有信息。
集合
Request.ClientCertificate(key[SubField])
所有客戶證書的信息的集合。對於Key,該集合具有如下的關鍵字:
Subject
證書的主題。包含所有關於證書收據的信息。能和所有的子域後綴一起使用。
Issuer
證書的發行人。包含所有關於證書驗證的信息。除了CN外,能和所有的子域後綴一起使用。
VadidFrom
證書發行的日期。使用VBScript格式。
ValidUntil
該證書不在有效的時間。
SerialNumber
包含該證書的序列號。
Certificate
包含整個證書內容的二進制流,使用ASN.1格式。
對於SubField,Subject和Issuer關鍵字可以具有如下的子域後綴:(比如:SubjectOU或IssuerL)
C
起源國家。
O
公司或組織名稱。
OU
組織單元。
CN
用戶的常規名稱。
L
局部。
S
州(或省)。
T
個人或公司的標題。
GN
給定名稱。
I
初始。
當文件cervbs.inc(VBScript使用)或cerjavas.inc(Jscript使用)通過使用#INCLUDE導向包含在你的Active Server Page里時,下面兩個標志可以使用:
ceCertPresent
指明客戶證書是否存在,其值為TRUE或FALSE。
ceUnrecongnizedIssure
指明在該鏈表中的最後的證書的發行者是否未知,其值為TRUE或FALSE。
Request.Cookies(Cookie[(key).Attribute])
Cookie的集合。允許獲得瀏覽器的Cookie。Cookie指明返回那一個Cookie。Key用於從Cookie字典中返回具有某一關鍵字的Cookie值。對於Attribute,你能使用屬性HasKeys來確定某一Cookie是否具有子關鍵字。HasKeys的值為TRUE或FALSE。
Request.Form(Parameter)[(Index).Count]
填寫在HTML的表單中所有的數據的集合。Parameter是在HTML表單中某一元素的名稱。當某一參數具有不止一個值(比如,當在<SELECT>中使用MULTIPLE屬性時)時,使用Index。當某一參數具有多值時,Count指明多值個數。
Request.QueryString(Varible)[(Index).Count]
查詢字元串的所有值的集合。Varible是在查詢字元串某一變數的名稱。當某一變數具有多於一個值時,使用Index。當某一參數具有多值時,Count指明值的個數。
Request.ServerVaribles(Server Environment Variable)
環境變數的集合。允許讀取HTTP頭。你可以通過使用HTTP_前綴來讀取任何頭信息。比如,HTTP_USER_AGENT接受客戶代理HTTP頭(瀏覽器類型)。除此外,你可以使用下表所示的變數獲得任何環境信息。
ALL_HTTP
客戶端發送的所有HTTP標頭,他的結果都有前綴HTTP_。
ALL_RAW
客戶端發送的所有HTTP標頭,其結果和客戶端發送時一樣,沒有前綴HTTP_
APPL_MD_PATH
應用程序的元資料庫路徑。
APPL_PHYSICAL_PATH
與應用程序元資料庫路徑相應的物理路徑。
AUTH_PASSWORD
當使用基本驗證模式時,客戶在密碼對話框中輸入的密碼。
AUTH_TYPE
這是用戶訪問受保護的腳本時,伺服器用於檢驗用戶的驗證方法。
AUTH_USER
代驗證的用戶名。
CERT_COOKIE
唯一的客戶證書ID號。
CERT_FLAG
客戶證書標志,如有客戶端證書,則bit0為0。如果客戶端證書驗證無效,bit1被設置為1。
CERT_ISSUER
用戶證書中的發行者欄位。
CERT_KEYSIZE
安全套接字層連接關鍵字的位數,如128。
CERT_SECRETKEYSIZE
伺服器驗證私人關鍵字的位數。如1024。
CERT_SERIALNUMBER
客戶證書的序列號欄位。
CERT_SERVER_ISSUER
伺服器證書的發行者欄位
CERT_SERVER_SUBJECT
伺服器證書的主題欄位。
CERT_SUBJECT
客戶端證書的主題欄位。
CONTENT_LENGTH
客戶端發出內容的長度。
CONTENT_TYPE
客戶發送的form內容或HTTP PUT的數據類型。
GATEWAY_INTERFACE
伺服器使用的網關界面。
HTTPS
如果請求穿過安全通道(SSL),則返回ON。如果請求來自非安全通道,則返回OFF。
HTTPS_KEYSIZE
安全套接字層連接關鍵字的位數,如128。
HTTPS_SECRETKEYSIZE
伺服器驗證私人關鍵字的位數。如1024。
HTTPS_SERVER_ISSUER
伺服器證書的發行者欄位。
HTTPS_SERVER_SUBJECT
伺服器證書的主題欄位。
INSTANCE_ID
IIS實例的ID號。
INSTANCE_META_PATH
響應請求的IIS實例的元資料庫路徑。
LOCAL_ADDR
返回接受請求的伺服器地址。
LOGON_USER
用戶登錄Windows NT的帳號
PATH_INFO
客戶端提供的路徑信息。
PATH_TRANSLATED
通過由虛擬至物理的映射後得到的路徑。
QUERY_STRING
查詢字元串內容。
REMOTE_ADDR
發出請求的遠程主機的IP地址。
REMOTE_HOST
發出請求的遠程主機名稱。
REQUEST_METHOD
提出請求的方法。比如GET、HEAD、POST等等。
SCRIPT_NAME
執行腳本的名稱。
SERVER_NAME
伺服器的主機名、DNS地址或IP地址。
SERVER_PORT
接受請求的伺服器埠號。
SERVER_PORT_SECURE
如果接受請求的伺服器埠為安全埠時,則為1,否則為0。
SERVER_PROTOCOL
伺服器使用的協議的名稱和版本。
SERVER_SOFTWARE
應答請求並運行網關的伺服器軟體的名稱和版本。
URL
提供URL的基本部分。
方法
Request.BinaryRead(Count)
接收一個HTML表單的未經過處理的內容。當調用此方法時,Count指明要接收多少位元組。在調用此方法後,Count指明實際上接收到多少個位元組。
屬性
Request.TotalBytes
查詢體的長度,以位元組為單位
Response對象
Response對象用於向客戶端瀏覽器發送數據,用戶可以使用該對象將伺服器的數據以HTML的格式發送到用戶端的瀏覽器,它與Request組成了一對接收、發送數據的對象,這也是實現動態的基礎。下面介紹它常用的屬性和方法。
1、Buffer屬性
該屬性用於指定頁面輸出時是否要用到緩沖區,默認值為False。當它為True時,直到整個Active Server Page執行結束後才會將結果輸出到瀏覽器上。如:
<%Response.Buffer=True%>
<html>
<Head>
<title>Buffer示例</title>
</head>
<body>
<%
for i=1 to 500
response.write(i & "<br>")
next
%>
</body>
</html>
這頁執行時,整個主頁的所有內容會同時顯示在瀏覽器上,這個主頁會存在緩存區中直到腳本執行結束。
2、Expires屬性
該屬性用於設置瀏覽器緩存頁面的時間長度(單位為分),必須在伺服器端刷新。通過如下設置:
<%Response.Expires=0%>
通過在ASP文件中加入這一行代碼,要求每次請求是刷新頁面,因為Response一收到頁面就會過期。
3、Write方法
該方法把數據發送到客戶端瀏覽器,如:
<%Response.write "Hello,world!"%>
4、Redirect方法
該方法使瀏覽器可以重新定位到另一個URL上,這樣,當客戶發出Web請求時,客戶端的瀏覽器類型已經確定,客戶被重新定位到相應的頁面。如:
<html>
<head>
<title>Redirect示例</title>
</head>
<body>
<form aciton="formjump.asp" method="post">
<select name="wheretogo">
<option selected value="fun">Fun</option>
<option value="news">News</option>
<option value="sample">Sample</option>
</select>
<input type=submit name="jump" value="Jump">
</form>
</body>
</html>
以上是提交的表單,下面是處理表單的文件formjump.asp:
<%response.buff=true%>
<html>
<head>
<title>Redirect示例</title>
</head>
<body>
<%
thisurl="http://www.tinyu.com/";
where=Request.form("wheretogo")
Select Case where
case "fun"
response.redirect thisurl & "/fun/default.asp"
case "news"
response.redirect thisurl & "/news/default.asp"
case "sample"
response.redirect thisurl & "/sample/default.asp"
End Select
%>
</body>
<html>
這個例子當用戶選擇了以後,按"Jump"按鈕提交表單,伺服器接到申請後調用formjump.asp判斷後定位到相應的URL。不過這里有一點要注意,HTTP標題已經寫入到客戶瀏覽器,任何HTTP標題的修改必須在寫入頁內容之前,遇到這種問題時,可以如下做:
在文件的開始<@ Language=..>後寫:
Response.Buffer=True
在結尾定:
Response.Flush
這里Flush是Response的一個方法,它必須是Buffer屬性設置為True時才能使用,否則會產生一個運行模式錯誤。另外一個Clear方法也是用於清除被緩存的頁面,同樣要Buffer屬性設置為True時才能使用。
5、End方法
該方法用於告知Active Server當遇到該方法時停止處理ASP文件。如果Response對象的Buffer屬性設置為True,這時End方法即把緩存中的內容發送到客戶並清除沖區。所以要取消所有向客戶的輸出民,可以先清除緩沖區,然後利用End方法。如:
<%
Response.buffer=true
On error resume next
Err.clear
if Err.number<>0 then
Response.Clear
Response.End
end if
%>
Server 對象:
Server 對象提供對伺服器上的方法和屬性的訪問。其中大多數方法和屬性是作為實用程序的功能服務的。
語法
Server.property|method
屬性
ScriptTimeout:
ScriptTimeout 屬性指定腳本在結束前最大可運行多長時間。 當處理伺服器組件時,超時限制將不再生效。
語法 Server.ScriptTimeout = NumSeconds
參數 NumSeconds
指定腳本在被伺服器結束前最大可運行的秒數。默認值為 90 秒。
注釋
通過使用元資料庫中的AspScriptTimeout屬性可以為 Web 服務或 Web 伺服器設置預設的ScriptTimeout值。ScriptTimeout屬性不能設置為小於在元資料庫中指定的值。例如,如果NumSeconds設置為10,而元資料庫設置包含了默認值90秒,則腳本在90秒後超時。但如果NumSeconds設置為100,則腳本在100秒後超時。
關於使用元資料庫的詳細信息,參閱 關於元資料庫。
示例 以下示例中,如果伺服器處理腳本超過 100 秒,將使之超時。
<% Server.ScriptTimeout = 100 %>
以下示例獲取 ScriptTimeout 屬性當前值,並將其存儲在變數 TimeOut 中。
<% TimeOut = Server.ScriptTimeout %>
方法
CreateObject
CreateObject 方法創建伺服器組件的實例。如果該組件執行了 OnStartPage 和 OnEndPage 方法,則此時就會調用 OnStartPage 方法。有關伺服器組件的詳細信息,請參閱 可安裝的 ASP 組件 。
語法 Server.CreateObject( progID )
參數 progID 指定要創建的對象的類型。progID 的格式為 [Vendor.] component[.Version]。
注釋 默認情況下,由 Server.CreateObject 方法創建的對象具有頁作用域。這就是說,再當前 ASP 頁處理完成之後,伺服器將自動破壞這些對象。要創建有會話或應用程序作用域的對象,可以使用 <OBJECT> 標記並設置 SESSION 或 APPLICATION 的 SCOPE 屬性,也可以在對話及應用程序變數中存儲該對象。
例如,在如下所示的腳本中,當 Session 對象被破壞,即當對話超時時或 Abandon 方法被調用時,存儲在會話變數中的對象也將被破壞。
<% Set Session("ad") = Server.CreateObject("MSWC.AdRotator")%>
可以通過將變數設置為 Nothing 或新的值來破壞對象,如下所示。第一個例子釋放 ad 對象,第二個例子用字串代替 ad 。
<% Session ("ad") = Nothing %>
<% Session ("ad") = " Other Valum " %>
不能創建與內建對象同名的對象實例。 例如,下列腳本將返回錯誤。
<% Set Response = Server.CreateObject("Response") %>
示例 <% Set MyAd = Server.CreateObject("MSWC.AdRotator") %>
上面的例子創建一個名為 MyAd 的 MSWC.AdRotator 伺服器組件,MSWC.AdRotator 組件可用於在 Web 頁上的自動輪換廣告。
關於伺服器組件的詳細信息, 請參閱 Creating Components for ASP.
HTMLEncode HTMLEncode方法對指定的字元串應用 HTML 編碼。
語法 Server.HTMLEncode( string )
參數 string 指定要編碼的字元串。
示例腳本 <%= Server.HTMLEncode("The paragraph tag: <P>") %>
輸出 The paragraph tag: <P>
注意 以上輸出將被 Web 瀏覽器顯示為The paragraph tag: <P>如果查看一下源文件或以文本方式打開一個 Web 頁,您就可以看到已編碼的 HTML。
MapPath
MapPath 方法將指定的相對或虛擬路徑映射到伺服器上相應的物理目錄上。
語法
Server.MapPath( Path )
參數
Path
指定要映射物理目錄的相對或虛擬路徑。若 Path 以一個正斜杠 (/) 或反斜杠 (\) 開始,則 MapPath 方法返迴路徑時將 Path 視為完整的虛擬路徑。若 Path 不是以斜杠開始,則 MapPath 方法返回同 .asp 文件中已有的路徑相對的路徑。
注釋
MapPath 方法不支持相對路徑語法 (.) 或 (..)。例如,下列相對路徑 ../MyDir/MyFile.txt 返回一個錯誤。
MapPath 方法不檢查返回的路徑是否正確或在伺服器上是否存在。
因為 MapPath 方法只映射路徑而不管指定的目錄是否存在,所以,您可以先用 MapPath 方法映射物理目錄結構的路徑,然後將其傳遞給在伺服器上創建指定目錄或文件的組件。
示例
對於下列示例,文件data.txt和包含下列腳本的test.asp文件都位於目錄C:\Inetpub\Wwwroot\Script下。C:\Inetpub\Wwwroot目錄被設置為伺服器的宿主目錄。
下列示例使用伺服器變數 PATH_INFO 映射當前文件的物理路徑。腳本
<%= server.mappath(Request.ServerVariables("PATH_INFO"))%><BR>
輸出
c:\inetpub\wwwroot\script\test.asp<BR>
由於下列示例中的路徑參數不是以斜杠字元開始的,所以它們被相對映射到當前目錄,此處是 C:\Inetpub\Wwwroot\Script。腳本
<%= server.mappath("data.txt")%><BR>
<%= server.mappath("script/data.txt")%><BR>
輸出
c:\inetpub\wwwroot\script\data.txt<BR>
c:\inetpub\wwwroot\script\script\data.txt<BR>
接下來的兩個示例使用斜杠字元指定返回的路徑應被視為在伺服器的完整虛擬路徑。腳本
<%= server.mappath("/script/data.txt")%><BR>
<%= server.mappath("\script")%><BR>
輸出
c:\inetpub\script\data.txt<BR>
c:\inetpub\script<BR>
下列示例演示如何使用正斜杠 (/) 或反斜杠 (\) 返回宿主目錄的物理路徑。腳本
<%= server.mappath("/")%><BR>
<%= server.mappath("\")%><BR>
輸出
c:\inetpub\wwwroot<BR>
c:\inetpub\wwwroot<BR>
URLEncode
URLEncode 方法將 URL 編碼規則,包括轉義字元,應用到指定的字元串。
語法
Server.URLEncode( string )
參數
String 指定要編碼的字元串。
示例
腳本 <%Response.Write(Server.URLEncode("http://www.tinyu.com";)) %>
輸出 http%3A%2F%2Fwww%2Etinyu%2Ecom
Session對象
Session其實指的就是訪問者從到達某個特定主頁到離開為止的那段時間。每一訪問者都會單獨獲得一個Session。在Web應用程序中,當一個用戶訪問該應用時,Session類型的變數可以供這個用戶在該Web應用的所有頁面中共享數據;如果另一個用戶也同時訪問該Web應用,他也擁有自己的Session變數,但兩個用戶之間無法通過Session變數共享信息,而Application類型的變更則可以實現站點多個用戶之間在所有頁面中共享信息。
1、SessionID屬性
該屬性返回當前會話的唯一標志,為每一個Session分配不同的編號。
我曾在開發過程中就遇到對用戶的控制問題。它要實現的功能就是,針對某個網站的一個模塊,當一個會員登錄後正在看此模塊時,另一個人用同樣的會員名登錄,就不能瀏覽這個模塊。也就是說一個會員名同時只能一個人瀏覽此模塊。我通過用會員名(假設為UserID,唯一)和SessionID來實現了控制。當會員登錄時,給這個會員一個Session記錄登錄狀態如:Session("Status")="Logged",同時把這個會員的Session.SessionID寫入資料庫。當他要瀏覽此模塊時,先判斷其是否登錄,若已經登錄再判斷它的SessionID是否與資料庫記錄的相同,如果不同則不能訪問。這樣,當另一個用戶用相同的會員名登錄時,那麼資料庫中記錄的就是新的SessionID,前者訪問此模塊時就不能通過檢查。這就實現了一個會員名同時只能一個人瀏覽某個模塊。這個功能在一些收費網站有很有特別作用,它防止了一個會員名給多個人瀏覽的問題,為公司保障了利益。
2、TimeOut屬性
該屬性用來定義用戶Session對象的時限。如果用戶在規定的時間內沒有刷新網頁,則Session對象就會終止。一般默認為20分鍾。
3、Abandon方法
該方法是Session對象的唯一方法,可以清除Session對象,用來消除用戶的Session對象並釋放其所佔的資源。如: <% Session.Abandon %>
4、Session_OnStart和Session_OnEnd事件
和Application一樣,當對象的常式每一次啟動時觸發Session_OnStart事件,然後運行Session_Onstart事件的處理過程。也就是說,當伺服器接收到應用程序中的URL的HTTP請求時,觸發此事件,並建立一個Session對象。同理,這個事件也必須定在Global.asa文件中。
當調用Session.Abandon方法時或者在TimeOut的時間內沒有刷新,這會觸發Session_OnEnd事件,然後執行裡面的腳本。Session變數與特定的用戶相聯系,針對某一個用戶賦值的Session變數是和其他用戶的Session變數完全獨立的,不會存在相互影響。
Session應用一列:
與Application一樣,一個被定義為Session類型的數組只能將整個數組作為一個對象,用戶不能直接改變Session數組中某個元素的值。為了創建一個Session數組,需先定義一個普通的數組,並對它的每一個元素賦初值,最後把它定義為一個Session數組。如:
<%
dim array()
array=array("李","明","男")
Session("info")=array
Response.write Session("info")(0) &"-"
Response.write Session("info")(1) &"-"
Response.write Session("info")(2) &"<br>"
%>
<hr>
<%
array(0)="天"
array(1)="宇"
array(2)="男"
Session("info")=array
Response.write Session("info")(0) & "-"
Response.write Session("info")(1) & "-"
Response.write Session("info")(2) & "<br>"
%>