SQL Serverデータベースを作成、バックアップ、および復元できるはずのプログラムをC#で作成しようとしています。
このため、ユーザーは目的のSQL Server(およびデータベース)への接続文字列を設定できる必要があります。
接続文字列の作成には、たとえばVisualStudioと同じダイアログを使用したいと思います。
これは可能ですか?
注:以下で参照されているダイアログコンポーネントはダウンロードできなくなりました。過去に取得したことがない限り、この回答のサンプルコードはおそらく機能しません。
代替:別の
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);
}
ここではソースコードも利用できます。ライセンスに従って、ソースコードをアプリケーションと統合して再配布できます。
この回答 にリンクされているデータ接続ダイアログコンポーネントはダウンロードできなくなりました。
ただし、(明らかに多少変更された)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;
}
}
}
はいといいえ。
はい、可能です 技術的に可能 ですが、そうしないことをお勧めします。そのダイアログはVisualStudioの一部であり、「redist」にたくさんリストされています。私の解釈では、あなたはnotこのdllを自由に再配布できません。
ここにある他のすべての回答は古くなっていると思いますが、現在の解決策は code.msdn.Microsoft.com :にあります。
実行時にMicrosoftVisualStudio接続ダイアログを使用する
Visual Studioでは、開発者が従来の
TableAdapter
またはEntityFrameworkのいずれかでデータベーステーブルの強い型付きクラスを作成する場合、プロセス内に次のようにダイアログが表示される場所があります。実行時にこれを行う方法ともう少し説明します。
ダウンロードは、次のdllをビルドするソリューションです。
Microsoft.Data.ConnectionUI.Dialog.dll
Microsoft.Data.ConnectionUI.dll
Microsoft.Data.DataConnectionConfiguration.dll
このソリューションには、それらの使用方法を示すサンプルアプリケーションも含まれています。私のために御馳走を働いた、そしてそれはとても簡単です。
SQLConnectionStringUI Nugetパッケージを使用できます。
サーバーエクスプローラの接続設定ウィンドウと同様の独自のフォームを作成し、実装します。 VS用のフォームは使用できません
UDLファイルを使用できます。