4

適切なODBCドライバーがあれば、ユーザーが任意のデータベースに接続できるようにするアプリケーションを作成しようとしています。しかし、私は接続文字列で立ち往生しています。特定のデータベースタイプについては、オンラインで簡単に調べて、必要なキーワードと値のペアを見つけることができますが、その情報にはドライバー自体からアクセスできますか?

私がやりたいのは、ユーザーにリスト(SQLDriversによって生成された)から必要なドライバーを選択させ、文字列の生成に必要なキーワードの入力を求めるフォームを生成することです。これにより、アプリケーションは特定のODBCドライバー。これを行う方法はありますか?または、それぞれを個別にハードコーディングする必要がありますか?たぶん、接続文字列は行く方法ではありません、そして私が見落としている別の方法がありますか?

4

4 に答える 4

3

2010年に、Microsoftは、私たち小さな人々が使用できるVS2010接続ダイアログをリリースしました。それは素晴らしいです、あなたが望むことをするべきであり、そして自由に配布可能です。ダイアログとそのソースコードのダウンロードはここにあります。

開始するには:コードをコンパイルしたら、、、およびへの参照を含める必要がMicrosoft.Data.ConnectionUIありMicrosoft.Data.ConnectionUI.DialogますMicrosoft.Data.ConnectionUI.SqlCeDataProvider。その後、ダイアログは次のように呼び出されます

// Initialisation.
DataConnectionDialog dcd = new DataConnectionDialog();
DataConnectionConfiguration dcs = new DataConnectionConfiguration(null);
dcs.LoadConfiguration(dcd);

// Edit existing connection string.
if (!String.IsNullOrEmpty(strExistingConn))    
    dcd.ConnectionString = strExistingConn;

// Launch Microsoft's SqlConnection dialog.
string strSqlFinConn = String.Empty;
if (DataConnectionDialog.Show(dcd) == DialogResult.OK)
{
    // Load tables as test.
    using (SqlConnection connection = new SqlConnection(dcd.ConnectionString))
        connection.Open();
}
dcs.SaveConfiguration(dcd);
return dcd.ConnectionString;

これがあなたが望むものでない場合、@HackedByChineseの答えは最良のアプローチのように見えます。

これがお役に立てば幸いです。

于 2012-06-20T18:16:15.753 に答える
3

あなたはConnectionStringBuildersそれらが何か助けになるかどうか見てみることができます。

次のコードを使用して、構成可能なプロパティを列挙できます。これにより、構成フォームを作成できます。

var builder = new SqlConnectionStringBuilder();

var properties = (from key in builder.Keys.OfType<string>()
                  select key);

properties含まれています:

Data Source 
Failover Partner 
AttachDbFilename 
Initial Catalog 
Integrated Security 
Persist Security Info 
User ID 
Password 
Enlist 
Pooling 
Min Pool Size 
Max Pool Size 
Asynchronous Processing 
Connection Reset 
MultipleActiveResultSets 
Replication 
Connect Timeout 
Encrypt 
TrustServerCertificate 
Load Balance Timeout 
Network Library 
Packet Size 
Type System Version 
Application Name 
Current Language 
Workstation ID 
User Instance 
Context Connection 
Transaction Binding 
于 2012-06-20T18:01:41.810 に答える
1

実際、これを解決する非常に簡単な方法をhttp://msdn.microsoft.com/en-us/library/windows/desktop/ms715433(v=vs.85).aspxで見つけました。

不完全な接続文字列(たとえば、Driverキーワードのみを含むもの)を使用してODBC API関数SQLDriverConnectを呼び出し、最後の引数をSQL_DRIVER_COMPLETEに設定すると、ドライバーによって生成されたダイアログがポップアップ表示され、含まれていなかった必要な情報を閉じたら、完成した接続文字列を返します。

于 2012-06-21T02:26:09.547 に答える
0

すでに投稿されている良い答えとは別に、ODBCAPISQLBrowseConnectを確認することをお勧めします。

于 2012-06-21T07:47:32.033 に答える