ASPは、動的なインタラクティブなWebページを生成するための強力なツールです。以下は、編集者があなたと共有したASPストレージの使用に関するチュートリアルです。興味のある友達、編集者と一緒にそれについて学びましょう!
1.コマンドオブジェクトとパラメーターオブジェクトを使用してパラメーターを渡します。この講義では、主にMicrosoft SQL Server 7.0データベースを使用します。まず、バックアップ用の接続ファイルadosql7.aspを作成します。後で使用したときに指定しません。
% '' adosql7.asp
optionexplicit
Response.Expires = 0
''パート1:接続の確立
dimcnn、strcnn
setcnn = server.createObject( "adodb.Connection")
strcnn = "provider = sqloledb; userid = sa; password =; initialCatalog = pubs; dataSource = icbczjp"
cnn.openstrcnn
%>
注:自分で使用する場合は、DataSourceをデータベースサーバーのマシン名に設定します。
さらに、過去にアクセスデータベースを使用する場合、Microsoft Access97はフィールドとデータを簡単に表示できます。 SQLServerデータベースを使用する場合、特に別のマシンでASPスクリプトをデバッグするときは、フィールドとデータを表示するために追加のツールをインストールする必要があります。ここでは、ツールを提供します:msqry32.exe(microsoftquery)。このファイルはOffice97でインストールされており、通常はディレクトリ「Microsoft Office/Office」にあります。
例wuf70.asp:
%@言語= "vbscript"%>
! - #includefile = "adosql7.asp" - >
! - #includefile = "adovbs.inc" - >
% '' wuf70.asp
dimcmdtest、prmtest、rstest
''コマンドオブジェクトを作成します
setcmdtest = server.createObject( "adodb.command")
'RecordSetおよびコマンドオブジェクトは、ActiveConnectionプロパティを介して接続オブジェクトに接続できます。
cmdtest.activeconnection = cnn
'' SQLコマンド - 2つのパラメーターが含まれています。
cmdtest.commandtext = "updatejobssetjob_desc =?wherejob_id =?"
''コマンドタイプがSQLステートメントであるとします
cmdtest.commandtype = adcmdtext
''準備プロパティは、最初にSQLコマンドをコンパイルするかどうかを決定し、実行をスピードアップするためにTrueに設定します
cmdtest.prepared = true
''パラメーターオブジェクトを作成します
setprmtest = cmdtest.createparameter( "job_desc"、advarchar、adparaminput、50、 "network")
''パラメータデータ収集にデータを追加します
cmdtest.parameters.appendprmtest
setprmtest = cmdtest.createparameter( "job_id"、adsmallint、adparaminput、 "12")
cmdtest.parameters.appendprmtest
''変更を実行します - 結果を返す必要はありません、cmdtest.executeを使用するだけです
cmdtest.execute
''実行するパラメーターのリセット - 別のデータを変更できます
cmdtest.parameters( "job_id")= "1"
cmdtest.parameters( "job_desc")= "test"
cmdtest.execute
''実行するパラメーターをリセットします
cmdtest( "job_id")= "14"
cmdtest( "job_desc")= "Financial"
cmdtest.execute
setrstest = cnn.execute( "selectjob_id、job_descfromjobs")
wherenotrstest.eof
Response.WriterStest(0)&rstest(1)& ""
rstest.movenext
ウェンド
cnn.close:setprmtest = Nothing
setcmdtest = nothing:setcnn = nothing
%>
分析:
1.コマンドオブジェクトのcreateparameterメソッドは、SQLコマンドまたはストアドプロシージャのパラメーターオブジェクトを作成するために使用されます。合計には5つのパラメーターがあります(5つのパラメーターはオプションです):
最初のパラメーター:パラメーターオブジェクトの名前。
2番目のパラメーター:パラメーターオブジェクトにはデータ型の種類が多すぎます。 ADOヘルプを参照してください。ここではAdvarchar(String値)、Adsmallint(2バイト署名整数)を参照してください。
3番目のパラメーター:パラメータータイプ。 AdParaminput(入力パラメーターを示します)、AdParamoutput(出力パラメーターとして示す)、AdParamreturnValue(返品値として示す)、AdParamunKnown(パラメータータイプを決定できないことを示します)、AdParaminputOutput(入力/出力パラメータとして示す);
4番目のパラメーター:パラメーターのデータ長さは、使用中のエラーを回避するために、データベースの対応するフィールド長に等しくなることが望ましい。特に、データ型がvarcharの場合、整数または日付型の場合、値は必要ありません。
5番目のパラメーター:パラメーター設定の初期値。
2.cmdtest.parameters.appendメソッドパラメーターデータ収集にパラメーターオブジェクトを追加します。この例から、複数のパラメーターを使用する方法も確認できます。
3。この例から、他のデータの変更を実行するために入力パラメーターをリセットするだけであることがわかりますが、これは非常に便利です。このアイデアは、プログラミング時に最も一般的に使用される方法の1つでもあります。
4.パラメーターをリセットすると、cmdtest.parametersを使用するか、cmdtest( "job_id")に省略できます。
2。ASPでストアドプロシージャを使用します
ストアドプロシージャとは何か(ストアドプロシージャはデータベースサーバーにあり、1つ以上のSQLステートメントを含むSQLステートメントのコレクションです)。この講義は、主にASPのストアドプロシージャを呼び出す方法を示しています。
ストアドプロシージャを使用することの利点は大きく、ASPスクリプトでSQLコマンドを実行するよりも効率的です。全体的なパフォーマンスを改善し、ネットワークの負荷を削減できます(ネットワークサーバーとデータサーバー間の相互作用を削減します)。 ASPコードを最適化し、コードの柔軟性を高めることができます。
(i)ストアドプロシージャで入力パラメーターを使用します
この例で使用されるストアドプロシージャは、SQLServer 7.0に付属する「byroyalty」です。内部のSQLステートメントは非常に簡単です。それは追加のcreateprocedureByRoyaltyにすぎず、入力パラメーターは@percentageです。
CreateProcedureByRoyalty@percertageint
として
selectau_idfromtitleauthor
wheretitleauthor.royaltypeper=@percentage
servbywww.cidu.net
例wuf71.asp
%@言語= vbscript%>
! - #includefile = "adosql7.asp" - >
! - #includefile = "adovbs.inc" - >
% '' wuf71.asp
dimcmdtest、prmtest、rstest
setcmdtest = server.createObject( "adodb.command")
cmdtest.commandtext = "byroyalty" ''ストアドプロシージャ名
''コマンドタイプがストアドプロシージャであるとします
cmdtest.commandtype = adcmdstoredproc
''パラメーターオブジェクトを作成します
setprmtest = server.createObject( "adodb.parameter")
'型属性は、wuf70.aspの2番目のパラメーターに対応します
prmtest.type = adinteger'4-byte Signed Integer
'方向プロパティは、wuf70.aspの3番目のパラメーターに対応しています
prmtest.direction = adparaminput
'値属性は、wuf70.aspの5番目のパラメーターに対応しています
prmtest.value = 30
cmdtest.parameters.appendprmtest
setcmdtest.activeconnection = cnn
'レコードセットを返す必要があるので、setrstest = cmdtest.executeを使用してください
setrstest = cmdtest.execute
wherenotrstest.eof
respons.writerStest(0)& ""
rstest.movenext
ウェンド
cnn.close
setrstest = nothing:setprmtest = nothing
setcmdtest = nothing:setcnn = nothing
%>
CommandTextプロパティは、SQLコマンドを指定するか、ストアドプロシージャまたはテーブル名として指定できます。
この例では、パラメーターオブジェクトの作成はwuf70.aspとはわずかに異なります。実際、よく見ると、意味は似ています。この例には、wuf70.aspの5つのパラメーターに対応するprmtest.name、prmtest.size、およびタイプ、方向、および値の2つのプロパティが使用されていません。
(ii)出力パラメーターを使用します
データベーステーブルからレコードを取得したり、値を計算する場合、出力パラメーターを返すストアドプロシージャを使用する必要があります。例を挙げると、まずSQLServer Pubs Libraryで新しいストアドプロシージャの外交を作成します。ストアドプロシージャは2つの日付を入力してから、最大値を出力する必要があります。
createprocedureoutemploy
(
@job_lvltinyintoutput、
@hire_date1datetime、
@hire_date2dateTime
))
として
@job_lvl = max(job_lvl)fromimployeeを選択します
WHEREHIRE_DATE> =@Hire_Date1andhire_date =@Hire_Date2
ストアドプロシージャを作成する方法はいくつかあります。
1。MicrosoftSQLServerのEnterpriseManagerを使用し、左側のツリーディレクトリで開き、順番に開きます。ストアドプロシージャを入力した後、構文的に検出することもできます。
2. Microsoft SQLServerのQueryAnalyzerを使用して、最初にデータベースサーバーに接続し、PUBSデータベースを選択します。上記のストアドプロシージャを入力し、[executeQuery(またはF5を押します)をクリックします。
3. VB6.0を使用して、メニュー「表示」/「データビューウィンドウ」を開いた後、「データリンク」/「新しいデータリンク」を右クリックします。
4. ASPスクリプトを使用して、wuf75.aspなどのストアドプロシージャを作成します。
%@言語= vbscript%>
! - #includefile = "adosql7.asp" - >
! - #includefile = "adovbs.inc" - >
% '' wuf75.asp
dimstrsql
''注:&chr(10)&chr(13)は、主に美貌のために無視できます
strsql = "createprocedureoutemploy(@job_lvltinyintoutput、"&chr(10)&ch(13)&_
"@hire_date1datetime、@hire_date2datetime)as"&chr(10)&ch(13)&_
「@job_lvl = max(job_lvl)fromimployee」&_
"WhereHire_Date> =@hire_date1andhire_date =@hire_date2"
cnn.executestrsql
response.write「ストアドプロシージャを正常に作成する」
cnn.close:setcnn = Nothing
%>
メニューを使用することに加えて、ストアドプロシージャが作成された後、SQLステートメント「DropproceDureoutEmploy」を使用して削除することもできます。
例wuf72.asp - 必要な入力パラメーターをストアドプロシージャに送信し、出力結果を取得します。
%@言語= vbscript%>
! - #includefile = "adosql7.asp" - >
! - #includefile = "adovbs.inc" - >
% '' wuf72.asp
dimcmdtest、prmtest
setcmdtest = server.createObject( "adodb.command")
cmdtest.activeconnection = cnn
cmdtest.commandtext = "Outemploy" ''ストアドプロシージャ名
cmdtest.commandtype = adcmdstoredproc
''パラメーターオブジェクトを作成します
setprmtest = cmdtest.createparameter( "job_lvl"、adtinyint、adparamoutput)
cmdtest.parameters.appendprmtest
'' adtinyint-1バイト署名整数
'' addbdate-date値(yyyymmdd)
setprmtest = cmdtest.createparameter( "hiredate1"、addbdate、adparaminput、 "1993-05-09")
cmdtest.parameters.appendprmtest
setprmtest = cmdtest.createparameter( "hiredate2"、addbdate、adparaminput、 "1994-02-01"))
cmdtest.parameters.appendprmtest
cmdtest.execute
「次の3つの式は同じことを意味します
Response.writecmdtest( "job_lvl")& ""
Response.writecmdtest.parameters( "job_lvl")& ""
respons.writecmdtest.parameters( "job_lvl")。値
cnn.close
setPrmTest = Nothing
setcmdtest = nothing:setcnn = nothing
%>
(iii)返品コードパラメーターを使用します
Return Statementを使用して、ストアドプロシージャから異なる返品コードを返します。たとえば、ストアドプロシージャは最初にレコードセットを取得し、次にマーガレットという名前の従業員がいる場合、1を返し、それ以外の場合は0を返します。
CreateProcedurerEturnemploy
として
selectemp_id、fnamefrommployee
ifexists(selectfnamefromployeeewherefname = ''マーガレット '')
返品(1)
それ以外
return(0)
例wuf73.asp
%@言語= vbscript%>
! - #includefile = "adosql7.asp" - >
! - #includefile = "adovbs.inc" - >
% '' wuf73.asp
dimcmdtest、prmtest、rstest
setcmdtest = server.createObject( "adodb.command")
cmdtest.activeconnection = cnn
cmdtest.commandText = "RETURENEMPLOY" ''ストアドプロシージャ名
cmdtest.commandtype = adcmdstoredproc
setprmtest = cmdtest.createparameter( "returnvalue"、adinteger、adparamreturnvalue)
cmdtest.parameters.appendprmtest
setrstest = cmdtest.execute()
wherenotrstest.eof
Response.WriterStest(0)& "] ["&rstest(1)& ""
rstest.movenext
ウェンド
rstest.close:setrstest = Nothing
'' cmdtest( "returnValue")を返す前に、rstestを最初に閉じる必要があります。
ifcmdtest( "returnValue")= 1then
Response.write「この従業員がいる」
それ以外
Response.Write「従業員なし」
endif
cnn.close
setPrmTest = Nothing
setcmdtest = nothing:setcnn = nothing
%>
3.ビッグデータを処理する方法
ここでの「ビッグデータ」は、主にテキスト(大きなテキスト)と画像(画像)フィールドを指します。上記の方法を使用して、データを正しく取得することはできません。最初にsize = rstest(0)を使用して、フィールド値の実際の長さを取得し、次にrstest(0).getchunk(size)を使用してデータを取得する必要があります。実際の使用では、これらのフィールドは比較的大きいため、サーバーリソースを合理的に保存および使用するために、セグメント化された読み取り値が一般的に採用されています。例wuf74.asp:
%@言語= vbscript%>
! - #includefile = "adosql7.asp" - >
! - #includefile = "adovbs.inc" - >
% '' wuf74.asp
dimstrsql、rstest
'PR_INFOはテキストフィールドです
strsql = "selectpr_info、pub_idfrompub_info"
setrstest = cnn.execute(strsql)
dimbasicsize、beginsize、ltext
dowhileenotrstest.eof
Response.WriterStest(1)& ""
'読み取りあたり1024バイト
Basicsize = 1024
beginsize = 0
whilebignsizerstest(0).actualsize
ltext = rstest(0).getchunk(basicsize)
beginsize = beginsize+basicsize
'セグメントごとの出力セグメントからクライアントへ
Response.WriteLText
ウェンド
Response.Write ""
rstest.movenext
ループ
cnn.close
setrstest = nothing:setcnn = nothing
%>
この例では、毎回最大1024バイトが読み取られ、複数回読み取られます。それどころか、データベースにビッグデータを記述する場合、メソッドは上記に似ていますが、GetChunkメソッドを使用する代わりに、AppendChunkメソッドを使用します。
rstest(0).appendchunkltext
注:最後に、SQLServerデータベースに関する少しのヒントを紹介します。この状況に遭遇した場合:データベース内の中国のデータがGarled Codeに表示されている場合は、パニックに陥らないでください。 sqlsrv32.dllをダウンロードするには、「C:/Windows/System」の下に同じ名前でファイルを上書きするだけです。問題の原因は、通常Windows 98バージョン2(SQLServerドライバーのバージョン番号は3.70.06.23)またはWindows 2000またはMDAC2.5で発生しているSQLServerドライバーです。
上記は、ASPストレージの使用に関するチュートリアルです。あなたはそれをすべて学んだと思います。関連するコンテンツについては、引き続きWonew Technologyチャネルに従ってください。