Bhatt Aniruddh Ответов: 4

Неправильный синтаксис рядом с ','. проблемы вставки данных в числовое поле.


всем привет,

стол
количество срно(18,0)
имя варчар(50)

у меня есть два текстовых поля.когда я заполняю оба текстовых поля, то вставляю данные. когда я заполняю только срно, то и данные вводят. но когда я заполняю только имя и оставляю srno пустым, то появляется ошибка :: неправильный синтаксис рядом с ','.



МОЙ КОД ТАКОВ....

con.Open()
ss = "insert into fir values("& TextBox1.Text &",' " & textBox2.Text & " ')"
com = New SqlCommand(ss, con)
com.ExecuteNonQuery()
MsgBox("Data Stored Successfully")
con.Close()

4 Ответов

Рейтинг:
1

Dave Kreskowiak

Google для "параметризованного запроса .net". Прямо сейчас любой может испортить ваш запрос, просто добавив "'" к входным данным. Это одна из основ того, что называется атакой SQL - инъекций.


Fabio V Silva

Хорошая точка.

Рейтинг:
1

Pong D. Panda

Ошибка вызвана вашим встроенным кодом

"insert into fir values("& TextBox1.Text &",' " & textBox2.Text & " ')"

Вам необходимо обновить этот код для обработки данного сценария.


[no name]

МОЙ КОД В ПОРЯДКЕ. Я УЖЕ ХРАНИЛ ДАННЫЕ С ЭТИМ КОДОМ. ПОЖАЛУЙСТА, ПРОЧИТАЙТЕ ВОПРОС ПРАВИЛЬНО.

Pong D. Panda

Если ваш код в порядке, то вам не нужно публиковать свою проблему здесь. Если ваш код не работает из-за плохого синтаксического дизайна, то прочтите мой совет о том, что делать.

Рейтинг:
0

Mahendra.p25

Во втором случае, когда вы оставляете свое текстовое поле (SrNo пустым)
затем он передает "" в базу данных, которая несовместима с вашим десятичным полем
sr.No(десятичное число(18,0)
Поэтому нужно проверить, прежде чем передавать его в базу данных, как показано ниже

Decimal Value1;
 if(TextBox1.text=="")
  {
   Value1 = 0.0;
   }
  else
   {
   Value1 = Convert.ToDecimal(TextBox1.text);
   }

  string Value2=  TextBox2.Text;


 Con.Open();
  Cmd = new SqlCommand("Insert into t1 values (@Value1,@Value2)", Con);


  Cmd.Parameters.AddWithValue("@Value1", Value1);
  Cmd.Parameters.AddWithValue("@Value2", Value2);
  Cmd.ExecuteNonQuery();
  Con.Close();


[no name]

Отличное объяснение с примером фрагментов кода.

Mahendra.p25

Спасибо

Рейтинг:
0

Fabio V Silva

Вы должны убедиться, что ваш TextBox1.Text является числовым значением, иначе ваш оператор SQL выдаст вам ошибку, поскольку вы передаете пустую строку в качестве числа.


Pong D. Panda

Это не решит проблему. Вы добавили дополнительную кавычку на вход для числового поля.

Fabio V Silva

3:30 утра...

Pong D. Panda

Еще кофе? :Д

Fabio V Silva

:)

[no name]

да, я передаю пустую строку как число.
но как я могу оставить пустое текстовое поле, которое является номером?