zoukankan      html  css  js  c++  java
  • 仿VS的Add Connection功能,获取服务器列表及数据库列表

         VS中有Add Connection功能的界面,能够搜索到局域网内的服务器,连接上服务器后能够根据用户名和密码获得数据库的列表。看似很复杂的一个功能,其实很简单。

    1、获取服务器列表。

    VS中提供了SqlDataSourceEnumerator类,命名空间为System.Data.Sql,直接调用GetDataSource()方法,即可或得服务器列表的DataTable。

    代码奉上:

            private void GetServerName()
            {
                List<string> serverList = new List<string>();
    
                DataTable dataTable = SqlDataSourceEnumerator.Instance.GetDataSources();
    
                DataRow[] rows = dataTable.Select("", "ServerName,InstanceName Asc");
    
                foreach (DataRow row in rows)
                {
                    string server = row["ServerName"].ToString();
                    if (string.IsNullOrEmpty(row["InstanceName"].ToString()) == false)
                    {
                        server = server + "\\" + row["InstanceName"].ToString();
                    }
    
                    serverList.Add(server);
                }
    
                this.SetComboBoxItemSource(cbServer, serverList);
            }
    

     2、获取数据库的所有数据库列表。

    这个比较简单,连接上服务器后,连接master数据库,通过查询systemdatabases就可以了。

    代码奉上:

            private void GetDataBasesName()
            {
                List<string> dataBaseList = new List<string>();
              //获取服务器、用户名和密码,可以自己改改参数。
                string server = this.GetControlText(this.cbServer);
                string uid = this.GetControlText(this.txtUid);
                string pwd = this.GetControlText(this.pbPwd);
    
                string connString = string.Format("server={0};database=master;uid={1};pwd={2}", server, uid, pwd);
                string sql = "select name from SYSDATABASES order by name";
    
                SqlConnection conn = new SqlConnection(connString);
                try
                {
                    conn.Open();
                    SqlCommand cmd = new SqlCommand(sql, conn);
                    SqlDataReader reader = cmd.ExecuteReader();
    
                    while (reader.Read())
                    {
                        dataBaseList.Add(reader[0].ToString());
                    }
                }
                catch (Exception)
                {
                    //throw;
                }
                finally
                {
                    conn.Close();
                }
    
                this.SetComboBoxItemSource(this.cbDataBase, dataBaseList);
            }
    

    如有不当之处,还请大家多多指教。

  • 相关阅读:
    IDL---ENVI
    IDL基础
    IDL_GUI
    .Net MVC+bootstrap Table学习
    .Net中的加密解密
    Linux服务器上安装织梦CMS
    数据仓储之DLL层接口设计
    js获取新浪天气接口
    js动态生成二维码图片
    Jquery点击发送按钮后,按钮文本倒计时
  • 原文地址:https://www.cnblogs.com/sshoub/p/2366072.html
Copyright © 2011-2022 走看看