using System; using System.Collections; using System.ComponentModel; using System.Data; using System.Drawing; using System.Web; using System.Web.SessionState; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.HtmlControls; using SqlAdmin; namespace SqlWebAdmin { /// /// Summary description for EditStoredProcedure. /// public class EditStoredProcedure : System.Web.UI.Page { protected System.Web.UI.WebControls.TextBox SProcTextTextbox; protected System.Web.UI.WebControls.Button SaveButton; protected System.Web.UI.WebControls.Label SProcNameLabel; protected System.Web.UI.WebControls.Label SProcOwnerLabel; protected System.Web.UI.WebControls.Label SProcCreateDateLabel; protected System.Web.UI.WebControls.Button CancelButton; protected System.Web.UI.WebControls.Label ErrorLabel; public EditStoredProcedure() { Page.Init += new System.EventHandler(Page_Init); } private void Page_Load(object sender, System.EventArgs e) { HttpCookie cookie = Request.Cookies["WebDataAdministrator"]; if (cookie == null) Response.Redirect("default.aspx?error=sessionexpired"); SqlServer server = new SqlServer(cookie.Values["server"], cookie.Values["username"], cookie.Values["password"]); string sprocName = Request["sproc"]; if (!IsPostBack) { // Check to see if SProc is new or it already exists server.Connect(); SqlDatabase database = server.Databases[Request["database"]]; if (database == null) { server.Disconnect(); // Database doesn't exist - break out and go to error page Response.Redirect(String.Format("error.aspx?error={0}", 1000)); return; } SqlStoredProcedure sproc = database.StoredProcedures[sprocName]; if (sproc == null) { // SProc is new, create template SProcNameLabel.Text = Server.HtmlEncode(sprocName); SProcOwnerLabel.Text = ""; SProcCreateDateLabel.Text = ""; SProcTextTextbox.Text = String.Format("CREATE PROCEDURE [dbo].[{0}] AS", sprocName); } else { // SProc already exists, load it from database SProcNameLabel.Text = Server.HtmlEncode(sproc.Name); SProcOwnerLabel.Text = Server.HtmlEncode(sproc.Owner); SProcCreateDateLabel.Text = Server.HtmlEncode(Convert.ToString(sproc.CreateDate)); SProcTextTextbox.Text = sproc.Text; } server.Disconnect(); } } private void Page_Init(object sender, EventArgs e) { // // CODEGEN: This call is required by the ASP.NET Web Form Designer. // InitializeComponent(); } #region Web Form Designer generated code /// /// Required method for Designer support - do not modify /// the contents of this method with the code editor. /// private void InitializeComponent() { this.SaveButton.Click += new System.EventHandler(this.SaveButton_Click); this.CancelButton.Click += new System.EventHandler(this.CancelButton_Click); this.Load += new System.EventHandler(this.Page_Load); } #endregion private void SaveButton_Click(object sender, System.EventArgs e) { HttpCookie cookie = Request.Cookies["WebDataAdministrator"]; if (cookie == null) Response.Redirect("default.aspx?error=sessionexpired"); SqlServer server = new SqlServer(cookie.Values["server"], cookie.Values["username"], cookie.Values["password"]); string sprocName = Request["sproc"]; bool success = true; server.Connect(); Exception ex = null; try { // Check to see if SProc is new or it already exists SqlDatabase database = server.Databases[Request["database"]]; if (database == null) { server.Disconnect(); // Database doesn't exist - break out and go to error page Response.Redirect(String.Format("error.aspx?error={0}", 1000)); return; } SqlStoredProcedureCollection sprocs = database.StoredProcedures; SqlStoredProcedure sproc = sprocs[sprocName]; if (sproc == null) { // SProc is new, so create entirely new SProc (don't care about return value) sprocs.Add(sprocName, SProcTextTextbox.Text); } else { // SProc already exists, just update its text sproc.Text = SProcTextTextbox.Text; } } catch (Exception ex2) { ex = ex2; success = false; } server.Disconnect(); if (success) { // Redirect back to SProc page Response.Redirect("StoredProcedures.aspx?database=" + Server.UrlEncode(Request["database"])); } else { // show error ErrorLabel.Visible = true; ErrorLabel.Text = "There was an error saving the stored procedure.
" + Server.HtmlEncode(ex.Message).Replace("\n", "
"); } } private void CancelButton_Click(object sender, System.EventArgs e) { Response.Redirect("StoredProcedures.aspx?database=" + Server.UrlEncode(Request["database"])); } } }