web-dev-qa-db-ja.com

ConnectionStringダイアログを表示する

SQL Serverデータベースを作成、バックアップ、および復元できるはずのプログラムをC#で作成しようとしています。

このため、ユーザーは目的のSQL Server(およびデータベース)への接続文字列を設定できる必要があります。

接続文字列の作成には、たとえばVisualStudioと同じダイアログを使用したいと思います。

これは可能ですか?

19
Christian Tang

注:以下で参照されているダイアログコンポーネントはダウンロードできなくなりました。過去に取得したことがない限り、この回答のサンプルコードはおそらく機能しません。

代替:別の DataConnectionDialogがNuGetで利用可能 になりました。詳細については、 この回答 を参照してください。


MSDNアーカイブギャラリーの「データ接続ダイアログ」 (2015年9月1日現在破損)

データ接続ダイアログは、VisualStudioでリリースされたデータベースツールコンポーネントです。これにより、ユーザーは接続文字列を作成し、特定のデータソースに接続できます。これを試して..

C#サンプル:

static void Main(string[] args)
{
    DataConnectionDialog dcd = new DataConnectionDialog();
    DataConnectionConfiguration dcs = new DataConnectionConfiguration(null);
    dcs.LoadConfiguration(dcd);

    if (DataConnectionDialog.Show(dcd) == DialogResult.OK)
    {
        // load tables
        using (SqlConnection connection = new SqlConnection(dcd.ConnectionString))
        {
            connection.Open();
            SqlCommand cmd = new SqlCommand("SELECT * FROM sys.Tables", connection);
            using (SqlDataReader reader = cmd.ExecuteReader())
            {
                while (reader.Read())
                {
                    Console.WriteLine(reader.HasRows);
                }
            }
        }
    }
    dcs.SaveConfiguration(dcd);
}

ここではソースコードも利用できます。ライセンスに従って、ソースコードをアプリケーションと統合して再配布できます。

enter image description here

23
Damith

この回答 にリンクされているデータ接続ダイアログコンポーネントはダウンロードできなくなりました。

ただし、(明らかに多少変更された)DataConnectionDialogコンポーネントはその後 NuGetで利用可能 になりました。

インストール:

NuGetパッケージマネージャーコンソールを使用して、コンポーネントをVisualStudioプロジェクトに追加します。

Install-Package DataConnectionDialog

使用例:

// using Microsoft.Data.ConnectionUI;
// using System.Windows.Forms;

bool TryGetDataConnectionStringFromUser(out string outConnectionString)
{
    using (var dialog = new DataConnectionDialog())
    {
        // If you want the user to select from any of the available data sources, do this:
        DataSource.AddStandardDataSources(dialog);

        // OR, if you want only certain data sources to be available
        // (e.g. only SQL Server), do something like this instead: 
        dialog.DataSources.Add(DataSource.SqlDataSource);
        dialog.DataSources.Add(DataSource.SqlFileDataSource);
        …

        // The way how you show the dialog is somewhat unorthodox; `dialog.ShowDialog()`
        // would throw a `NotSupportedException`. Do it this way instead:
        DialogResult userChoice = DataConnectionDialog.Show(dialog);

        // Return the resulting connection string if a connection was selected:
        if (userChoice == DialogResult.OK)
        { 
            outConnectionString = dialog.ConnectionString;
            return true;
        }
        else
        {
            outConnectionString = null;
            return false;
        }
    }
}
27
stakx

はいといいえ。

はい、可能です 技術的に可能 ですが、そうしないことをお勧めします。そのダイアログはVisualStudioの一部であり、「redist」にたくさんリストされています。私の解釈では、あなたはnotこのdllを自由に再配布できません。

4
Marc Gravell

ここにある他のすべての回答は古くなっていると思いますが、現在の解決策は code.msdn.Microsoft.com :にあります。

実行時にMicrosoftVisualStudio接続ダイアログを使用する

Visual Studioでは、開発者が従来のTableAdapterまたはEntityFrameworkのいずれかでデータベーステーブルの強い型付きクラスを作成する場合、プロセス内に次のようにダイアログが表示される場所があります。実行時にこれを行う方法ともう少し説明します。

ダウンロードは、次のdllをビルドするソリューションです。

  • Microsoft.Data.ConnectionUI.Dialog.dll

  • Microsoft.Data.ConnectionUI.dll

  • Microsoft.Data.DataConnectionConfiguration.dll

このソリューションには、それらの使用方法を示すサンプルアプリケーションも含まれています。私のために御馳走を働いた、そしてそれはとても簡単です。

2
Slerte

SQLConnectionStringUI Nugetパッケージを使用できます。

0
Alex Erygin

サーバーエクスプローラの接続設定ウィンドウと同様の独自のフォームを作成し、実装します。 VS用のフォームは使用できません

0
hungryMind
0
Peyman