110 lines
3.1 KiB
C#
110 lines
3.1 KiB
C#
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
|
|
}
|
|
}
|