簡單調用VS自帶的數據源選擇對話框實現數據庫連接字符串配置
我們經常在開發應用程序中提供擇數據源和數據連接配置的接口,方便用戶配置數據庫連接字符串。典型的方法是將這些信息寫在配置文件裏,如Web.config或app.config文件裏.
但是客戶並不是專業的編程人員,一不小心就會使連接串寫錯,導致系統無法運行,最好是讓用戶能夠通過一個圖形界面來選擇數據源和數據連接的信息,如下圖:
我們可以通過調用Visual Studio中的數據庫連接配置UI來簡單實現。
具體的實現如下:
首先添加對Microsoft.Data.ConnectionUI.Dialog.dll的引用,這個assembly在VS2005的安裝目錄下,D:/Program Files/Microsoft Visual Studio 8/Common7/IDE下邊,我的VS安裝在D盤,下面是代碼:
引用 Microsoft.Data.ConnectionUI.Dialog.dll 文件
using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.Data.ConnectionUI;
using System.Windows.Forms;
/// <summary>
/// 獲取VS.NET 自帶的數據庫連接對話框的數據庫連接信息
/// </summary>
/// <param name="conn">初始化連接字符串</param>
/// <returns>數據庫連接</returns>
public string GetDatabaseConnectionString(String conn)
{
string connString = String.Empty;
Microsoft.Data.ConnectionUI.DataConnectionDialog connDialog = new Microsoft.Data.ConnectionUI.DataConnectionDialog();
// 添加數據源列表,可以向窗口中添加自己程序所需要的數據源類型 必須增加以下幾項中任一一項
connDialog.DataSources.Add(Microsoft.Data.ConnectionUI.DataSource.AccessDataSource); // Access
connDialog.DataSources.Add(Microsoft.Data.ConnectionUI.DataSource.OdbcDataSource); // ODBC
connDialog.DataSources.Add(Microsoft.Data.ConnectionUI.DataSource.OracleDataSource); // Oracle
connDialog.DataSources.Add(Microsoft.Data.ConnectionUI.DataSource.SqlDataSource); // Sql Server
connDialog.DataSources.Add(Microsoft.Data.ConnectionUI.DataSource.SqlFileDataSource); // Sql Server File
// 初始化
connDialog.SelectedDataSource = Microsoft.Data.ConnectionUI.DataSource.SqlDataSource;
connDialog.SelectedDataProvider = Microsoft.Data.ConnectionUI.DataProvider.SqlDataProvider;
connDialog.ConnectionString = conn;
//只能夠通過DataConnectionDialog類的靜態方法Show出對話框
//不同使用dialog.Show()或dialog.ShowDialog()來呈現對話框
if (Microsoft.Data.ConnectionUI.DataConnectionDialog.Show(connDialog) == DialogResult.OK)
{
connString = connDialog.ConnectionString;
}
return connString;
}
--保存設置:
XmlDocument myDoc = new XmlDocument();
XmlElement myXmlElement;
myDoc.Load(Application.ExecutablePath + ".config");
XmlNode myNode = myDoc.SelectSingleNode("//connectionStrings");
myXmlElement = (XmlElement)myNode.SelectSingleNode("//add [@name='NXY.Properties.Settings.nxyInfoConnectionString']");
myXmlElement.SetAttribute("connectionString", myConnect);
myDoc.Save(Application.ExecutablePath + ".config");