WIN アプリケーションに DATA LINK フォームを追加する方法を知りたいです。ユーザーが接続する SQL サーバーと、使用するセキュリティの種類、およびデータベースを選択できるフォームを知っています。
この画像の 代替テキストのようなもの http://img186.imageshack.us/img186/7259/datalink.png
WIN アプリケーションに DATA LINK フォームを追加する方法を知りたいです。ユーザーが接続する SQL サーバーと、使用するセキュリティの種類、およびデータベースを選択できるフォームを知っています。
この画像の 代替テキストのようなもの http://img186.imageshack.us/img186/7259/datalink.png
いくつかの COM Introp を介してそれを行うことができます...しかし、その後、ドラッグになる可能性のある一連の Interop アセンブリをプロジェクトに取り込む必要があります。このコードは、代わりにリフレクションを使用してダイアログを表示します。
public static string ShowDialog( IWin32Window owner,
string connectionString )
{
Type dlType = Type.GetTypeFromProgID( "DataLinks", true );
Type acType = Type.GetTypeFromProgID( "ADODB.Connection", true );
object form = Activator.CreateInstance( dlType );
object connection = Activator.CreateInstance( acType );
acType.InvokeMember(
"ConnectionString",
BindingFlags.Public | BindingFlags.SetProperty,
null,
connection,
new object[]{ connectionString }
);
object result =
dlType.InvokeMember(
"PromptEdit",
BindingFlags.Public | BindingFlags.InvokeMethod,
null,
form,
new object[]{ connection }
);
if( result != null && (bool)result )
return acType.InvokeMember(
"ConnectionString",
BindingFlags.Public | BindingFlags.GetProperty,
null,
connection,
new object[]{} ) as string;
return null;
}
これは基本的に次の VB スクリプトに変換されます
form = GetObject( "DataLinks" )
connection = GetOBject( "ADODB.Connection" )
connection.ConnectionString = "existing connection"
form.PromptEdit( connection )
Return connection.ConnectionString
詳細はこちら。
Microsoft から提供されているコード ( http://code.msdn.microsoft.com/Connection ) を使用するのが最善の選択だと思います。
Visual Studio内で使用する接続ダイアログです。
ただし、登録済みの ADO.NET プロバイダーでのみ機能します。