0

私は次の解決策を試していますが、あまり運がありません: C#でapp.config connectionstringデータソース値を更新するにはどうすればよいですか?

私が持っているコードは次のとおりです。

Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);

// Because it's an EF connection string it's not a normal connection string
// so we pull it into the EntityConnectionStringBuilder instead
EntityConnectionStringBuilder efb = new EntityConnectionStringBuilder(
                config.ConnectionStrings.ConnectionStrings["WindowsFormsApplication1.Properties.Settings.TestDBConnectionString"]
                    .ConnectionString);

// Then we extract the actual underlying provider connection string
SqlConnectionStringBuilder sqb = new SqlConnectionStringBuilder(efb.ProviderConnectionString);

// Now we can set the datasource
sqb.DataSource = "|DataDirectory|\\TestDBa.sdf";

// Pop it back into the EntityConnectionStringBuilder 
efb.ProviderConnectionString = sqb.ConnectionString;

// And update...
config.ConnectionStrings.ConnectionStrings["WindowsFormsApplication1.Properties.Settings.TestDBConnectionString"]
            .ConnectionString = efb.ConnectionString;

config.Save(ConfigurationSaveMode.Modified, true);
ConfigurationManager.RefreshSection("connectionStrings");

私のapp.configファイルには:

<?xml version="1.0" encoding="utf-8" ?><configuration>
<configSections>
</configSections>
<connectionStrings>
    <add name="WindowsFormsApplication1.Properties.Settings.TestDBConnectionString"
        connectionString="Data Source=|DataDirectory|\TestDB.sdf"
        providerName="Microsoft.SqlServerCe.Client.4.0" />
</connectionStrings>
<startup> 
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
</startup></configuration>

どこが間違っているのですか?

4

2 に答える 2

0

データベース文字列を格納し、無効な場合や別のデータベースに接続したい場合にユーザーが更新できるようにする独自の XML ファイルを作成することになりました。app.config を更新しようとするよりもうまくいくと思います。

于 2012-09-09T14:10:33.963 に答える
0

私は数日間 SQL CE をいじっているだけですが、SqlCE データベースで何かをしている場合は、おそらく Sql クラスではなく SqlCe クラスを使用したいでしょう - SqlCeConnectionStringBuilder を試してみてください。

それ以外は |DataSource| が続く限り CE でサポートされています。投稿した接続文字列は、私が見て使用した例のように見えます。

于 2012-09-04T22:08:16.990 に答える