MapPath()メソッドを利用してAccessのConnectionStringを生成するサンプル

図 MapPath()メソッドを利用してAccessのConnectionStringを生成するサンプル
このサンプルは、HttpRequestクラスのMapPath()メソッドを使用してAccessのConnectionStringを生成します。ProviderとData Sourceのテキストボックスにデータを入力したらConnect to Access DataBaseのボタンをクリックします。ボタンをクリックすると、AccessのConnectionStringを生成してデータベースを開きます。Data Sourceのテキストボックスには、AccessのNwind.mdbデータベースの相対パスを入力します。
このサンプルでは、以下のノウハウを習得することができます。
▲ HttpRequestのMapPath()メソッドの使い方
▲ ランタイム時にAccessのConnectionStringを生成する方法
▲ OleDbConnectionのOpen()/Close()メソッドの使い方
▲ OleDbConnectionのConnectionString/Stateプロパティの使い方
サンプルの<form>…</form>には、TextBox、Button、Labelを定義しています。行41-43では、ProviderのTextBoxを定義しています。行42では、Textプロパティにデフォルトのプロバイダーを設定しています。行51-53では、Data SourceのTextBoxを定義しています。行52では、TextプロパティにAccessのNwind.mdbのパスを設定しています。Data Sourceには、物理アドレスの代わりに相対パスを入力します。行57-59では、Connect to Access DataBaseのButtonを定義しています。Buttonには、OnClickイベントを登録しています。OnClickイベントでは、AccessのConnectionStringを生成してデータベースを開きます。行61のLabelには、実行結果を表示します。
34: <form runat="server">
38: Provider:
41:
<asp:TextBox id="txtProvider" runat="server"
42:
Text="Microsoft.Jet.OLEDB.4.0"
43:
Width="200px" />
48: Data Source:
51:
<asp:TextBox id="txtDataSource" runat="server"
52:
Text="../../webdb/Nwind.mdb"
53:
Width="200px" />
57: <asp:Button
id="btnOpen" runat="server"
58: Text="Connect to Access DataBase"
59: OnClick="btnOpen_Click" />
60: <hr>
61: <asp:Label
id="lblMessage" runat="server" />
62: </form>
Connect to Access DataBaseのボタンをクリックすると、OnClickイベントが発生します。OnClickイベントでは、AccessのConnectionStringを生成してデータベースを開きます。行8-14のWith…End Withでは、StringBuilderのAppend()メソッドでAccessのConnectionStringを生成しています。行12-13では、MapPath()メソッドでDATA SOURCE=を生成しています。MapPath()メソッドは、引数で指定された相対パスを物理アドレスで返します。
行15では、OleDbConnectionのインスタンスを生成しています。引数には、StringBuilderで生成したAccessのConnectionStringを指定しています。行16-18では、LabelのTextプロパティにOleDbConnectionのConnectionStringプロパティを設定しています。行19では、OleDbConnectionのOpen()メソッドでAccessのNwind.mdbデータベースを開いています。行20-23では、LabelのTextにOleDbConnectionのStateプロパティを設定しています。行24では、OleDbConnectionのClose()メソッドでAccessのNwind.mdbデータベースを閉じています。行25-28では、LabelのTextにOleDbConnectionのStateプロパティを設定しています。Labelには、以下のような情報が表示されます。
ConnectionString:PROVIDER=Microsoft.Jet.OLEDB.4.0;
DATA
SOURCE=E:\Inetpub\wwwroot\AspAdo\webdb\Nwind.mdb
ConnectionState:Open
ConnectionState:Closed
ConnectionStringのDATA SOURCE=には、MapPath()メソッドで取得した物理アドレスが設定されています。
6: Sub btnOpen_Click(s As Object, e As
EventArgs)
8: With sbConnectionString
9:
.Append("PROVIDER=")
10:
.Append(txtProvider.Text.Trim())
11: .Append(";")
12: .Append("DATA SOURCE=")
13:
.Append(MapPath(txtDataSource.Text.Trim()))
14: End With
15: Dim con As New
OleDbConnection(sbConnectionString.ToString())
16: lblMessage.Text = _
17: String.Format("<b>ConnectionString</b>:{0}<br>",
_
18: con.ConnectionString)
19: con.Open()
20: If con.State = ConnectionState.Open
Then
21: lblMessage.Text &= _
22:
String.Format("<b>ConnectionState</b>:{0}<br>","Open")
23: End If
24: con.Close()
25: If con.State = ConnectionState.Closed
Then
26: lblMessage.Text &= _
27:
String.Format("<b>ConnectionState</b>:{0}<br>","Closed")
28: End If
29: End Sub