Okay so I've just written my own "add a book to the database" ASP.net page that looks like so:
<div class="addbook"><br />If you feel that we've forgotten a book that you love, please fill out this form below to help us keep the site fresh and dynamic! <h3>Title:</h3><asp:TextBox ID="tb_booktitle" runat="server"></asp:TextBox> <h3>Author:</h3><asp:TextBox ID="tb_bookauthor" runat="server"></asp:TextBox> <h3>Publication Date:</h3><asp:TextBox ID="tb_bookpubyear" runat="server" ></asp:TextBox> <asp:CompareValidator ID="CompareValidatorTextBox1" runat="server" ControlToValidate="tb_bookpubyear" Type="Date" Operator="DataTypeCheck" ErrorMessage="Date must be in the DD/MM/YYYY format)" ForeColor="Red" /> <h3>Number of Pages:</h3><asp:TextBox ID="tb_bookpages" runat="server"></asp:TextBox><asp:RangeValidator ID="RangeValidator1" runat="server" ControlToValidate="tb_bookpages" ErrorMessage="Please enter a number." ForeColor="Red" MaximumValue="9999999" MinimumValue="1" SetFocusOnError="True"></asp:RangeValidator> <h3>Publisher:</h3><asp:TextBox ID="tb_publisher" runat="server"></asp:TextBox> <h3>Book Cover:</h3> <asp:FileUpload ID="fu_picture" runat="server" /> <h3>Your Rating:</h3> <p> <asp:RadioButtonList ID="rbl_Stars" runat="server" RepeatDirection="Horizontal" Width="142px"> <asp:ListItem>1</asp:ListItem> <asp:ListItem>2</asp:ListItem> <asp:ListItem>3</asp:ListItem> <asp:ListItem>4</asp:ListItem> <asp:ListItem>5</asp:ListItem> </asp:RadioButtonList> </p> <p> <asp:Button ID="btn_submission" runat="server" Text="Upload Book!" /> </p>
And the code behind:
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load End Sub Protected Sub btn_submission_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btn_submission.Click Dim myGUID = Guid.NewGuid() Dim newFileName As String = myGUID.ToString() & ".jpg" Dim fileLocationOnServerHardDisk = Request.MapPath("img/thumb") & "/" & newFileName fu_picture.SaveAs(fileLocationOnServerHardDisk) Dim oleDbConn As New OleDb.OleDbConnection(ConfigurationManager.ConnectionStrings("BookMeetConnString").ConnectionString) Dim SqlString As String = "Insert into booklist(Title,Author,PublicationDate,Pages,Publisher,imgurl,AverageRating) Values (@f1,@f2,@f3,@f4,@f5,@f6,@f7)" Dim cmd As OleDbCommand = New OleDbCommand(SqlString, oleDbConn) cmd.CommandType = CommandType.Text cmd.Parameters.AddWithValue("@f1", tb_booktitle.Text) cmd.Parameters.AddWithValue("@f2", tb_bookauthor.Text) cmd.Parameters.AddWithValue("@f3", tb_bookpubyear.Text) cmd.Parameters.AddWithValue("@f4", tb_bookpages.Text) cmd.Parameters.AddWithValue("@f5", tb_publisher.Text) cmd.Parameters.AddWithValue("@f6", "img/thumb/" & newFileName) cmd.Parameters.AddWithValue("@f7", rbl_Stars.SelectedValue) oleDbConn.Open() cmd.ExecuteNonQuery() Response.Redirect("detail.aspx?ID={0}") End Sub Protected Sub rbl_Stars_SelectedIndexChanged(ByVal sender As Object, ByVal e As EventArgs) Handles rbl_Stars.SelectedIndexChanged End Sub End Class
As you can see in the code behind above, once the connection to the database has been made, i want to redirect to the detail.aspx (which is a page showing a single book record from the database and associated content) using a query string to show the record that was just added . But I receive an error like so:
Input string was not in a correct format. Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: System.FormatException: Input string was not in a correct format.
Source Error:
An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.
Stack Trace:
[FormatException: Input string was not in a correct format.]
System.Number.StringToNumber(String str, NumberStyles options, NumberBuffer& number, NumberFormatInfo info, Boolean parseDecimal) +10722195 System.Number.ParseInt32(String s, NumberStyles style, NumberFormatInfo info) +145
System.String.System.IConvertible.ToInt32(IFormatProvider provider) +46 System.Convert.ChangeType(Object value, TypeCode typeCode, IFormatProvider provider) +297
System.Web.UI.WebControls.Parameter.GetValue(Object value, String defaultValue, TypeCode type, Boolean convertEmptyStringToNull, Boolean ignoreNullableTypeChanges) +126
System.Web.UI.WebControls.Parameter.GetValue(Object value, Boolean ignoreNullableTypeChanges) +63
System.Web.UI.WebControls.Parameter.get_ParameterValue() +40
System.Web.UI.WebControls.ParameterCollection.GetValues(HttpContext context, Control control) +247
System.Web.UI.WebControls.SqlDataSourceView.InitializeParameters(DbCommand command, ParameterCollection parameters, IDictionary exclusionList) +257 System.Web.UI.WebControls.SqlDataSourceView.ExecuteSelect(DataSourceSelectArguments arguments) +589
System.Web.UI.DataSourceView.Select(DataSourceSelectArguments arguments, DataSourceViewSelectCallback callback) +21
System.Web.UI.WebControls.DataBoundControl.PerformSelect() +138
System.Web.UI.WebControls.BaseDataBoundControl.DataBind() +30
System.Web.UI.WebControls.GridView.DataBind() +4
System.Web.UI.WebControls.BaseDataBoundControl.EnsureDataBound() +105 System.Web.UI.WebControls.CompositeDataBoundControl.CreateChildControls() +75 System.Web.UI.Control.EnsureChildControls() +83 System.Web.UI.Control.PreRenderRecursiveInternal() +42
System.Web.UI.Control.PreRenderRecursiveInternal() +168
System.Web.UI.Control.PreRenderRecursiveInternal() +168
System.Web.UI.Control.PreRenderRecursiveInternal() +168
System.Web.UI.Control.PreRenderRecursiveInternal() +168
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +974
How would I go about achieving what I am trying to do?