Member 14084723 Ответов: 3

Ошибка синтаксиса в инструкции Insert


Привет ребята,

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

Использование sqlquery в качестве новой OleDb.OleDbCommand("INSERT INTO SFA Inventory(IMEINo,ProductName,Supplier,InvoiceNo,InvoiceDate,MobileNo,AppVersion)VALUES(?,?,?,?,?,?,?)", sqlconn)

Что я уже пробовал:

Весь мой код таков;

private Sub cmdStockAdd_Click(sender As Object, e As EventArgs) Handles cmdStockAdd.Click
        Dim res As String

        res = MsgBox("Do you want to Add this record", vbYesNo, "SFA-Inventory Add")
        If res = vbYes Then
            Try
                Using sqlconn As New OleDb.OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=E:\Data\SFA\My Project\SFA Inventory\SFA Inventory\SFA Inventory.accdb")
                    Using sqlquery As New OleDb.OleDbCommand("INSERT INTO SFA Inventory(IMEINo,ProductName,Supplier,InvoiceNo,InvoiceDate,MobileNo,AppVersion)VALUES(?,?,?,?,?,?,?)", sqlconn)
                        sqlquery.Parameters.AddWithValue("@IMEI No", TextBox2.Text)
                        sqlquery.Parameters.AddWithValue("@Product Name", TextBox1.Text)
                        sqlquery.Parameters.AddWithValue("@Supplier", ComboBox1.Text)
                        sqlquery.Parameters.AddWithValue("@Invoice No", TextBox3.Text)
                        sqlquery.Parameters.AddWithValue("@Invoice Date", DateTimePicker1.Value.ToShortDateString())
                        sqlquery.Parameters.AddWithValue("@Mobile No", TextBox4.Text)
                        sqlquery.Parameters.AddWithValue("@App Version", TextBox5.Text)
                        sqlconn.Open()
                        sqlquery.ExecuteNonQuery()
                        MsgBox("Records inserted successfully", vbOKOnly, "Records inserted")
                        TextBox2.Text = ""
                        TextBox1.Text = ""
                        ComboBox1.Text = ""
                        TextBox3.Text = ""
                        DateTimePicker1.Value = DateTime.Now
                        TextBox4.Text = ""
                        TextBox5.Text = ""
                    End Using
                End Using
            Catch ex As Exception
                MessageBox.Show(ex.Message)
            End Try
        Else
            Show()

        End If
    End Sub

Afzaal Ahmad Zeeshan

Попробуйте выполнить этот запрос внутри самой базы данных Access и посмотрите, хорошо ли он там работает.

Bryian Tan

Синтаксис должен быть "INSERT INTO [SFA Inventory] ..."

3 Ответов

Рейтинг:
2

Karthik_Mahalingam

пробовать

Using sqlquery As New OleDb.OleDbCommand("INSERT INTO SFA Inventory(IMEINo,ProductName,Supplier,InvoiceNo,InvoiceDate,MobileNo,AppVersion)VALUES(@IMEINo,@ProductName,@Supplier,@InvoiceNo,@InvoiceDate,@MobileNo,@AppVersion)", sqlconn)
sqlquery.Parameters.AddWithValue("@IMEINo", TextBox2.Text)
sqlquery.Parameters.AddWithValue("@ProductName", TextBox1.Text)
sqlquery.Parameters.AddWithValue("@Supplier", ComboBox1.Text)
sqlquery.Parameters.AddWithValue("@InvoiceNo", TextBox3.Text)
sqlquery.Parameters.AddWithValue("@InvoiceDate", DateTimePicker1.Value.ToShortDateString())
sqlquery.Parameters.AddWithValue("@MobileNo", TextBox4.Text)
sqlquery.Parameters.AddWithValue("@AppVersion", TextBox5.Text)


Member 14084723

Нет. Это не сработало. появилось то же сообщение об ошибке. Я собираюсь подключить базу данных Access db.

Karthik_Mahalingam

что такое сообщение об ошибке?

Member 14084723

"Синтаксическая ошибка в операторе INSERT INTO"

Karthik_Mahalingam

как называется таблица

Рейтинг:
0

Dave Kreskowiak

Ставить пробелы в именах таблиц и столбцов-плохая идея. Если вы сделаете это, вам придется заключить имена в квадратные скобки, чтобы убедиться, что имя рассматривается с пробелами:

INSERT INTO [SFA Inventory] (IMEINo, ProductName, Supplier, InvoiceNo, InvoiceDate, MobileNo, AppVersion) VALUES (@IMEINo, @ProductName, @Supplier, @InvoiceNo, @InvoiceDate, @MobileNo, @AppVersion)


Кроме того, удалите все пробелы в именованных параметрах:
sqlquery.Parameters.AddWithValue("@IMEINo", TextBox2.Text)
sqlquery.Parameters.AddWithValue("@ProductName", TextBox1.Text)
sqlquery.Parameters.AddWithValue("@Supplier", ComboBox1.Text)
sqlquery.Parameters.AddWithValue("@InvoiceNo", TextBox3.Text)
sqlquery.Parameters.AddWithValue("@InvoiceDate", DateTimePicker1.Value.ToShortDateString())
sqlquery.Parameters.AddWithValue("@MobileNo", TextBox4.Text)
sqlquery.Parameters.AddWithValue("@AppVersion", TextBox5.Text)


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


Рейтинг:
0

BASSIES

Привет ,

Inventory(IMEINo,ProductName,Supplier,InvoiceNo,InvoiceDate,MobileNo,AppVersion)VALUES(?,?,?,?,?,?,?)", 


без места

а здесь с
sqlquery.Parameters.AddWithValue("@IMEI No", TextBox2.Text)
sqlquery.Parameters.AddWithValue("@Product Name", TextBox1.Text)
sqlquery.Parameters.AddWithValue("@Supplier", ComboBox1.Text)
sqlquery.Parameters.AddWithValue("@Invoice No", TextBox3.Text)
sqlquery.Parameters.AddWithValue("@Invoice Date", DateTimePicker1.Value.ToShortDateString())
sqlquery.Parameters.AddWithValue("@Mobile No", TextBox4.Text)
sqlquery.Parameters.AddWithValue("@App Version", TextBox5.Text)



Измените его на

sqlquery.Parameters.AddWithValue("@IMEINo", TextBox2.Text)
sqlquery.Parameters.AddWithValue("@ProductName", TextBox1.Text)
sqlquery.Parameters.AddWithValue("@Supplier", ComboBox1.Text)
sqlquery.Parameters.AddWithValue("@InvoiceNo", TextBox3.Text)
sqlquery.Parameters.AddWithValue("@InvoiceDate", DateTimePicker1.Value.ToShortDateString())
sqlquery.Parameters.AddWithValue("@MobileNo", TextBox4.Text)
sqlquery.Parameters.AddWithValue("@App Version", TextBox5.Text)


Member 14084723

сделал. Но я все равно получаю сообщение об ошибке.

Member 14084723

найти решение. Спасибо за Вашу поддержку.