2013-10-05 7 views
0

Я пытаюсь добавить запись в БД с помощью приложения 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(); 
} 
+1

@codingbiz 'Empty' не является [зарезервированным ключевым словом] (http://technet.microsoft.com/en-us/library/ms189822.aspx). –

ответ

3

Измените ваш Value к Values

И, пожалуйста, используйте parameterized 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(); 
} 
+0

Спасибо за answre, я получаю исключение в этой строке: int o = sc.ExecuteNonQuery(); Я попробовал ваше предложение, и я все равно получаю то же исключение. – Nizan

+0

@Nizan Я пропустил имя таблицы. Попробуйте снова. –

+0

Привет, У меня есть новое исключение: Неправильный синтаксис рядом с ключевым словом «VALUES» – Nizan

3

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

insert into empty values("... 

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

+0

Да, я хочу вставить строку. Я строю таблицу и форму, я хочу, нажав кнопку в форме, чтобы вставить новую строку в SqlDB. – Nizan

+0

Это исправить вашу проблему? –

+0

Нет. Я не знаю, почему это не работает. Это должен быть простой код. Я почесываю голову, и я все еще на том же месте. – Nizan

2

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

+0

Эй, я пытаюсь использовать этот код (см. 2:05): https://www.youtube.com/watch?v=Z3j-7309ITc – Nizan

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