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.Collections; namespace ServerExplorer.UI { public partial class FrmProcedimientos : Form { #region Declarations private string cnxString; private SqlConnection cnx; #endregion #region Form life cycle public FrmProcedimientos(string cnxString) { InitializeComponent(); this.cnxString = cnxString; cnx = new SqlConnection(cnxString); } private void frmProcedimientos_Load(object sender, EventArgs e) { LoadProcedures(); } #endregion #region Events private void lsvProcs_SelectedIndexChanged(object sender, EventArgs e) { if (lsvProcs.SelectedItems.Count <= 0) { return; } string schema, name; name = lsvProcs.SelectedItems[0].SubItems[0].Text; schema = lsvProcs.SelectedItems[0].SubItems[1].Text; LoadProcedure(schema, name); } private void btnRefresh_Click(object sender, EventArgs e) { LoadProcedures(); } #endregion #region Private methods private void LoadProcedures() { DataTable dt; SqlDataAdapter da; // Obtener un datatable con todos los procedimientos de la base de datos. da = new SqlDataAdapter( "SELECT ROUTINE_NAME Name, ROUTINE_SCHEMA [Schema], CREATED CreateDate, ROUTINE_TYPE [Type] FROM INFORMATION_SCHEMA.ROUTINES", cnx); dt = new DataTable(); cnx.Open(); da.Fill(dt); cnx.Close(); // Mostrar todos los procedimientos lsvProcs.Items.Clear(); foreach (DataRow dr in dt.Rows) { ListViewItem item = lsvProcs.Items.Add((String)dr["Name"]); item.SubItems.Add((string)dr["Schema"]); item.SubItems.Add(((DateTime)dr["CreateDate"]).ToShortDateString()); item.SubItems.Add((string)dr["Type"]); } } private void LoadProcedure(string schema, string name) { DataTable dt; SqlDataAdapter da; da = new SqlDataAdapter("SELECT ROUTINE_DEFINITION from INFORMATION_SCHEMA.ROUTINES WHERE ROUTINE_NAME=@Name AND ROUTINE_SCHEMA=@Schema", cnx); da.SelectCommand.Parameters.AddWithValue("@Name", name); da.SelectCommand.Parameters.AddWithValue("@Schema", schema); dt = new DataTable(); cnx.Open(); da.Fill(dt); cnx.Close(); // Mostrar el contenido del procedimiento txtProc.Text = String.Empty; foreach (DataRow dr in dt.Rows) { txtProc.Text += ((string)dr[0]).Replace("\r", "").Replace("\n", "\r\n"); } } #endregion } }