2014-11-27 2 views
2

Я сделал эту форму для вставки информации в базу данных. Я не знаю, откуда исходит ошибка. Он не вставляет информацию из полей ввода в базу данных.Данные из поля ввода, не вставляемого в базу данных

Вот мой код:

Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click 
     Dim id, name, description, code, cat_industry, cat_theme, cat_occasion, cat_budget As String 
     id = product_id.Text 
     name = product_name.Text 
     description = product_description.Text 
     code = item_code.Text 
     cat_industry = industry.SelectedValue 
     cat_theme = theme.SelectedValue 
     cat_occasion = occasion.SelectedValue 
     cat_budget = budget.SelectedValue 

     Try 
      Dim str1 As String = "insert into product (ID, Product_Name, Product_Description, Item_Code, Industry, Theme, Occasion, Budget) values ('" + id + "', '" + name + "', '" + description + "', '" + code + "', '" + cat_industry + "', '" + cat_theme + "', '" + cat_occasion + "', '" + cat_budget + "')" 
      con.Open() 
      Dim cmd As New SqlCommand(str1, con) 
      cmd.ExecuteNonQuery() 
      con.Close() 
     Catch ex As Exception 
      Response.Write(ex) 
     End Try 
    End Sub 
+3

Вы запрашиваете SQL-инъекцию с помощью этой инструкции insert. Используйте параметризованные запросы вместо – Izzy

+1

Обратите внимание, что вы, кажется, редактировали исходный вопрос в новый вопрос, тем самым теряя контекст исходного. Пожалуйста, верните изменение и задайте новый вопрос, если у вас есть еще одна проблема с 'checkboxes'. Первоначальный вопрос касался ошибок Sql Data Insertion. – StuartLC

ответ

3

Ваши имена столбцов не могут ссылаться как Product Name и Product Description с пространством - вам нужно будет бежать как [Product Name], [Product Description] и т.д.

Но, пожалуйста, воздержитесь от вставки данные напрямую - вместо этого вы должны быть parameterizing ваших входных переменных. Это имеет преимущество как с точки зрения производительности, так и с точки зрения безопасности (Sql Injection).

Dim str1 As String = "insert into product (ID, [Product Name], [Product Description], Item_Code, etc) " _ 
         " values (@id, @name, @description, @code, etc)" 
con.Open() 
Dim cmd As New SqlCommand(str1, con) 
cmd.Parameters.AddWithValue("@id", id) 
cmd.Parameters.AddWithValue("@name", name) 
... etc 
cmd.ExecuteNonQuery() 
+1

Oooops .. да, конечно! Удаление моего комментария ... – Abhitalks

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