ホームページ >バックエンド開発 >C#.Net チュートリアル >Accessデータベースとasp.netを接続する相対パスの書き方

Accessデータベースとasp.netを接続する相対パスの書き方

伊谢尔伦
伊谢尔伦オリジナル
2016-11-25 09:45:111830ブラウズ

Asp.net が Access データベースに接続するときは、通常、データベース接続文字列を web.config 構成ファイルに書き込みます。接続文字列のデータベース パスは絶対パスの形式でしか表現できません。プログラムを移動する場合は、web.config でデータベース接続文字列のデータベース パスを変更する必要があり、非常に面倒です。 ~/database/test.mdb のような相対パス形式で記述した場合も誤りです。例:

 <connectionstrings>
    <add name="Access" connectionstring="Provider=Microsoft.Jet.OLEDB.4.0;data source=~/database/test.mdb" providername="System.Data.OleDb" />
  </connectionstrings>

上記は間違って書かれています。

現在、一般的な解決策は 2 つあります。

1. DataDirectory キーワード メソッドを使用する

Asp.net 2.0 以降では、Access、SQL Server Express を格納するために使用できる App_Data ディレクトリが存在します。 、XML などのデータ ファイル。 Access データベース ファイルを App_Data フォルダーに配置し、キーワード DataDirectoty を使用してパスを取得します。

<connectionstrings>
    <add name="Access" connectionstring="Provider=Microsoft.Jet.OLEDB.4.0;data source=|DataDirectory|test.mdb"  providername="System.Data.OleDb" />
  </connectionstrings>

2. web.config ファイルに 2 つの文字列を設定します

web.config ファイルに 2 つの文字列を設定します。1 つはドライバー文字列で、もう 1 つは Access データベース ファイルの相対パスです。使用する場合は、Server.MapPath()を使用して絶対パスを取得し、結合した接続文字列を使用できます。

<connectionStrings>
    <add name="Access" connectionString="Provider=Microsoft.Jet.OLEDB.4.0;data source={0}"
      providerName="System.Data.OleDb" />
</connectionStrings>
<appSettings>
    <add key="AccessPath" value="~/Database/test.mdb"/>
</appSettings>

バックグラウンドで使用する場合、コードは次のとおりです:

private string GetConnStr()
{
    string connStr = WebConfigurationManager.ConnectionStrings["Access"].ConnectionString;
    connStr = connStr.Replace("{0}", Server.MapPath(WebConfigurationManager.AppSettings["AccessPath"].ToString()));
    return connStr;
}


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。