INSERT Синтаксическая ошибка (отсутствует оператор) в vb.net fform - PullRequest
0 голосов
/ 22 февраля 2012

Внутри моего приложения мне нужно вставить данные из двух источников: таблицы и текстового поля формы. Поэтому я попытался использовать приведенный ниже код, но в окне сообщения отображается ошибка. (Изменить: я использую vb.net)

Ошибка:

while inserting record on table ..Syntax error (missing operator) in query

Код:

Dim con As New OleDbConnection
    Dim cmd As New OleDbCommand
    Try
        con.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\DellXPS\Desktop\mDB.accdb"

        con.Open()
        cmd.Connection = con
        cmd.CommandText = "INSERT INTO t2(f3) SELECT f1 @Eid FROM t1 WHERE f11=true "
        cmd.ExecuteNonQuery()
        cmd.Parameters.Add("@Eid",  OleDbType.VarChar).Value = TextBox1.Text
    Catch ex As Exception
        MessageBox.Show("Error while inserting record on table..." & ex.Message, "Insert Records")
    Finally
        con.Close()
    End Try

Ответы [ 4 ]

0 голосов
/ 10 мая 2012

используйте следующий код для добавления параметра со значением

cmd.Parameters.AddWithValue("@Eid",   TextBox1.Text);

Затем выполните

cmd.ExecuteNonQuery()

Поставьте оператор + между f1 и @Eid в операторе вставки, как показано в инструкциях sql:

INSERT INTO t2(f3, <Name of extra column>) SELECT f1 + @Eid FROM t1 WHERE f11=true
0 голосов
/ 22 февраля 2012

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

INSERT INTO t2(f3) SELECT f1 @Eid FROM t1 WHERE f11=true

Обычно в этом разделе кода отсутствует оператор:

...ВЫБЕРИТЕ здесь оператор f1 @Eid FROM ...

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

Приложение 1:

В ответ на ваш комментарий вам понадобится:

INSERT INTO t2(f3, <Name of extra column>) SELECT f1, @Eid FROM t1 WHERE f11=true

Поскольку вы вставляете 2 столбца, вам нужно указать 2 столбца в вставляемой части запроса.Замените <Name of extra column> другим именем столбца

0 голосов
/ 22 февраля 2012

Я не настроил среду разработки для vb.net, но для меня подозрительны две вещи:

  • Позиция вызова cmd.Parameters.Add(...).value должна быть размещена до того, как cmd.ExecuteNonQuery() будетбыть казненным.См. этот пример .
  • Параметр TextBox1.Text может быть нулевым.Если это так, оператор sql будет неполным для движка.
0 голосов
/ 22 февраля 2012

Ошибка заключается в утверждении select в тексте вашей команды.

SELECT f1 @Eid FROM t1 WHERE f11=true

Чего ты здесь пытаешься достичь? F1 - это колонка? Что содержит TextBox1.Text (источник параметра @Eid)?

Я бы посоветовал взглянуть на синтаксис оператора выбора SQL здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...