2

データベースをプログラムに追加すると、VisualStudioによって次の接続文字列が自動的に作成されます。

 <connectionStrings>
    <add name="TeamSortingTool.Properties.Settings.PlayerTeamConnectionString" connectionString="Data Source=|DataDirectory|\PlayerTeam.sdf" providerName="Microsoft.SqlServerCe.Client.3.5" />
    <add name="PlayerTeamEntities" connectionString="metadata=res://*/edmPlayerTeam.csdl|res://*/edmPlayerTeam.ssdl|res://*/edmPlayerTeam.msl;provider=System.Data.SqlServerCe.3.5;provider connection string=&quot;Data Source=|DataDirectory|\PlayerTeam.sdf&quot;" providerName="System.Data.EntityClient" />
  </connectionStrings>

ユーザーが開きたいデータベースを選択できるようにしようとしています。関連するデータセットとテーブルアダプターを失うことなく、プログラムで接続文字列を変更するにはどうすればよいですか?

前もって感謝します :)

4

1 に答える 1

1

このメソッドを使用して、App.Configファイルから接続文字列を呼び出し、データ接続またはアダプターで使用できます。

 public string GetConnectionStringByName()
        {
            string returnValue = null;
            ConnectionStringSettings settings = ConfigurationManager.ConnectionStrings["Connection Name Here"];
            if (settings != null)
                returnValue = settings.ConnectionString;
            return returnValue;
        }

プロジェクトに新しいデータベースを追加すると、既存のデータベースと同じ接続名にデフォルトで番号が追加されます。したがって、接続文字列を変数として作成し、新しいデータベースを追加するときにそれに番号を追加できます。

Edit

文法的にデータベースをプロジェクトに追加することを検討することにより、新しいデータベースを追加した場合。その接続文字列の名前を取ります:

name="TeamSortingTool.Properties.Settings.PlayerTeamConnectionString1" 

既存のデータベースの名前の最後に数字が追加されるので、私が提供した方法を投資して、指定された接続文字列を追加できます。

public string GetConnectionStringByName(int DB_Number)
        {
            string returnValue = null;
            ConnectionStringSettings settings = ConfigurationManager.ConnectionStrings["Connection Name Here"];
            if (settings != null)
                returnValue = settings.ConnectionString+Convert.ToString(DB_Number);
            return returnValue;
        }

データベースを追加するたびに変数が失われ、増加しないように、DB_Number変数をファイルに保存できるためです。XML

したがって、既存の1に新しいデータベースを追加する場合、接続名は次のようになります。

name="TeamSortingTool.Properties.Settings.PlayerTeamConnectionString1" 

また、別のデータベースを追加した場合はDB_Number、接続名を次のように変更するために1が増加します。

name="TeamSortingTool.Properties.Settings.PlayerTeamConnectionString2" 

そして、ユーザーが使用したい接続文字列で選択できるようにします。

一方で 。アプリケーションの実行前にデータベースを手動で追加した場合。接続文字列をデータ構造に配列として保存し、必要な接続を呼び出して使用するだけなので、処理が簡単になります。

それは私があなたの質問から理解したものです

于 2012-08-29T21:20:10.003 に答える