ストアド プロシージャを使用して ASP データベース アクセスを実装する
著者:Eve Cole
更新時間:2009-06-24 17:21:43
1. ADOの概要
ActiveX データ オブジェクト (ADO) は、Web ページにデータベース アクセスを追加するための使いやすくスケーラブルなテクノロジです。ADO を使用して、データベースやスプレッドシートなどの OLE DB 互換のデータ ソースに接続するための簡潔でスケーラブルなスクリプトを作成できます。 、順次データ ファイル、または電子メール ディレクトリ。 OLE DB は、データベース管理システムの機能を表示するための標準 COM インターフェイスのセットを提供するシステム レベルのプログラミング インターフェイスです。 ADO のオブジェクト モデルを使用すると、(VBScript や JScript などのスクリプト言語を使用して) これらのインターフェイスに簡単にアクセスし、Web アプリケーションにデータベース機能を追加できます。さらに、ADO を使用して、Open Database Connectivity (ODBC) 準拠のデータベースにアクセスできます。
データベースの相互接続についてある程度の知識があるスクリプト作成者であれば、ADO のコマンド構文がシンプルで使いやすいことがわかるでしょう。経験豊富な開発者であれば、ADO がさまざまなデータ ソースに提供するスケーラブルで高性能なアクセスを高く評価するでしょう。
2. データベースにアクセスする一般的な方法。一般的な Web ページ アクセスでのデータベースへのアクセスは、次の手順に従って実行されます。まず、ADODB.Connection インターフェイスのオブジェクトを作成し、このオブジェクトに対応するデータ ソースをバインドします。名前付きデータ ソースと名前なしデータ ソースを使用できます)、必要に応じてレコード セットを作成するか作成しません。その後、データ ソースにリンクし、execute メソッドまたは open メソッドを使用して対応するテーブルを操作します。
ASP がデータベースにアクセスする一般的な方法は次のとおりです。
<
oConn=Server.CreateObject("ADODB.Connection") を設定します
Set oRS=Server.CreateObject("ADODB.RecordSet")
set strConn="プロバイダ=SQLOLEDB;ユーザー ID=sa; 初期カタログ=Pubs;データ ソース=" &request.ServerVariables("SERVER_NAME")
oConn.open strConn
set ORS=oConn.execute("テストから * を選択")
>
上記では、名前付きリンクに OLEDB を使用する方法を紹介しています。名前付きリンクの場合は、それをデータ ソース テストとして設定し、ユーザー名とパスワードの両方を空にします。上記のステートメント oConn.open "test" を書き換えるだけです。 、「」、「」
上記では、Web ページでのデータベース アクセスの一般的な方法を簡単に紹介しました。これらはすでに非常に成熟しており、実際に特定のデータへのアクセスが複雑すぎる場合は、この方法を使用してください。さらに、異なる Web ページで同じ処理プロセスを使用する必要がある場合、これがストアド プロシージャを使用する最も有利な点です。もう 1 つの最大の特徴は、ストアド プロシージャの機密性が比較的高いことです。そしてそれはリモートサーバーのデータベースに保存されます。
3. ASP ADO でストアド プロシージャを使用すると、コマンド オブジェクトを使用する必要があるストアド プロシージャにアクセスできるようになり、ユーザーは SQL サーバーのストアド プロシージャを直接実行でき、コマンドに必要なパラメータを使用できます。これは、Pamaters のプロパティを使用して処理されます。
Command オブジェクトを有効にするには、Command オブジェクトの ActiveConnection プロパティを Connection オブジェクトに設定して、Command オブジェクトを Connection オブジェクトに関連付ける必要があることに注意してください。 Connection オブジェクトを識別できない場合、Command オブジェクトは接続に関連付けるまで無効になります。
< ディム・オコン
ディムストラコン
ディム・オコマンド
ディム ors、ors1
薄暗いああ
ディムSQL
oConn = Server.CreateObject("ADODB.Connection") を設定します
set oCmd = Server.CreateObject("ADODB.Command")
set ors1=Server.CreateObject("ADODB.RecordSet")
'リンクを開き、ユーザー ID SA を使用し、パスワードは空で、ローカル サーバー上のデータベースに接続します
strConn="プロバイダ=SQLOLEDB;ユーザー ID=sa;初期カタログ=pubs;データ ソース="& 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
'確立されたリンクをコマンドのアクティブリンク属性に追加します
oCmd.ActiveConnection = oConn を設定します
'呼び出し元のストアド プロシージャをロイヤルティとパラメータで設定します。パラメータは?導入
oCmd.CommandText = "{ロイヤルティによる呼び出し(?)}"
oCmd.Parameters.Append oCmd.CreateParameter("@Percentage", adInteger, adParamInput)
' 入力パラメータを指定します
oCmd("@パーセント") = 75
「ASP での上記の入力パラメータの使用は、パラメータ属性なしでも実現できます。VB で & を使用して、コマンド テキスト内の対応するデータを形成するだけです。」 パラメータの使用は、出力時に特に便利です
oRs = oCmd.Execute を設定します
ors1.activeconnection=oconn
一般的な SQL ステートメントは、Source 属性と open 属性を使用してこのコマンド オブジェクトでも使用できます。source はデータ ソースを指します。
ors1.source ="select * from [tmptable] where year=2000 and month=1"
ors1.cursorttype=adopenstatic
ors1.open
>
4. SQL のストアド プロシージャの概要 SQL 言語を使用して、データベース アクセス用のストアド プロシージャを作成できます。構文は次のとおりです。
CREATE PROC[EDURE] プロシージャ名 [;番号]
[
{@parameter data_type} [可変] [= デフォルト] [出力]
】
[,...n]
[と
{
再コンパイル
| 暗号化
| 再コンパイル、暗号化
}
】
【複製用】
として
sql_statement [...n]
[ ] 内の内容はオプションですが、() 内の内容は必須です。
例: ユーザーがストアド プロシージャ Select_delete を作成してテーブル tmp 内のレコードを削除したい場合は、次のように記述できます。
プロシージャ select_del を作成
一時ファイルの削除
例: ユーザーは、tmp テーブル内の特定の年のデータをストアド プロシージャにクエリしたいと考えています。
proc select_query @year int を作成します
select * from tmp where year=@year
ここで @year はストアド プロシージャのパラメータの例です。このストアド プロシージャは特定のノード n から開始して最上位の親ノードを見つけます。この頻繁に使用されるプロセスはストアド プロシージャによって実行でき、Web ページで再利用して実現できます。共有します。
空: ノードが最上位ノードであることを示します
fjdid (親ノード番号)
ノード n が空ではありません: ノードの親ノード番号を示します
dwmc(ユニット名)
CREATE proc search_dwmc @dwidold int,@dwmcresult varchar(100) 出力
として
@stop int を宣言する
@result varchar(80) を宣言します
@dwmc varchar(80) を宣言します
@dwid int を宣言する
ノーカウントをオンに設定する
@stop=1 を設定します
@dwmc="" を設定します
select @dwmc=dwmc,@dwid=convert(int,fjdid) from jtdw where id=@dwidold
@result=rtrim(@dwmc) を設定します
@dwid=0の場合
@stop=0 を設定します
while (@stop=1) および (@dwid<>0)
始める
@dwidold=@dwid を設定します
select @dwmc=dwmc,@dwid=convert(int,fjdid) from jtdw where id=@dwidold
@@行数=0の場合
@dwmc="" を設定します
それ以外
set @result=@dwmc+@result
if (@dwid=0) または (@@rowcount=0)
@stop=0 を設定します
それ以外
続く
終わり
set @dwmcresult=rtrim(@result)
ストアド プロシージャを適切に完全に使用すると、サーバーのスループットが向上します。作成者はストアド プロシージャを使用して、約 20 のテーブルからデータを取得し、それらを 1 つの一般的なテーブルに結合して、約 20,000 のレコードを生成しました。この種の場合、所要時間は約 7 秒です。ストアド プロシージャを最大限に活用し、より合理的な動的な Web ページを利用してサーバー開発をより高いレベルに向上させることができます。これにより、Web デザインによる負荷の高い処理が軽減され、記述されたコードを共有して合理的に利用できます。コードはサーバーのデータベース内に隠すことができ、一部のテクノロジは機密に保たれます。これはストアド プロシージャの主要な機能でもあるため、読者がその恩恵を受けることを願っています。