必须声明标量变量@ TextBox1 asp.net

时间:2017-02-24 17:30:00

标签: c# sql asp.net webforms

这是我为新应用程序的解决方案共享的代码的一部分。

当我执行此代码时,它会抛出异常"必须声明标量变量@ textBox1"

public partial class About : Page
    {
        SqlCommand cmd = new SqlCommand();
        SqlConnection con = new SqlConnection();


        protected void Page_Load(object sender, EventArgs e)
        {
            con.ConnectionString = "Data Source=.;Initial Catalog=carpro;Integrated Security=True";
              con.Open();
        }

        protected void Button1_Click(object sender, EventArgs e)
        {

           SqlCommand cmd = new SqlCommand("Insert into Driver_Registration(Driver_Name,Driver_DOB,Driver_Address,License_Number,National_Insurance_Number,"+
                                            "Email_Address,UK_History,Contact,Occupation,License_Details,Taxi_License_Number,"+
                                            "Deposit_Details,Weekly_Rent) Values (@TextBox1,@TextBox2,@TextBox3,@TextBox4,@TextBox5," +
                                            "@TextBox6,@TextBox7,@TextBox8,@TextBox9,@TextBox10,@TextBox11,@TextBox12,@TextBox13)",con);

            cmd.Parameters.AddWithValue("@Driver_Name",TextBox1.Text);
            cmd.Parameters.AddWithValue("@Driver_DOB", TextBox2.Text);
            cmd.Parameters.AddWithValue("@Driver_Address", TextBox3.Text);
            cmd.Parameters.AddWithValue("@License_Number", TextBox4.Text);
            cmd.Parameters.AddWithValue("@National_Insurance_Number", TextBox5.Text);
            cmd.Parameters.AddWithValue("@Email_Address", TextBox6.Text);
            cmd.Parameters.AddWithValue("@UK_History", TextBox7.Text);
            cmd.Parameters.AddWithValue("@Contact", TextBox8.Text);
            cmd.Parameters.AddWithValue("@Occupation", TextBox9.Text);
            cmd.Parameters.AddWithValue("@License_Details", TextBox10.Text);
            cmd.Parameters.AddWithValue("@Taxi_License_Number", TextBox11.Text);
            cmd.Parameters.AddWithValue("@Deposit_Details", TextBox12.Text);
            cmd.Parameters.AddWithValue("@Weekly_Rent", TextBox13.Text);
            cmd.ExecuteNonQuery();

            Label1.Text = "Registration Successfull";

            con.Close();
        }


    }

2 个答案:

答案 0 :(得分:1)

您在INSERT声明中使用的参数与您在cmd.Parameters.AddWithValue(..)中创建的参数不同。将INSERT参数替换为您实际创建的参数,例如@Driver_Name

另外,你应该移动你的

con.ConnectionString = "Data Source=.;Initial Catalog=carpro;Integrated Security=True";
con.Open();

按下按钮。基本上,您只打开一次连接,然后在按钮单击时关闭它。目前,没有重新启动应用程序就无法重新打开连接。

或者更好的是将其分割成自己的类/函数。 或者更好的是,在web.config中设置连接字符串,并使用依赖注入从那里调用它。

答案 1 :(得分:0)

在查询中

指定参数:

VALUES(@Driver_Name,......

你有两个选择

1您可以将查询更改为:

cmd.Parameters.AddWithValue("@TextBox1",TextBox1.Text); ...

2您可以将AddWithValue更改为:

<Master Name='gamma'> <Par1 Name='name1'> <Value>0.</Value> <Fix>1</Fix> </Par1> <Par2 Name='name2'> <Value>0.</Value> <Fix>1</Fix> </Par2> </Master>