ASP 講義 6: ASP とデータベース (1)
著者:Eve Cole
更新時間:2009-05-30 19:55:05
これまでの講義で ASP の基本的な内容を学習しましたので、この知識を柔軟に活用して、ASP を使用して Web サイトを構築することができます。しかし、一般的に言えば、実際の完全な Web サイトをデータベースから分離することはできません。Web ページの訪問者数などの少量のデータはテキスト ファイルに保存できますが、実際のアプリケーションでは保存する必要があるデータは、保存されるデータはこれよりもはるかに多く、これらのデータは多くの場合関連しているため、データベースを使用してこれらのデータを簡単にクエリおよび更新できます。データベースには、Fox データベース (.dbf)、Access データベース (.mdb)、Informix、Oracle、SQL Server など、さまざまな種類があります。この講義では、例として Microsoft Access データベースと SQL Server 7.0 を使用します。 ASP のデータベースへのアクセス方法を示します。なぜASPを選ぶのか?統計によると、SQL Server 7.0 は現時点で最速かつ最もコスト効率の高いデータベースであり、www.8848.net、www.dell.com、www.hotbot.com などの大規模な Web サイトの多くは ASP テクノロジを使用して作成されているため、ASP は習得が比較的簡単で、非常に実用的なテクノロジーです。このテクノロジーに取り組み、理解し、自信と勇気を持って使用するように努めてください。
さらに研究を進める前にどのような準備をしておく必要がありますか?
1. データベースに触れたことがない場合は、まず Office に Microsoft Access をインストールし、データベースの基礎知識を学ぶことをお勧めします。
2. Microsoft SQL Server 7.0 をインストールすることをお勧めします。インストール後は、何も設定せずにすぐに使用できます。DeskTop バージョンは Windows 9.x にインストールする必要がありますが、7.0 より前のバージョンは NT Server にのみインストールできることに注意してください。
3. 次に説明するコンテンツには、MDAC (Microsoft Data Access Components) と呼ばれるコンポーネントが必要です。このコンポーネントは、関連するコンテンツの詳細を知りたい場合、または最新バージョンをダウンロードしたい場合は、http://www. Microsoft.com/data。
1. データベースとの接続を確立する 正式に開始する前に、ADO - ActiveX データ オブジェクトについて説明します。この概念を初めて使用する場合は、ADO を ASP とデータベースの間のブリッジとして考えるだけで済みます。
(1) Microsoft Accessデータベースに接続する方法1:例 wuf40.asp
<% @LANGUAGE = VBScript %>
<% ' wuf40.asp
明示的なオプション
ディムCnn、StrCnn
' 1 - 接続オブジェクトの作成
Set Cnn = Server.CreateObject("ADODB.Connection")
StrCnn = "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("asp") & "NorthWind.mdb;"
'2 - Connection オブジェクトの Open メソッドを使用してデータベースを開きます。
Cnn.Open StrCnn
Response.Write Server.MapPath("asp") & "NorthWind.mdb;" & "<br>"
Response.Write "データベース接続成功: " & Cnn.State & "<br>"
'3 - Connection オブジェクトの Close メソッドを使用して接続を閉じます。
Cnn.close
Response.Write "データベースは閉じられました: " & Cnn.State
'4 - メモリから接続オブジェクトを削除してリソースを解放します
Cnn = なしを設定します
%>
Northwind.mdb は、Microsoft Access97 に付属するサンプル データベースです。通常は、「Microsoft OfficeOfficeSamples」ディレクトリにあります。このファイルを Web サーバーの対応するディレクトリにコピーします。たとえば、C :InetPubhomeasp に配置します)。
ここで、Server オブジェクトの MapPath メソッドは、指定された仮想パスを実際のファイル パスに変換し、最終結果は C:InetPubhomeaspNorthwind.mdb のようになります。
方法 2: OLE DB を使用して Microsoft Access 接続を作成する 主要な部分を以下に示します。
Set Cnn = Server.CreateObject("ADODB.Connection")
StrCnn = "プロバイダー = Microsoft.Jet.OLEDB.4.0; データ ソース = C:InetpubhomeaspNorthwind.mdb"
Cnn.Open StrCnn
(2) SQL Server データベースとの接続を確立する方法 1: OLE DB を使用して SQL Server に接続します。詳細については、ルーチン wuf41.asp を参照してください。
Set Cnn = Server.CreateObject("ADODB.Connection")
StrCnn = "プロバイダー=sqloledb; ユーザー ID=sa; パスワード=; 初期カタログ=pubs; データ ソース=ICBCZJP"
Cnn.Open StrCnn
初期カタログの後にデータベース名を指定し、データ ソースの後にマシン名 (つまり、ネットワーク → プロパティ → ID のコンピューター名) または IP アドレス (DNS サービスがインストールされている必要があります) を指定します。
方法 2:
Set Cnn = Server.CreateObject("ADODB.Connection")
StrCnn = "ドライバー={SQL Server};サーバー=ICBCZJP;UID=sa;PWD=;データベース=pubs"
Cnn.Open StrCnn
もちろん、上記の 2 つの方法に加えて、多くの記事や資料で紹介されている最も古典的な方法である、ODBC を使用して接続を生成することもできます。つまり、まず Web サーバーのコントロール パネルの [ODBC データ ソース] で接続を確立し、次に ASP で「StrCnn ="DSN=ADOCnn; UID = sa;PWD=;Database=pubs"」のような接続文字列を使用します。 。第一に、これは最良の方法ではありません。第二に、他の資料でもこの方法が紹介されています。
さらに、興味がある場合は、ルーチン wuf42.asp をダウンロードして、Connection オブジェクトの ConnectionTimeout プロパティと ConnectionString プロパティの使用方法を確認できます。
2. データベースはここから始まります - データベースにすでに存在するデータの取得 ここでは、データベースの最も基本的な知識と、Microsoft Access を使用して Northwind.mdb の "Shipper" テーブルを開いて確認する方法をすでに知っていることを前提としています。テーブルに保存されているデータ。ここで、ASP を使用してこのデータをブラウザに表示する方法が 3 つあります。
特別な注意事項: データベースの基盤が弱い場合は、2 番目の方法のみを使用できれば十分です。あまり欲張りすぎないように注意してください。覚えて!
方法 1: Connection オブジェクトのみを使用します。例 wf43.asp
<% @LANGUAGE = VBScript %>
<% ' wuf43.asp
明示的なオプション
「この文は非常に重要です。これにより、表示されるデータがクライアントにキャッシュされたデータではないことが保証されます。」
'ただし最新のデータはサーバー側で随時更新されます
応答.期限切れ = 0
'パート 1: 接続の確立
ディムCnn、StrCnn
Set Cnn = Server.CreateObject("ADODB.Connection")
StrCnn = "プロバイダー = Microsoft.Jet.OLEDB.4.0; データ ソース = C:InetpubhomeaspNorthwind.mdb"
Cnn.Open StrCnn
'パート 2: Connection オブジェクトの Execute メソッドを使用してレコードセットを取得する
ディム StrSQL、rsTest
「以下は SQL 文 (構造化クエリ文) ですが、この講義では詳しく紹介しません。基本的な使い方は比較的簡単なので、一度覚えればすぐに理解できると思います。」
'この文はキャリアテーブルからすべてのデータを選択することを意味します
StrSQL = "配送業者から * を選択"
rsTest = Cnn.Execute(StrSQL) を設定します。
%>
<HTML>
<本体>
<% 'その3: 取得したレコードセットをブラウザ上に表示する
'レコードの最後までループします - 行ごと、レコードごとに表示します
rsTest.EOF を実行しないでください
'次の 2 行は同じ効果があります。つまり、rsTest("Shipper ID") は rsTest(0) と同等です。
Response.Write rsTest("配送業者ID") & " " & rsTest("会社名") & " " & rsTest("電話番号") & " " & "<BR>"
'Response.Write rsTest(0) & " " & rsTest(1) & " " & rsTest(2) & " " & "<BR>"
'次のレコードに移動します。この文は省略できません。省略しないと無限ループに陥ります。
rsTest.MoveNext
ループ
「その4:戦場の掃除」
Cnn.close
rsTest = なしを設定します。Cnn = なしを設定します。
%>
</BODY>
</HTML>
この例は非常に単純です。3 番目の部分では、以前に学習した知識を参照して、出力結果を美しくするためにテーブルと色を追加できます。
ジュニア以外のユーザーは、wuf44.asp を参照して、Execute メソッドの完全な使用方法を確認できます。
方法 2: Recordset オブジェクトを作成する - 初心者はこの方法を習得するだけでよいことに注意してください。
例: wuf45.asp、他の部分は wuf43.asp と同じです。キーはプログラムの 2 番目の部分にあります。
'パート 2: RecordSet オブジェクトを作成してレコードセットを取得する
ディム StrSQL、rsTest
' Recordset オブジェクトの作成
Set rsTest = Server.CreateObject("ADODB.Recordset")
StrSQL = "キャリア ID、電話番号、会社名を選択してください。キャリアから、電話番号 = '(503) 555-9931'"
' Recordset オブジェクトを接続 Cnn にアタッチします
rsTest.ActiveConnection = Cnn を設定します。
' Recordset オブジェクトの Open メソッドを使用してレコードセットを開きます
rsTest.Open StrSQL
次に、Recordset オブジェクト (wuf48.asp など) の Open メソッドの完全な使用法を見てみましょう。
<% @LANGUAGE = VBScript %>
<% ' wuf48.asp
明示的なオプション
応答.期限切れ = 0
%>
<!--#include file="adovbs.inc"-->
<%
'パート 1: 接続の確立
ディムCnn、StrCnn
Set Cnn = Server.CreateObject("ADODB.Connection")
StrCnn = "プロバイダー = Microsoft.Jet.OLEDB.4.0; データ ソース = C:InetpubhomeaspNorthwind.mdb"
Cnn.Open StrCnn
'パート 2: RecordSet オブジェクトを作成してレコードセットを取得する
ディム rsテスト
Set rsTest = Server.CreateObject("ADODB.Recordset")
rsTest.Open "Shipper"、Cnn、adOpenForwardOnly、adLockReadOnly、adCmdTable
%>
<HTML>
<本体>
<% 'その3: 取得したレコードセットをブラウザ上に表示する
rsTest.EOF を実行しないでください
Response.Write rsTest(0) & " " & rsTest(1) & " " & rsTest(2) & " " & "<BR>"
rsTest.MoveNext
ループ
「その4:戦場の掃除」
rsTest.Close: Cnn.Close
rsTest = なしを設定します。Cnn = なしを設定します。
%>
</BODY>
</HTML>
分析します:
1.まず重要な文を見てください。
rsTest.Open "Shipper"、Cnn、adOpenForwardOnly、adLockReadOnly、adCmdTable
最初のパラメータには、テーブル名 (貨物輸送業者など) または SQL ステートメント (wuf45.asp など) を指定できます。
2 番目のパラメータは現在の接続を指定します。
3 番目のパラメーターは CursorType を示し、プロバイダーが Recordset を開くときに使用するカーソルの種類を決定します。これは前方にのみ移動するカーソルを使用します。
4 番目のパラメーターは LockType を示し、プロバイダーが Recordset を開くときに使用するロック (同時実行) の種類を決定します。ここでは読み取り専用を指定します。
この例の最初のパラメータがテーブル名である場合、5 番目のパラメータは adCmdTable を使用します。最初のパラメータは次のように adCmdText です。
rsTest.Open "選択 * キャリアから",Cnn,adOpenForwardOnly,adLockReadOnly,adCmdText
ほとんどの人はこれら 5 つのパラメータの意味を理解していないと思いますが、最初は問題なく、これらをコピーして使用するだけで、今後も連絡を取り合うようになります。慣れれば完璧です。
CursorType と LockType の 2 つのパラメータについては、以下で詳しく説明します。データを取得するには、この例に従って設定するだけです。
2.これら 5 つのパラメーターは、wuf46.asp などの Recordset オブジェクトのプロパティを使用して設定することもできます。
'パート 2: RecordSet オブジェクトを作成してレコードセットを取得する
ディム rsテスト
Set rsTest = Server.CreateObject("ADODB.Recordset")
rsTest.ActiveConnection = Cnn
rsTest.CursorType = adOpenForwardOnly
rsTest.LockType = adLockReadOnly
rsTest.Open "Shipper"、、、、、adCmdTable
3. この文をもう一度見てください: <!--#include file="adovbs.inc"-->。
(1) adOpenForwardOnly、adLockReadOnly、adCmdTextなどの定数を使用するため、adovbs.incファイルをインクルードする必要があります。
(2) adovbs.inc ファイルは通常、ディレクトリ Program FilesCommon FilesSYSTEMADO にあります。これを Web サーバーの現在のディレクトリにコピーできます (このファイルは、この講義のダウンロード パッケージにも含まれています)。 。
(3) このファイルをメモ帳で開いて見てみると、なぜこのファイルが必要なのかがわかります。
方法 3: Command オブジェクトを導入する - これは、能力があるという前提で検討する必要があります。
<% @LANGUAGE = VBScript %>
<% ' wuf47.asp
明示的なオプション
応答.期限切れ = 0
%>
<!--#include file="adovbs.inc"-->
<%
'パート 1: 接続の確立
ディムCnn、StrCnn
Set Cnn = Server.CreateObject("ADODB.Connection")
StrCnn = "プロバイダー = Microsoft.Jet.OLEDB.4.0; データ ソース = C:InetpubhomeaspNorthwind.mdb"
Cnn.Open StrCnn
'パート 2: Command オブジェクトを作成してレコードセットを取得する
Dim StrSQL、rsTest、cmdTest
'コマンドオブジェクトの作成
Set cmdTest = Server.CreateObject("ADODB.Command")
StrSQL = "注文詳細から最大(数量)を選択"
cmdTest.CommandText = StrSQL
cmdTest.CommandType = adCmdText 'コマンド タイプが SQL ステートメントであることを示します
cmdTest.ActiveConnection = Cnn を設定します
' Command オブジェクトの Execute メソッドを使用してレコードセットを取得します。
rsTest = cmdTest.Execute を設定します。
%>
<HTML>
<本体>
<% 'その3: 取得したレコードセットをブラウザ上に表示する
rsTest.EOF を実行しないでください
Response.Write rsTest(0) & "<BR>"
rsTest.MoveNext
ループ
「その4:戦場の掃除」
rsTest.Close: Cnn.Close
rsTest = なしを設定します。 cmdTest = なしを設定します。 Cnn = なしを設定します。
%>
</BODY>
</HTML>
Command オブジェクトの使用法については、今後のデータベースの詳細なプログラミングで説明します。
この講義では主に、データベースに接続してデータベース データを取得する方法を紹介します。初心者は、次の知識点だけを学ぶ必要があることに注意してください。
1. OLE DB を使用して Microsoft Access データベースとの接続を確立する方法。
2. OLE DB を使用して Microsoft SQL Server データベースとの接続を確立する方法。
3. Recordset オブジェクトを作成してデータベースからデータを取得する方法。