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 CreateStoredProcedure. /// public class CreateStoredProcedure : System.Web.UI.Page { protected System.Web.UI.WebControls.Label ErrorCreatingLabel; protected System.Web.UI.WebControls.Button CreateNewSProcButton; protected System.Web.UI.WebControls.RequiredFieldValidator SProcNameRequiredValidator; protected System.Web.UI.WebControls.TextBox SProcNameTextBox; public CreateStoredProcedure() { Page.Init += new System.EventHandler(Page_Init); } private void Page_Load(object sender, System.EventArgs e) { ErrorCreatingLabel.Visible = false; } private void CreateNewSProcButton_Click(object sender, System.EventArgs e) { if (SProcNameTextBox.Text.Length == 0) { ErrorCreatingLabel.Visible = true; ErrorCreatingLabel.Text = "The new stored procedure name cannot be blank"; return; } 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 databaseName = Request["database"]; ErrorCreatingLabel.Visible = false; server.Connect(); SqlStoredProcedure sproc = server.Databases[databaseName].StoredProcedures[SProcNameTextBox.Text]; // Ensure that SProc doesn't exist yet if (sproc == null) { // Now we have to do a quick check and see if it's a valid name for a stored procedure // The only reliable way to do this is to try to create the stored procedure and see what happens 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; } // In order to find out whether the table name is valid, we create a temporary dummy table // and see what happens. SqlStoredProcedure dummySproc = null; try { dummySproc = database.StoredProcedures.Add(SProcNameTextBox.Text, "CREATE PROCEDURE [" + SProcNameTextBox.Text + "] AS\r\nGO"); } catch (Exception ex) { // Disconnect and show error if (dummySproc != null) dummySproc.Remove(); server.Disconnect(); ErrorCreatingLabel.Visible = true; ErrorCreatingLabel.Text = "There was an error creating the stored procedure:
" + Server.HtmlEncode(ex.Message).Replace("\n", "
"); return; } // Delete the dummy stored procedure dummySproc.Remove(); server.Disconnect(); Response.Redirect(String.Format("EditStoredProcedure.aspx?database={0}&sproc={1}", Server.UrlEncode(databaseName), Server.UrlEncode(SProcNameTextBox.Text))); } else { server.Disconnect(); ErrorCreatingLabel.Visible = true; ErrorCreatingLabel.Text = "A stored procedure with this name already exists."; } } 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.Load += new System.EventHandler(this.Page_Load); CreateNewSProcButton.Click += new System.EventHandler(this.CreateNewSProcButton_Click); } #endregion } }