首页 > 解决方案 > 查询未添加到表中

问题描述

我是网络表单的新手,正在尝试将前端 aspx 页面中的值添加到我的 sql 表中。但是我无法将它添加到表中。它正在打印除 ExecuteNonQuery() 之后的最后一个提示值之外的所有提示值。它也没有打印异常。它没有显示任何提示。

这是CS文件中的代码:

namespace LibraryManagementSystem
{
    public partial class Usersignup : System.Web.UI.Page
    {

        string strcon = ConfigurationManager.ConnectionStrings["con"].ConnectionString;
        protected void Page_Load(object sender, EventArgs e)
        {

        }

        //sign up button click event
        protected void Button1_Click(object sender, EventArgs e)
        {
            Response.Write("<script>alert('Testing');</script>");
           
            try
            {
                SqlConnection con = new SqlConnection(strcon);
                if(con.State == ConnectionState.Closed)
                {
                    con.Open();
                }

                Response.Write("<script>alert('Connection');</script>");

                SqlCommand cmd = new SqlCommand("INSERT INTO dbo.member_master_tbl(full_name,dob,contact_no,email,state,city,pincode," +
                    "full_address,member_id,password,account_status) values" +
                    "(@full_name,@dob,@contact_no,@email,@state,@city,@pincode," +
                    "@full_address,@member_id,@password,@account_status) ", con);

                Response.Write("<script>alert('Query');</script>");

                cmd.Parameters.AddWithValue("(@full_name", Textbox3.Text.Trim());
                cmd.Parameters.AddWithValue("(@dob", Textbox2.Text.Trim());
                cmd.Parameters.AddWithValue("(@contact_no", Textbox1.Text.Trim());
                cmd.Parameters.AddWithValue("(@email", Textbox4.Text.Trim());
                cmd.Parameters.AddWithValue("(@state", DropDownList1.SelectedItem.Value);
                cmd.Parameters.AddWithValue("(@city", Textbox6.Text.Trim());
                cmd.Parameters.AddWithValue("(@pincode", Textbox7.Text.Trim());
                cmd.Parameters.AddWithValue("(@full_address", Textbox5.Text.Trim());
                cmd.Parameters.AddWithValue("(@member_id", Textbox8.Text.Trim());
                cmd.Parameters.AddWithValue("(@password", Textbox9.Text.Trim());
                cmd.Parameters.AddWithValue("(@account_status", "pending");

                Response.Write("<script>alert('Table');</script>");

                cmd.ExecuteNonQuery();
                con.Close();
                Response.Write("<script>alert('Sign Up Successful. Go to User Login to Login');</script>");


            }

            catch (Exception ex)
            {
                Response.Write("<script>alert('" + ex.Message + "');</script>");
            }



        }
    }
}

它在执行非查询之前打印所有响应值

我不明白为什么它不打印最后 2 个响应。请帮忙

标签: c#sqlasp.netbootstrap-4webforms

解决方案


我认为发生的事情是,当您添加参数值时,每个参数名称中的“@”之前都有一个左括号,所以当查询被执行时,它会抛出异常,无法在数据库表中插入记录,并且未能发送最后一个响应。用这个替换你的代码段(删除每一行的左括号):

cmd.Parameters.AddWithValue("@full_name", Textbox3.Text.Trim());
cmd.Parameters.AddWithValue("@dob", Textbox2.Text.Trim());
cmd.Parameters.AddWithValue("@contact_no", Textbox1.Text.Trim());
cmd.Parameters.AddWithValue("@email", Textbox4.Text.Trim());
cmd.Parameters.AddWithValue("@state", DropDownList1.SelectedItem.Value);
cmd.Parameters.AddWithValue("@city", Textbox6.Text.Trim());
cmd.Parameters.AddWithValue("@pincode", Textbox7.Text.Trim());
cmd.Parameters.AddWithValue("@full_address", Textbox5.Text.Trim());
cmd.Parameters.AddWithValue("@member_id", Textbox8.Text.Trim());
cmd.Parameters.AddWithValue("@password", Textbox9.Text.Trim());
cmd.Parameters.AddWithValue("@account_status", "pending");

至于为什么没有发送“catch”块中的响应,异常消息中可能包含一些被解释为 JavaScript 的字符。由于您对“警报”的调用使用单引号,因此如果异常返回的消息中还包含任何单引号,这将终止传递给警报的字符串,并且该引号之后的所有内容都将被视为 JavaScript。


推荐阅读