2016-02-25 2 views
0

Я пытаюсь вставить данные из VB.NET в MS Access, но получаю сообщение «Ошибка синтаксиса в инструкции INSERT INTO». из MessageBox.Show (ex.Message).Ошибка синтаксиса VB.NET в параметризованной инструкции INSERT INTO

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

Imports System.Data.OleDb 
Public Class addNew 
Dim conn As New OleDbConnection() 
Dim sqlCom As New OleDbCommand() 

Private Sub btnAddNew_Click(sender As Object, e As EventArgs) Handles btnAddNew.Click 
    If txtFirstName.Text = "" Or txtLastName.Text = "" Or txtContact.Text = "" Or txtEmail.Text = "" Or comboMembershipType.Text = "" Then 
     MessageBox.Show("Please complete the required fields.", "Authentication Error", MessageBoxButtons.OK, MessageBoxIcon.Error) 
    Else 
     Try 
      conn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source= " & Application.StartupPath & "\igcDatabase.accdb" 
      sqlCom.Connection = conn 
      conn.Open() 

      sqlCom.CommandText = "INSERT INTO Members (Member First Name, Member Last Name, Contact Number, E-mail Address)" _ 
      & " VALUES (@FirstName, @LastName, @Contact, @Email)" 

      sqlCom.Parameters.AddWithValue("FirstName", txtFirstName.Text) 
      sqlCom.Parameters.AddWithValue("LastName", txtLastName.Text) 
      sqlCom.Parameters.AddWithValue("Contact", txtContact.Text) 
      sqlCom.Parameters.AddWithValue("Email", txtEmail.Text) 

      sqlCom.ExecuteNonQuery() 
      MessageBox.Show("Successfully added member!") 
      conn.Close() 

     Catch ex As Exception 
      MessageBox.Show(ex.Message) 
     End Try 
    End If 
End Sub 
End Class 

Проблема исправлена.

ответ

0

Попробуйте обернуть имена полей в [], например. [участник имя].

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

+0

Спасибо за помощь! Моя проблема сразу исправлена. – Gideon

0

Я думаю, что проблема создания имен столбцов создает проблему, пожалуйста, проверьте имена столбцов, пожалуйста? правильно ли он напечатан или нет? Я думаю, что между Member First Name не будет места. И я предлагаю вам использовать Parameters.Add() instead for Parameters.AddWithValue(); Следующий пример будет примером для этого:

 sqlCom.Parameters.Add("@FirstName", OleDbType.VarChar).Value = txtFirstName.Text 
     sqlCom.Parameters.Add("@LastName",OleDbType.VarChar).Value = txtLastName.Text 
     sqlCom.Parameters.Add("@Contact",OleDbType.VarChar).Value = txtContact.Text 
     sqlCom.Parameters.Add("@Email",OleDbType.VarChar).Value =txtEmail.Text 
+0

Спасибо за ваш быстрый ответ и предложение. Тем не менее, я все еще получаю ту же ошибку из Message.Show (ex.Message) после исправления строки до вашей. Если вы не возражаете, не могли бы вы пройти весь мой код? Заранее спасибо! – Gideon

+0

Не могли бы вы, пожалуйста, проверить имена столбцов? правильно ли он напечатан или нет? Я думаю, что между «Имя участника» не должно быть места –

+0

Имена столбцов введены правильно. Однако он работает после того, как я изменил имена столбцов из MS Access и VB.net на нерасширение. Спасибо, что напомнили, очень ценю это. – Gideon

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