<asp:アクセスデータソース> ID="MySourcName" Runat="サーバー" DataFile="MyMDBName.mdb" SelectCommand="MyTable から MyField1、MyField2 を選択"> </asp:アクセスデータソース> |
<html> <頭> <title>TIO ch02-1 MDBデータ表示</title> <頭> <本文> <h3>ch02 TIO 2 MDBソースへの接続デモ </h3> <本文> </html> |
<%@ ページ言語="VB" %> <html> <head><title>ch02 TIO 2 MDBデータ表示</title></head> <本文> <h3>ch02 TIO 2 MDBソースへの接続デモ </h3> <フォーム runat="サーバー"> <asp:accessdatasource id="NorthwindProductsAccDataSource" runat="サーバー" selectcommand="製品から*を選択" データファイル="~/App_Data/Northwind.mdb"> </asp:アクセスデータソース> <asp:gridview id="NorthwindProductsGridView" runat="サーバー" datasourceid="NorthwindProductsAccDataSource"> </asp:gridview> </form></body></html> |
<asp:accessdatasource id="NorthwindProductsAccDataSource" runat="サーバー" selectcommand="[カテゴリ別売上]から * を選択 " データファイル="~/App_Data/Northwind.mdb"> </asp:アクセスデータソース> |
(14) ブラウザを開いてページを表示します。
例メモ #2 - MDB に接続し、GridView でデータを表示する
ページには 2 つのコントロールがあります。 1 つ目の AccessDataSource は、MDB ファイルと対話する JET エンジンに接続する ADO.NET オブジェクトに接続するすべての作業を実行します。 2 つ目は GridView で、データを取得し、その形式をページ上に表示できる HTML 形式に変換するために使用されます。各コントロールに意味のある名前 (ID) を付けることが非常に重要であることに注意してください。次に、AccessDataSource をデータ ソースとして使用するために、データ バインド コントロール (GridView) がその DataSourceID プロパティを使用して AccessDataSource の ID を参照していることを確認する必要があります。
クエリからのデータを表示することはそれほど難しくありません。Access では、テーブル名の代わりにクエリ名を使用できます。ここには 2 つの指示があります。まず、テーブルまたはクエリの名前にスペースが含まれている場合は、名前全体を角括弧で囲む必要があります。 2 番目に、ユーザー入力を必要とするクエリ (たとえば、「特定の年の売上」では、その年を知る必要がある) には、本書の範囲を超えるテクニックが含まれます。
前の手順を完了すると、AccessDataSource コントロールから取得したデータがページに表示されます。後の章で GridView について詳しく説明しますが、この章では引き続きデータ ソース コントロールに焦点を当てます。
ステートメント内の変数を選択する
VWD でデータ ソースを作成する場合、ウィザードでは、表示する必要がある列を指定するか、カスタム SQL ステートメントを作成するように求められます。前の「試してみる」では、いくつかの列を選択するだけでした。より複雑な SQL ステートメントは、いくつかの異なる方法で指定できます。
● インタラクティブなダイアログ ボックスを使用する
● AccessDataSource ウィザードにカスタマイズされた SQL ステートメントを入力します (コントロールのデータ ソースの構成コンビニエンス タスクによって呼び出されます)。
● プロパティ グリッドにステートメントを入力します。
● ソース ビューのマークアップにステートメントを直接入力します。
Access DataSource ウィザードでの列の選択は、タイポグラフィーや構文エラーが減少するため、別のテーブルから 1 つ以上の列を返す単純なクエリに推奨される手法です (図 2-3 を参照)。このウィザードでは、[名前] ドロップダウン リストからテーブルまたはクエリの名前を選択できます。すべての列 (*) または任意の列のグループを選択することで、テーブルまたはクエリ内の必要な列を選択できます。 [並べ替え] ボタンをクリックすると、データ ソース内の任意の列で並べ替えることができます。最初の列に制約がある場合は、「次の条件」で選択したフィールドが使用されます。ウィザードからオプションを選択すると、SelectCommand の実際の SQL 構文も読み取り専用のテキスト ボックスに表示されることに注意してください。
図 2-3
ウィザードの [WHERE] ボタンを使用して、パラメータを含む SQL ステートメントを作成できます。この部分については、第 9 章で説明します。ここではこの選択を省略しますが、展開前にこれらのパラメータを使用することが重要です。これについては、本書で後ほど説明します。デプロイされたサイトでは、ユーザー入力を SQL ステートメントに直接接続しないでください。パラメーターの問題を無視すると、サイトが SQL インジェクション攻撃にさらされることになります。この攻撃手法は、ユーザー入力の偽の文字を使用して元の SQL ステートメントを無効にし、それを破壊的なステートメントに置き換えます。パラメーター コレクションを使用すると、ユーザー入力を ADO.NET パラメーター コレクションに送信できます。これにより、コレクションの機能を使用して SQL インジェクションの問題を軽減できます。
データ ソースの構成ウィザードには、SQL ステートメントを迅速に作成するためのオプションが多数ありますが、マークされた SelectCommand に SQL ステートメントを直接入力 (または変更) する必要がある場合もあります。 AccessDataSource ウィザードでは、これらの操作が可能です。テーブル、クエリ、列を選択するためのウィザード ページで、[カスタム SQL ステートメントまたはストアド プロシージャを指定する] ラジオ ボタンを選択できます。ウィザード ページでこのオプションを選択した後、「次へ」ボタンをクリックして別のページに入り、テキスト領域にカスタム ステートメントを直接入力できます。 Visual Studio QueryBuilder を使用して、Access QueryBuilder によく似たツールを使用してカスタム ステートメントを視覚的に作成することもできます。
ウィザードを使用したくない場合は、AccessDataSource コントロールのプロパティ グリッドにカスタム SQL ステートメントを入力するか、ソース ビューに切り替えて AccessDataSource コントロール タグの SelectCommand プロパティにステートメントを入力することができます。
SQL に関する書籍は数多くあります (これと同じ種類の本は、 『Beginning SQL Programming』 、ISBN 1-861001-80-0) であり、この本の付録には簡単な概要が記載されています。 SQL 構文を学習する場合は、レコードの一部を返すコマンド (TOP および DISTINCT)、フィールドの名前を変更する構文 (AS)、および 2 つの関連テーブルからフィールドを返す手法 (JOIN) を学ぶことから始めることができます。 。次の演習では、SQL ステートメント内のいくつかの変数を調べます。
試してみる #3 - AccessDataSource の Select ステートメントを変更する この演習では、Northwind の Products テーブルの特定の列と特定のレコードを表示します。クエリから取得したデータを表示するページも作成されます。この演習では、選択ルールがすでにソース コードに含まれていることに注意してください。現在、オプションとしてユーザー入力はありません。
(1) C:WebsitesBegAspNet2Dbch02 に ch02_TIO_3_AlternateSelect-Commands.aspx という名前のファイルを作成します。
(2) ID として Northwind を使用して AccessDataSource コントロールを追加し、MDB を App_DataNorthwind.mdb に設定します。一連のダイアログ ボックスで、Products テーブル ("name"=Products) からすべてのフィールドを取得するように Select コマンドを設定します。ソース ビューを見て、以下に示すように、作成したステートメントに注目してください。
製品から * を選択してください |
<%@ ページ言語="VB" %> <html> <head runat="サーバー"> <title>ch02 TIO 3 オルタナティブセレクトコニマンド</title> </頭> <本文> <h3>ch02 TIO 3 代替選択コインマンド</h3> <フォーム runat="サーバー"> <asp:accessdatasource id="NorthwindAccDataSource" runat="サーバー" selectcommand="製品から選択 *" データファイル = " ~/App_Data/Northwind.mdb" > </asp:アクセスデータソース> <asp:gridview id="GridViewl" runat="サーバー" datasourceid="NorthwindAccDataSource"> </asp:gridview> </フォーム> </本文> </html> |
SELECT * FROM [製品] WHERE (CategroyID=3) |
<asp:accessdatasource id="NorthwindAccDataSource" runat="サーバー" selectcommand="SELECT * FROM [製品] WHERE (カテゴリID = 3) " データファイル="~App_Data/Northwind.mdb"> </asp:アクセスデータソース> |
SELECT * FROM Products WHERE ProductID = 12 SELECT * FROM Products WHERE ProductName = 'ノースウッズ クランベリー ソース' SELECT * FROM Products WHERE ProductID <11 SELECT * FROM Products WHERE ProductID <11 ORDER BY ProductName 昇順 SELECT * FROM Products WHERE SupplierID = 6 OR SupplierID = 8 SELECT * FROM Products WHERE SupplierID = 24 AND UnitPrice > 10 |
MDB ファイルの場所の変数
MDB ファイルは、ハードディスク上のさまざまな物理的な場所 (Web ページと同じフォルダー、Web ページの下のサブフォルダー、マシン上の他のフォルダーなど) に保存されます。 Visual Web Developer では、これらのファイルはデザイナーで頻繁に参照でき、MDB ファイルへの正しいパスが入力されています。ただし、独自のコードを入力する場合は、このセクションで説明する構文に従う必要があります。
AccessDataSource コントロールの DataFile プロパティには、完全修飾 (たとえば、ドライブ文字で始まる) するか、AccessDataSource を含むページの場所に相対して指定できるページ パスが含まれます。パスはアプリケーションに対して相対的なものにすることもできます。つまり、URL 構文を使用してパスを参照します。この構文は、記号 (~) をアプリケーションのルート ディレクトリに置き換えます (例: ~App_DataProduces.mdb)。アプリケーション相対パスを使用すると、データベースへの参照を壊すことなく、ある場所から別の場所にページを簡単に移動できるため、可能な限りアプリケーション相対パスを使用することをお勧めします。
まず、完全修飾パスの構文を見てみましょう。これには、ファイルが存在するコンピューター ドライブのルートから始まる、MDB ファイルへの完全なパスが含まれます。
<asp:accessdatasource . データファイル= "C:WebSitesWebApplicationApp_DataMyMdb.mdb"> |
<asp:accessdatasource . |
<asp:accessdatasource .datafile="MyDaughterFolder/MyMdb.mdb"> |
<asp:accessdatasource . |
<asp:accessdatasource .datafile="~App_Data/MyMdb.mdb" |