Неверный синтаксис рядом со значением

Я пытаюсь добавить запись в БД с помощью приложения Windows Form. Когда я отлаживаю код, я получаю исключение: Неправильный синтаксис рядом со значением. Извините за беспорядок в коде, я новый участник.

private void button1_Click(object sender, EventArgs e)
{
     SqlConnection con = new SqlConnection("Data Source=.\\sqlexpress;Initial   Catalog=VirtualSalesFair;Integrated Security=True");
     con.Open();
     SqlCommand sc = new SqlCommand("Insert into Empty value('" + textBox1.Text + "'," + textBox2.Text + ",'" + textBox3.Text + "','" + textBox4.Text + "','" + textBox5.Text + "','" + textBox6.Text + "','" + textBox7.Text + "','" + textBox8.Text + "','" +textBox9.Text +"',"+textBox10.Text +");", con);
     int o=sc.ExecuteNonQuery();
     MessageBox.Show(o+ ":Record has been inserted");
     con.Close();
}

person Nizan    schedule 05.10.2013    source источник
comment
@codingbiz Empty не является зарезервированным ключевым словом.   -  person Soner Gönül    schedule 06.10.2013


Ответы (3)


Изменить значение на значения. Так:

insert into empty values("...

Это правильный синтаксис SQL для вставки строки.

person Jonathan Airey    schedule 05.10.2013
comment
Да, я хочу вставить строку. Я создаю таблицу и форму, я хочу, нажав кнопку в форме, чтобы вставить новую строку в SqlDB. - person Nizan; 06.10.2013
comment
Это решило вашу проблему? - person Jonathan Airey; 06.10.2013
comment
Нет. Я не знаю, почему это не работает. Это должен быть простой код. Я чешу голову, и я все еще на том же месте. - person Nizan; 06.10.2013
comment
Хорошо, какую ошибку вы получаете сейчас? Ваш код нужно было исправить, чтобы он говорил значения вместо значения, и это исправление ошибки, которую вы получали. - person Jonathan Airey; 06.10.2013

Измените свой Value на Values

И, пожалуйста, используйте параметризованный sql. Такие объединения строк открыты для атак SQL Injection.

using(SqlConnection con = new SqlConnection("Data Source=.\\sqlexpress;Initial   Catalog=VirtualSalesFair;Integrated Security=True"))
{
   con.Open();
   SqlCommand sc = new SqlCommand("INSERT INTO Empty VALUES(@VAL1, @VAL2, @VAL3, @VAL4, @VAL5, @VAL6, @VAL7, @VAL8, @VAL9, @VAL10)", con);
   sc.Parameters.AddWithValue("@VAL1", textBox1.Text);
   sc.Parameters.AddWithValue("@VAL2", textBox2.Text);
   sc.Parameters.AddWithValue("@VAL3", textBox3.Text);
   sc.Parameters.AddWithValue("@VAL4", textBox4.Text);
   sc.Parameters.AddWithValue("@VAL5", textBox5.Text);
   sc.Parameters.AddWithValue("@VAL6", textBox6.Text);
   sc.Parameters.AddWithValue("@VAL7", textBox7.Text);
   sc.Parameters.AddWithValue("@VAL8", textBox8.Text);
   sc.Parameters.AddWithValue("@VAL9", textBox9.Text);
   sc.Parameters.AddWithValue("@VAL10", textBox10.Text);

   int o = sc.ExecuteNonQuery();
   MessageBox.Show(o + ":Record has been inserted");
   con.Close();
}
person Soner Gönül    schedule 05.10.2013
comment
Спасибо за ответ, я получаю исключение в этой строке: int o=sc.ExecuteNonQuery(); Я попробовал ваше предложение, и я все еще получаю то же исключение. - person Nizan; 06.10.2013
comment
@Nizan Я пропустил название таблицы. Попробуйте снова. - person Soner Gönül; 06.10.2013
comment
Привет, у меня есть новое исключение: неверный синтаксис рядом с ключевым словом 'VALUES' - person Nizan; 06.10.2013
comment
Да, я пытался. Теперь я получаю это исключение: Недопустимое имя столбца «VAL10». - person Nizan; 06.10.2013
comment
@Nizan Я забыл @ перед VAL10, используй как @VAL10. Посмотрите еще раз в моем ответе, пожалуйста. - person Soner Gönül; 06.10.2013
comment
Я исправляю это, теперь у меня есть это исключение: Недопустимое имя объекта «Пустой». Что я делаю не так? я сделал именно то, что видел на YouTube: youtube.com/watch?v=Z3j- 7309ITc - person Nizan; 06.10.2013

используйте VALUES вместо Value. Очень распространенная синтаксическая ошибка.

person Shaharyar    schedule 05.10.2013
comment
Эй, я пытаюсь декодировать этот код (см. 2:05): youtube.com /watch?v=Z3j-7309ITc - person Nizan; 06.10.2013