winforms アプリケーションから標準の Windows データ ソース ダイアログを表示する簡単な方法はありますか?
ユーザーに表示してシステム DSN を取得するか、新しい DSN を作成してデータソース名を返したいと思います。.net の既存のラッパーへの参照が見つからないので、そのためには win API しか使用できないと思います。既存のソリューションまたはコードのスニペットをいただければ幸いです。
このダイアログから、選択したデータ ソース名を取得できないようです。このダイアログを呼び出すために使用できる winapi 関数は次のとおりです ( link )。
BOOL SQLManageDataSources(HWND hwnd);
そして、ここにスニペットがあります:
[DllImport("ODBCCP32.dll", CharSet = CharSet.Unicode, SetLastError = true)]
private static extern bool SQLManageDataSources(IntPtr hwnd);
private void ShowDataSourceDialog()
{
SQLManageDataSources(Handle);
}
引数 hwnd は、親ウィンドウのハンドルです。ダイアログは、有効な Windows ハンドルに対してのみ表示されます。この方法でデータ ソースを選択することはできませんが、少なくとも、既存の標準ツールを使用してデータ ソースを追加、変更、または削除する機能を提供できます。それ以外の場合は、カスタムのものを作成する必要があります。
これはレジストリに保存されているすべてのデータであるため、ここで使用可能な ODBC 接続のリストを取得できます。
HKEY_CURRENT_USER\Software\ODBC\ODBC.INI
これをきれいにしたい方法でラップします。
ここにレジストリのクエリに関する良い情報があります
ユーザーがDSNを挿入/選択できるカスタムウィンドウを作成できるかもしれません。
新しい DSN を手動で挿入し、マシン上で既に構成されているものを一覧表示する方法の例がいくつかあります。
システム DSN を確認し、存在しない場合はシステム DSN を作成する (iSeries Access ODBC ドライバー) .NET から
DSN 名を動的に追加する
ODBC ドライバー リスト