0

接続文字列ビルダーを含むクラス(名前: sql_conClass.cs)があるC#のプロジェクトがあります:

 public class myConnection
{

    internal static class DataSource
    {
        private static string _ConnectionString;
        public static string ConnectionString
        {
            get
            {
                if (_ConnectionString == null)
                    _ConnectionString = FunctionToDynamicallyCreateConnectionstring();
                return _ConnectionString;
            }
        }
        private static string FunctionToDynamicallyCreateConnectionstring()
        {

                    SqlConnectionStringBuilder cb = new SqlConnectionStringBuilder();

                    cb.DataSource = Properties.Settings.Default.sql;
                    cb.InitialCatalog = Properties.Settings.Default.database;
                    cb.UserID = Properties.Settings.Default.login;
                    cb.Password = Properties.Settings.Default.pass; 
                    cb.ConnectTimeout = 120;

                     return cb.ToString();

        }
 }

ここで、ReportViewer の DataSource を動的に作成すると (サーバー エクスプローラーから、ReportViewer に使用するテーブルを正確なサーバーから移動します)。プロジェクトは、このサーバーへの独自の接続を作成します。したがって、プロジェクトの .exe ファイルを作成すると、すべてのファイルにこのサーバーへのこの SqlConnection が含まれ、変更するオプションはありません。

私の ConnectionBuilder は app.config に保存されます。この Connectionbuilder への参照を app.config に挿入する方法があるかどうかを尋ねたかったのですか?

4

1 に答える 1

0

DataSet に動的に移動されるすべてのテーブルは、Integrated Security = True を設定する独自の SqlConnection を作成しますData Source=SERVER\SQL;Initial Catalog=database;Integrated Security=True。DataSet.Designer.cs で次のコード行が作成されることがわかりました。

private void InitConnection() {
        this._connection = new global::System.Data.SqlClient.SqlConnection();
        this._connection.ConnectionString = global::tours.Properties.Settings.Default.toursConnectionString1;
    }

クラスへの正しい参照を提供し、これを次のように変更する必要がありました。

 private void InitConnection() {
        this._connection = new global::System.Data.SqlClient.SqlConnection();
        this._connection.ConnectionString = myConnection.DataSource.ConnectionString;
    }
于 2013-08-24T05:59:44.860 に答える