2012-06-23 1 views
2

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

Я пытаюсь вставить значение в базу данных, и я получаю сообщение об ошибке

Неправильный синтаксис около «)».

и cmd.ExecuteNonQuery() подсвечивается. Вот мой код:

con.Open() 
cmd = New SqlCommand("INSERT INTO orders ('" + IDProduct.Text + "')", con) 
cmd.ExecuteNonQuery() 
con.Close() 

ответ

8

Во-первых, НИКОГДА НЕ, НИКОГДА НЕНИКОГДА НЕ строить SQL запросы, как это. Вместо этого используйте параметризованные запросы.

Во-вторых, вам не хватает "VALUES" в вашей команде sql.

редактировать:

В-третьих, как предполагает marc_s, это хорошая идея, чтобы указать имена столбцов, а также. Таким образом, вы можете избежать некоторых неожиданностей позже.

+2

Плюс, я бы добавил: ** всегда ** укажите явный список столбцов в вашем заявлении 'INSERT':' INSERT INTO dbo.Orders (Col1, Col2, Col3, ....) VALUES (VAl1, Val2, Val3 , .....) ' –

+0

@marc_s, хорошая точка, спасибо. Добавил это и к моему ответу. – walther

+0

Спасибо, всем. Это было очень быстро. – user1477362

1

Значения должны быть использованы:

INSERT INTO table_name 
VALUES (value1, value2, value3,...) 
2

Синтаксис оператора SQL INSERT INTO имеет две формы

Вы не specifiy имена столбцов

INSERT INTO table VALUES (value1, value2, value3,...) 

или указать как имена столбцов и значения

INSERT INTO table (col1, col2, col3,...) 
      VALUES (value1, value2, value3,...) 

Первый случай должен использоваться, когда указаны все значения полей.
Второй случай следует использовать, если вы хотите, чтобы вставить значения для определенных столбцов

0

Вставить синтаксис запроса:

insert into <tablename> values(col1 <datatype>,col2 <datatype>) 

вы пропустили values, поэтому вы получите ошибку изменить эту строку:

cmd = New SqlCommand("INSERT INTO orders values ('" + IDProduct.Text + "')", con) 
+0

Я думаю, что правильный синтаксис запроса вставки - 'insert into (col1, col2) VALUES (@ col1, @ col2)'? – WTFZane

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