2016-08-31 11 views
-1

Я создаю приложение, в котором храню свои входы (имя, возраст, телефон) из текстового поля, и когда я нажимаю Submit, он должен хранить все, что я вход на текстовое поле в базу данных, но я получаю эту ошибку.Ошибка «System.Data.SqlClient.SqlException» произошла при попытке отладки приложения

исключения типа «System.Data.SqlClient.SqlException» произошло в System.Data.dll, но не был обработан в пользовательском коде. Дополнительная информация: Неправильный синтаксис рядом с ключевым словом «Таблица».

Вот код:

protected void Button1_Click(object sender, EventArgs e) 
    { 
     String p = UniqueNumber(); 
     SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings 
      ["ConnectionString"].ConnectionString); 
     con.Open(); 
     String str = "insert into Table(uniqueno, name, age, number) values('" 
      + Label1.Text + "','" + txtName.Text + "','" + txtAge.Text + "','" + txtNumber.Text + "')"; 
     SqlCommand cmd = new SqlCommand(str, con); 
     cmd.ExecuteNonQuery(); 
     con.Close(); 
     Session["id"] = Label1.Text; 
     Session["name"] = txtName.Text; 
     try 
     { 
      Response.Redirect("unique.aspx"); 
     } 
     catch 
     { 
      Label1.Text = "Please enter correct details...."; 
      this.Label1.ForeColor = Color.Red; 
     } 
    } 
+2

sql injection Уязвимость. использовать параметризованные запросы –

+0

Вы действительно имеете в виду, что ошибка возникает только при попытке отладки приложения, а не при его запуске? Если это происходит при любом запуске, измените свой вопрос на «при попытке вставить в таблицу» –

+0

также измените эту строку «Response.Redirect (« unique.aspx »);' to 'Response.Redirect (« ~ unique.aspx »)); также я надеюсь, что вы знакомы с PostBacks и как они работают. Убедитесь, что при отладке, что значения, которые вы передаете в команду SQL Insert, не являются нулевыми или пустыми и читаются на 'Parameterized Query's', и как их использовать и если 'Table' - это имя, то скопируйте его вокруг скобок, как этот' [Table] ', поскольку Table является зарезервированным Word в SQL – MethodMan

ответ

0

"Table" это ключевое слово, хотя вы можете хранить данные в таблице, я не думаю, что SQL-сервер позволит вам запросить это.

Удивительно, но это позволяет нам иметь таблицу с именем Table, но когда мы пытаемся выбрать ее, она выдает ошибку. И, как сказал цветок @seth, попробуйте избежать уязвимостей SQL-инъекций.

enter image description here

Смежные вопросы