3

Win フォームを開発していて、アプリ構成ファイルがあります。アプリ構成ファイルの接続文字列セクションに書き込むにはどうすればよいですか? 私の現在の App.Config ファイルは

  <?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <connectionStrings>
     <add name="MyDbConnection" connectionString="" providerName="System.Data.OleDb" />
</connectionStrings>
</configuration>

接続文字列を変更する私のC#コードは

var Config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
                var connectionStringsSection = (ConnectionStringsSection)Config.GetSection("connectionStrings");
                ConfigurationManager.ConnectionStrings["MyDbConnection"].ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + FilePath + "";
                Config.Save();
                ConfigurationManager.RefreshSection("connectionStrings");

ただし、3行目で例外が生成されます

configuration error exception this configuration is read only

接続文字列を変更するコードが外部クラスから呼び出されます。IsReadonly() メソッドをオーバーライドするコードをどこに配置すればよいかわかりません。また、アプリ構成には分離コード ファイルがありません。

4

2 に答える 2

2

App.config

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
   <connectionStrings>
      <add name="MyDBConnectionString" providerName="System.Data.SqlClient"
            connectionString="Data Source=localhost;Initial Catalog=MySQLServerDB; Integrated Security=true" />
   </connectionStrings>
</configuration>

接続文字列を App.config ファイルに保存すると、System.Configuration.ConfigurationManager クラスを使用して、この接続文字列をコードで読み取ることができます。

ConnectionStringSettings  conSettings = ConfigurationManager.ConnectionStrings["MyDBConnectionString"];

ConnectionStringsSettings クラスには、次のように、プログラム内の接続文字列設定を読み取るためのプロパティが用意されています。

string name = conSettings.Name;
string providerName = conSettings.ProviderName;
string connectionString = conSettings.ConnectionString;
于 2013-01-12T10:55:24.070 に答える
1

接続文字列をApp.configファイルに書き込むには、次を使用できます。

2 つの設定を作成します。例: AppConnectionString (タイプ: 文字列) とServerConnectionString (タイプ: ConnectionString)

設定コードを変更し、 ServerConnectionString設定の get プロパティで、戻り値をAppConnectionStringに変更します。

これにより、 AppConnectionString設定を変更、保存、または再読み込みできます。アプリケーションでServerConnectionStringを参照すると、AppConnectionString設定が返されます。それを試してみてください。

于 2014-01-24T07:38:10.577 に答える