這兩天做一個小工具,需要讓用戶提供數據庫連接字符串,銼方法是讓用戶輸入一個字符串,稍好點方式的是提供一個字符串讓用戶去改,更好呢,就是提供一個像VS中那樣一個可以生成數據庫連接字符串的對話框了。從很久以前開始,M$就提供了這樣的組件,我至少在VS的安裝目錄下發現了兩個Assembly中包含了DataConnectionDialog,分別是:C:\Program Files\Microsoft Visual Studio 10.0\Common7\IDE\Microsoft.Data.ConnectionUI.Dialog.dll和C:\Program Files\Microsoft Visual Studio 10.0\Common7\IDE\Microsoft.VisualStudio.Data,但是今天我們不使用這兩種方式,為啥咧?原因是他們裡面沒有帶MySQL類型的數據源,雖然也可以通過不算十分複雜的過程將MySQL加進來,但是對於懶人來說,什麼都不做豈不更好,我正好就是個懶人,在允許的情況下,我更願意讓腦神經放鬆下來,去干點更值當點的工作。
最初覺得既然使用了MySQL Connector/Net,那這個Dialog就應該是在MySql.Data.dll中了,但是一陣好找發現這個MySql.Data命名空間下,連個繼承Form的類都沒有,貌似不可能提供這種對話框的功能了,無奈之下想起了MySql Connector/Net應該是提供源代碼的,於是到MySql的官網上下載了一份源代碼,看看到底內部是怎麼做的,很失望,依然是沒有找到,不過在這份源代碼的解決方案中發現了一個未能正常加載的項目,MySql.VisualStudio!哈哈,看着名字就像,按常理來說,應該有個MySql.VisualStudio.dll存在某處,F3一下,果然,在C:\Program Files\Microsoft Visual Studio 10.0\Common7\IDE\Extensions\Oracle\MySQL Connector Net\6.4.4文件夾中找到了,於是趕緊引用到項目中,一試,果然獲得了MySql的連接字符串
示例代碼:
private void btnConnect_Click(object sender, EventArgs e)
{
ConnectDialog dialog = new ConnectDialog();
dialog.StartPosition = FormStartPosition.CenterScreen;
if (dialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
try
{
txtConnect.Text = dialog.Connection.ConnectionString;
}
catch
{
}
}
}
這裡稍值得說明的是為啥要放在一個try里呢,原因是,當你點擊了"Connect"按鈕後,其實這個Dialog只是簡單的返回了一個DialogResult.OK,在調用Dialog.Connection屬性時會嘗試連接數據源,如果你提供的連接選項有問題,那就要報異常了,因此包在一個try...catch中了。