using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Data.Sql; using System.Data.SqlClient; using System.Data.SqlTypes; namespace ServerExplorer.UI { public partial class FrmServidores : Form { public FrmServidores() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { } private void btnListarServidores_Click(object sender, EventArgs e) { // Obtener listado de servidores SqlDataSourceEnumerator enumerador = SqlDataSourceEnumerator.Instance; DataTable servidores = enumerador.GetDataSources(); lsvServidores.Items.Clear(); lsvBBDD.Items.Clear(); foreach (DataRow dr in servidores.Rows) { // Nombre del servidor ListViewItem item = lsvServidores.Items.Add((String)dr["ServerName"]); // Nombre de la instancia if (dr["InstanceName"] == System.DBNull.Value) { item.SubItems.Add(""); } else { item.SubItems.Add((String)dr["InstanceName"]); } // Numero de version if (dr["Version"] == System.DBNull.Value) { item.SubItems.Add("???"); } else { item.SubItems.Add((String)dr["Version"]); } } } private void lsvServidores_SelectedIndexChanged(object sender, EventArgs e) { if (lsvServidores.SelectedItems.Count > 0) { ListViewItem item = lsvServidores.SelectedItems[0]; if (item.SubItems[1].Text.CompareTo("") == 0) { // Servidor sin subinstancias txtServidor.Text = item.SubItems[0].Text; } else { // Servidor con subinstancias txtServidor.Text = item.SubItems[0].Text + "/" + item.SubItems[1].Text; } } } private void btnListarBBDD_Click(object sender, EventArgs e) { // Construir cadena de conexion SqlConnectionStringBuilder constructor = new SqlConnectionStringBuilder(); constructor.DataSource = txtServidor.Text; if (String.IsNullOrEmpty(txtUsuario.Text)) { constructor.IntegratedSecurity = true; } else { constructor.UserID = txtUsuario.Text; constructor.Password = TxtContrasenha.Text; } // Obtener todas las bases de datos SqlConnection cnx = new SqlConnection(constructor.ConnectionString); cnx.Open(); DataTable dt = cnx.GetSchema("Databases"); cnx.Close(); // Mostrar bases de datos lsvBBDD.Items.Clear(); foreach (DataRow dr in dt.Rows) { ListViewItem item = lsvBBDD.Items.Add((String)dr["database_name"]); item.SubItems.Add(((DateTime)dr["create_date"]).ToShortDateString()); } } private void lsvBBDD_DoubleClick(object sender, EventArgs e) { if (lsvBBDD.SelectedItems.Count == 1) { // Construir cadena de conexion final SqlConnectionStringBuilder constructor = new SqlConnectionStringBuilder(); constructor.DataSource = (!string.IsNullOrEmpty(txtServidor.Text)) ? txtServidor.Text : "localhost"; constructor.InitialCatalog = (String)lsvBBDD.SelectedItems[0].SubItems[0].Text; if (txtUsuario.Text.CompareTo("") == 0) { constructor.IntegratedSecurity = true; } else { constructor.UserID = txtUsuario.Text; constructor.Password = TxtContrasenha.Text; } // Llamar a la venta de la base de datos FrmBaseDatos frm = new FrmBaseDatos(constructor.ConnectionString); frm.MdiParent = this.MdiParent; frm.Show(); } } } }