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
}
}