当前位置:Gxlcms > mysql > 仿VS的AddConnection功能,获取服务器列表及数据库列表

仿VS的AddConnection功能,获取服务器列表及数据库列表

时间:2021-07-01 10:21:17 帮助过:20人阅读

VS中有Add Connection功能的界面,能够搜索到局域网内的服务器,连接上服务器后能够根据用户名和密码获得数据库的列表。看似很复杂的一个功能,其实很简单。 1、获取服务器列表。 VS中提供了SqlDataSourceEnumerator类,命名空间为System.Data.Sql,直接调用

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

1、获取服务器列表。

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

代码奉上:

  1. private void GetServerName()
  2. {
  3. List<string> serverList = new List<string>();
  4. DataTable dataTable = SqlDataSourceEnumerator.Instance.GetDataSources();
  5. DataRow[] rows = dataTable.Select("", "ServerName,InstanceName Asc");
  6. foreach (DataRow row in rows)
  7. {
  8. string server = row["ServerName"].ToString();
  9. if (string.IsNullOrEmpty(row["InstanceName"].ToString()) == false)
  10. {
  11. server = server + "\\" + row["InstanceName"].ToString();
  12. }
  13. serverList.Add(server);
  14. }
  15. this.SetComboBoxItemSource(cbServer, serverList);
  16. }
  17. </string></string>

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

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

代码奉上:

  1. private void GetDataBasesName()
  2. {
  3. List<string> dataBaseList = new List<string>();</string></string>
  1.      //获取服务器、用户名和密码,可以自己改改参数。
  2. string server = this.GetControlText(this.cbServer);
  3. string uid = this.GetControlText(this.txtUid);
  4. string pwd = this.GetControlText(this.pbPwd);
  5. string connString = string.Format("server={0};database=master;uid={1};pwd={2}", server, uid, pwd);
  6. string sql = "select name from SYSDATABASES order by name";
  7. SqlConnection conn = new SqlConnection(connString);
  8. try
  9. {
  10. conn.Open();
  11. SqlCommand cmd = new SqlCommand(sql, conn);
  12. SqlDataReader reader = cmd.ExecuteReader();
  13. while (reader.Read())
  14. {
  15. dataBaseList.Add(reader[0].ToString());
  16. }
  17. }
  18. catch (Exception)
  19. {
  20. //throw;
  21. }
  22. finally
  23. {
  24. conn.Close();
  25. }
  26. this.SetComboBoxItemSource(this.cbDataBase, dataBaseList);
  27. }

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

人气教程排行