Tuesday, July 10, 2012

Add Venue Stored Procedure and Web Form

Here is the stored procedure we created in SQL Server. For this to work, there must be a schema named Venue and a role called VenueRole. The venue roll must gran exec on the Venue Schema and select and insert on the Venue table. (Sorry for naming them the same, a mental fart on my part.)

Some of the parameters have default values. this allows us to skip them. (Specifically VenueAddress1, and VenueDescription)


/*Add new a new venue
Check to make sure the venue doesn't already exist
*/
Go
--this procedure uses the venue schema
--also proc is the same as procedure
Create procedure Venue.usp_AddVenue
@VenueName nvarchar(255),
@VenueAddress1 nvarchar(255) =null, 
@VenueAddress2 nvarchar(255), 
@VenueCity nvarchar(255), 
@VenueState nchar(2) ='WA', 
@VenuePhone nchar(10), 
@VenueCapacity int, 
@VenueAgeRestriction  bit =0, 
@VenueDescription xml =null, 
@VenueURL nvarchar(255)
AS
If not Exists
 (Select VenueName 
  From Venue
  Where VenueAddress2=@VenueAddress2
  And VenueCity=@VenueCity
  And VenueState=@VenueState)
Begin
 Insert into Venue(VenueName, VenueAddress1, VenueAddress2, VenueCity, VenueState, VenuePhone, VenueCapacity, VenueAgeRestriction, VenueDescription, VenueURL)
Values ( @VenueName, @VenueAddress1, @VenueAddress2, 
@VenueCity, @VenueState, 
@VenuePhone, @VenueCapacity, 
@VenueAgeRestriction, 
@VenueDescription, @VenueURL)
return 1 
End
Else
Begin
Print 'The venue already exists'
return 0
End
Go 
Exec Venue.usp_AddVenue
@VenueName ='Comet Tavern', 
@VenueAddress1=null, 
@VenueAddress2='922 Pike', 
@VenueCity='Seattle', 
@VenueState='Wa', 
@VenuePhone='2065551200', 
@VenueCapacity=99, 
@VenueAgeRestriction=true, 
@VenueURL='http://www.cometTavern.com'

Select * From Venue

Delete From Venue where VenueID=5

Next we created a web site that uses the schema. We made a form (an ugly one, to be sure) to add a new venue. It will call the stored procedure. Here is the Html and asp source code for the form


<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
    <p>
        <asp:Label ID="Label1" runat="server" Text="Enter Venue Name"></asp:Label>
        <asp:TextBox ID="txtVenueName" runat="server"></asp:TextBox>
      </p>
      <p>
        <asp:Label ID="Label2" runat="server" Text="Enter Venue Address"></asp:Label>
        <asp:TextBox ID="txtAddress" runat="server"></asp:TextBox>
      </p>

      <p>
        <asp:Label ID="Label3" runat="server" Text="Enter City"></asp:Label>
        <asp:TextBox ID="txtCity" runat="server"></asp:TextBox>
      </p>


      <p>
        <asp:Label ID="Label4" runat="server" Text="State"></asp:Label>
        <asp:TextBox ID="txtState" runat="server"></asp:TextBox>
      </p>

      <p>
        <asp:Label ID="Label5" runat="server" Text="Enter Venue Phone"></asp:Label>
        <asp:TextBox ID="txtPhone" runat="server"></asp:TextBox>
      </p>

      <p>
        <asp:Label ID="Label6" runat="server" Text="Enter Venue Capacity"></asp:Label>
        <asp:TextBox ID="txtCapacity" runat="server"></asp:TextBox>
      </p>
      <p>

        <asp:DropDownList ID="ddlAgeRestriction" runat="server">
        <asp:ListItem Text="Choose Age Restriction" />
        <asp:ListItem Text="yes" Value="1" />
        <asp:ListItem Text="no" Value="0" />
        </asp:DropDownList></p>
        <p>
        <asp:Label ID="Label7" runat="server" Text="Enter Venue URL"></asp:Label>
        <asp:TextBox ID="txtUrl" runat="server"></asp:TextBox>
        </p>
        <p>
        <asp:Button ID="Button1" runat="server" Text="Submit" onclick="Button1_Click" /><asp:Label ID="lblResult" runat="server"
            Text="Label"></asp:Label>
            </p>
    </div>
    </form>
</body>
</html>


Here is the code that connects to the database and calls the stored procedure


using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.SqlClient;


public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }
    protected void Button1_Click(object sender, EventArgs e)
    {
        //ADO 1)make a connection
        //command object passes the sql to the server 
        //get all the values from the form

        //here we create a connection string that connects to the server
        //it contains the name of the server, the database and login information
        SqlConnection connect = new SqlConnection
            ("Data Source=localhost;initial catalog=VenueTracker;user=VenuLogin;password=password");

        //the command object passes sql to the server
        SqlCommand cmd = new SqlCommand();
        //it is going to use the connect object to get to the database
        cmd.Connection = connect;
        //we are going to use a stored procedure
        cmd.CommandType = CommandType.StoredProcedure;
        //here is the name of stored procedure
        cmd.CommandText = "usp_AddVenue";
        //We must provide a value for every parameter of the stored procedure
        //which does not have a default value
        cmd.Parameters.AddWithValue("@VenueName", txtVenueName.Text);
        cmd.Parameters.AddWithValue("@VenueAddress2", txtAddress.Text);
        cmd.Parameters.AddWithValue("@VenueCity", txtCity.Text);
        cmd.Parameters.AddWithValue("@VenueState", txtState.Text);
        cmd.Parameters.AddWithValue("@VenuePhone", txtPhone.Text);
        cmd.Parameters.AddWithValue("@VenueCapacity", int.Parse(txtCapacity.Text));
        cmd.Parameters.AddWithValue("@VenueAgeRestriction",int .Parse(ddlAgeRestriction.SelectedValue));
        cmd.Parameters.AddWithValue("@VenueURL", txtUrl.Text);

        //we open the connection
        connect.Open();
        //execute the stored procedure
        int x=cmd.ExecuteNonQuery();

        //check the results
        if (x == 1)
            lblResult.Text = "Venue successfully Entered";
        else
            lblResult.Text = "Problems abound";

        connect.Close();

    }
}

No comments:

Post a Comment