using System; using System.Data; using System.Data.Sql; using System.Data.SqlClient; using System.Windows.Forms; 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) { ListViewItem item = lsvServidores.Items.Add((String)dr["ServerName"]); item.SubItems.Add((dr["InstanceName"] == DBNull.Value) ? string.Empty : (String)dr["InstanceName"]); item.SubItems.Add((dr["Version"] == DBNull.Value) ? "???" : (String) dr["Version"]); } } private void lsvServidores_SelectedIndexChanged(object sender, EventArgs e) { if (lsvServidores.SelectedItems.Count > 0) { ListViewItem item = lsvServidores.SelectedItems[0]; txtServidor.Text = String.IsNullOrEmpty(item.SubItems[1].Text) ? item.SubItems[0].Text : String.Format("{0}/{1}", item.SubItems[0].Text, item.SubItems[1].Text); } } private void btnListarBBDD_Click(object sender, EventArgs e) { // Obtener todas las bases de datos var cnx = new SqlConnection(BuildConnectionString()); 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) return; // Llamar a la venta de la base de datos var frm = new FrmBaseDatos(BuildConnectionString()); FrmPrincipal.AddForm(frm); } private string BuildConnectionString() { // Construir cadena de conexion var constructor = new SqlConnectionStringBuilder(); constructor.DataSource = (!string.IsNullOrEmpty(txtServidor.Text)) ? txtServidor.Text : "localhost"; if (lsvBBDD.SelectedItems.Count > 0) { constructor.InitialCatalog = lsvBBDD.SelectedItems[0].SubItems[0].Text; } if (String.IsNullOrEmpty(txtUsuario.Text)) { constructor.IntegratedSecurity = true; } else { constructor.UserID = txtUsuario.Text; constructor.Password = TxtContrasenha.Text; } return constructor.ConnectionString; } } }