2

私はvs2010より古いバージョンのためでなければならない解決策を見つけました。vs2010でこれを行う方法を知りたいですか?誰か知っている?

http://www.csharpbydesign.com/2008/01/overriding-dataset-settings-co.html

もう少し詳しく説明させてください。

ac#で生成されたデータセットがあります。別の(同じように構造化されているが、データセットが異なる)データベースでデータセットを使用できるように、接続文字列を変更するにはどうすればよいですか?コンパイル時にサーバーまたはデータベースの名前がわからないため、これは実行時に発生する必要があります。私はvs2010とSQLServer2008R2Expressを使用しています

4

2 に答える 2

6

簡単な方法はないと思います。Connection-StringはDataSetすべてに設定されているため、プログラム全体で変更することはできませんTableAdapter

プロパティは(DALが別のアセンブリにある場合)であるTableAdapterため、接続文字列を変更するには、の部分クラスを使用/作成する必要があります。Designer.csファイルは、デザイナでの次の変更後に自動的に再作成されるため、変更しないでください。作成するには、DataSetを右クリックして、[コードの表示]を選択します。Connectioninternal

TableAdapter例(名前が付けられていると仮定ProductTableAdapter):

namespace WindowsFormsApplication1.DataSet1TableAdapters
{
    public partial class ProductTableAdapter 
    {
        public string ConnectionString {
            get { return Connection.ConnectionString; }
            set { Connection.ConnectionString = value; }
        }
    }
}

これで、簡単に変更できます。

var productTableAdapter = new DataSet1TableAdapters.ProductTableAdapter();
productTableAdapter.ConnectionString = someOtherConnectionString;

これが私のサンプルDataSetと作成されたファイルのscreesnhotですDataSet1.cs

ここに画像の説明を入力してください

于 2013-02-19T16:42:21.757 に答える
0

実際には、接続文字列を変更するはるかに簡単な方法があります。接続文字列が接続文字列として表示される[設定]画面に移動します。まず、表示されている接続文字列にマークを付けてコピーします。次に、タイプを接続文字列から文字列に変更します。文字列のテキストが変更され、xmlが含まれるようになります。次に、コピーした接続文字列をxmlテキストに貼り付けます。次に、スコープをアプリケーションからユーザーに変更します。

接続文字列を変更したい場合は、以下のコードを使用します。

// assign the path to use to the variable fullpath (or whatever)
string newConnection = String.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0}", fullpath);            
Properties.Settings.Default.HootConnectionString = newConnection;
Properties.Settings.Default.Save();

私の場合、グローバルデータセットがアクティブになっているので、データがテーブルアダプターによって再読み取りされるようにする必要があります。そしてもちろん、データベースがまだそこにあることを確認するためにエラー制御を追加する必要があります。

これにより、アプリケーション設定に表示される内容が変更されないことがわかります。これらはデフォルトです。

これはAccessデータベースで機能します。そのため、マイレージと要件は異なる場合があります。

編集:警告。うまくいくと、インストールすると、接続文字列はデータベースコンテンツを開いたり読み取ったりするのに適していますが、データベースを更新しようとすると接続文字列がないという不満があります。

于 2016-07-27T19:24:54.497 に答える