SQL Server 2005 でいくつかのテーブルを管理する最初の c# アプリケーションは既に完成していますが、テキスト ファイルから接続文字列を読み取れるように変更したいと考えています。これにより、テキスト ファイル内の接続文字列を変更するだけでアプリケーションを別の PC に移動でき、コード自体の変更を回避できます。これどうやってするの?
4 に答える
デスクトップ アプリを開発している場合、推奨される場所は app.config です。
<connectionStrings>
<add name="TailorShop.Properties.Settings.TailorShopConnectionString" connectionString="Data Source=.\sqlexpress;Initial Catalog=TailorShop;Integrated Security=True" providerName="System.Data.SqlClient"/>
</connectionStrings>
ここで接続名に注意してください。これはプロパティで定義されているためです (プロジェクト ソリューション エクスプローラーで [プロパティ] ノードをダブルクリックし、[設定] に移動します)。その後、そこに接続文字列を追加できます。その後、上記のように表示されます。
アクセスするには、コードでこれを行うことができます。
Settings.Default.TailorShopConnectionString
このコードを機能させるには、yourprojectname.properties などの参照を追加する必要があります。
using TailorShop.Properties;
System.Configuration ( http://msdn.microsoft.com/en-us/library/system.configuration.aspx ) をご覧ください。構成ファイル (App.Config) を読み取るための組み込みメソッドがいくつかあります。
ファイル内の専用の 構成セクションから接続文字列を管理できApp.config
ます。詳細については、こちらを参照してください。
非標準のソリューションでプレーン テキスト ファイルを使用する代わりに、.NETが既に提供しているものを参照してください。設定は実行時に読み取られるため、再コンパイルする必要なく、アプリケーションを移動するときに設定ファイルの値を変更できます。
次に例を示します。
<configuration>
<connectionStrings>
<add name="MyConnectionString"
connectionString="Data Source=.;Initial Catalog=MyDatabaseName;IntegratedSecurity=True"
providerName="System.Data.SqlClient" />
</connectionStrings>
</configuration>
を使用してコードからアクセスしますConfigurationManager.ConnectionStrings["MyConnectionString"]
。
本当にテキスト ファイルを使用する必要がある場合は、少し異なるアプローチを取る必要があります。
- 最初に、接続文字列ファイルのファイル システムで固定パスを使用する必要があります。アプリでハードコーディングするか( BAD PRACTICE )、設定または App.config ファイルを使用してテキスト ファイル パスを定義します。
- プログラムでファイルを読み取る必要があります。プレーン テキストの場合は
System.IO.File.ReadAllText(filePath);
、filePath
引数がファイルへの絶対パスである場合に使用できます。アプリをコンパイルするときにパスを変更する必要がある場合は、構成/設定アプローチを使用してファイルへの物理パスを定義できます。これは、それらを変更しても再コンパイルが必要ないためです (接続文字列について前述したように)。
connectionStrings
app/web.config ファイルのセクションを使用する必要があります。
<connectionStrings>
<add name="DefaultConnection" providerName="System.Data.SqlClient" connectionString="Data Source=(LocalDb)\v11.0;Initial Catalog=aspnet-EditorTemplateCollectiosns-20130404170435;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\aspnet-EditorTemplateCollectiosns-20130404170435.mdf" />
</connectionStrings>
次に、コードでアクセスする場合は、次のようにします。
var connectionString = ConfigurationManager.ConnectionStrings["DefaultConnection"];