繁体   English   中英

C#Winform选择要连接的SQL Server和数据库

[英]C# Winform select SQL Server and database to connect to

我正在使用一个带有两个下拉/组合框,一个测试字段和一个按钮的小型c#Winforms应用程序,该应用程序将允许用户选择服务器,数据库,然后输入引用ID并搜索记录。

我正在努力获取组合框,以允许我选择服务器,然后在第二个下拉列表中选择数据库。

我在ApplicatonSettings添加了三台服务器,我只是不知道启动/执行此操作的最佳方法,因此希望提出建议吗?

我将创建一个SettingsForm(具有连接字符串的属性),然后创建一个MainForm,可在其中单击下拉组合框。 将SQL数据源添加到您的项目。

然后执行与此类似的操作来获取实例:

    private List<string> GetSqlInstances(bool serverDiscovery = false)
    {
        if (serverDiscovery && InstancesLoaded) { return null; }
        var serverList = new List<string>();
        InstancesLoaded = true;

        var instance = SqlDataSourceEnumerator.Instance;
        var table = instance.GetDataSources();
        if (table.Rows == null) { return null; }
        foreach (DataRow row in table.Rows)
        {
            serverList.Add(row["ServerName"].ToString());
            if (!string.IsNullOrEmpty(row["InstanceName"].ToString()))
                serverList.Add(row["ServerName"] + "\\" + row["InstanceName"]);
        }

        return serverList;
    }

    #region Database_Combobox

    private void cbxDatabaseName_ButtonPressed(object sender, ButtonPressedEventArgs e)
    {
        cbxDatabaseName.Properties.Items.Clear();
        if (SqlHelper == null) { return; }
        try
        {
            var conStr = SqlHelper.GenerateSqlConnectionString
            (
                cbxSQLInstances?.Text,
                IntegratedSecurity,
                string.Empty,
                txtUserName?.Text,
                txtPassword?.Text
            );

            var con = conStr?.ConnectionString != null ? new SqlConnection(conStr.ConnectionString) : null;

            if (con == null)
                return;

            con.Open();
            var databases = con.GetSchema("Databases");
            if (databases?.Rows != null)
            {
                foreach (DataRow row in databases.Rows)
                    cbxDatabaseName.Properties.Items.Add(row.Field<string>(@"database_name"));
            }
            cbxDatabaseName.ShowPopup();
            con.Close();
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
        }
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM