是否有用于构造ADO.Net连接字符串(可重新分发)的标准对话框?

时间:2009-10-14 17:37:53

标签: ado.net dialog connection-string

我想使用标准对话框来请求ADO.net连接字符串的用户输入。这里描述的oledb连接字符串很简单: MSDN Article on MSDASC.DataLinks().Prompt

我还发现了一些使用VS.(HOWTO: Using the Choose Data Source dialog of Visual Studio 2005 from your own code)的Microsoft.Data.ConnectionUI.dll和MicrosoftData.ConnectionUI.Dialog.dll的示例。

不幸的是,这些DLL没有获得重新分发的许可。

是否有标准对话框用于选择可与我的应用程序一起分发的数据源?

5 个答案:

答案 0 :(得分:3)

答案 1 :(得分:2)

现在可以使用这些DLL的源代码:http://blogs.msdn.com/b/vsdata/archive/2010/02/02/data-connection-dialog-source-code-is-released-on-code-gallery.aspx

您也可以使用DataLink属性以编程方式执行此操作:

在Visual Studio参考选项卡的COM选项卡中添加对ADODB.DLL(来自.NET参考)和Microsoft OLE DB服务组件1.0类型库的引用。

using ADODB;
using Microsoft.Win32;
public partial class ConnectionStringStep : Form
    {
        private const string MSSQL_PROVIDER = "Provider=SQLOLEDB.1";

        private const string ORACLE_PROVIDER = "Provider=MSDAORA.1";

        private const string MSSQL = "MSSQL";

        public ConnectionStringStep()
        {
            InitializeComponent();
        }


        private static string DataBaseType()
        {
            //get the data from some previous screen or some kind of storage
            return MyStorage.GetProperty("DATABASE_TYPE") ?? "MSSQL";
        }

        private void button1_Click(object sender, EventArgs e)
        {
            var dataBaseType = DataBaseType();

            var adodbConnection = new Connection
                                      {
                                          ConnectionString = dataBaseType == MSSQL ? MSSQL_PROVIDER : ORACLE_PROVIDER
                                      };

            object connection = (object) adodbConnection;

            var dialog = new MSDASC.DataLinks();

            dialog.PromptEdit(ref connection);

            connectionTextBox.Text = adodbConnection.ConnectionString;
        }
    }

DataLink Properties Reference

答案 2 :(得分:1)

微软现在提供了一个提供此对话框的NuGet包:

DataConnectionDialog

样本用法:

var dialog = new DataConnectionDialog();
dialog.DataSources.Add(DataSource.SqlDataSource);
dialog.ConnectionString = connectionString;

if (DataConnectionDialog.Show(dialog) == System.Windows.Forms.DialogResult.OK)
{
    connectionString = dialog.ConnectionString;
}

答案 3 :(得分:0)

它是相关的,但我现在确定如何在应用程序中嵌入此行为。

每次我需要一个,我创建一个空文本文件,将其文件扩展名更改为“.udl”并双击它;当我完成后,我关闭该应用程序,将该文件重命名为“.txt”并使用记事本打开。

答案 4 :(得分:0)

看来这样的野兽不存在。我已经编写了自己的对话框,可以根据需要将其包含在项目中。


<强>更新

这些DLL的源代码现在可以根据@ code4life的答案获得。