title: Syntax error in Update statement against Access database (using OleDbCommandBuilder)
body: <p>I have been working on this issue for ages! I have an MSAccess 2007 db and I am using Visual Studio 2010 and Visual Basic to write an application that reads and writes from the database. The read works just fine but when I try and write an updated password back into the database, it fails. Initially I had just a plain 'Syntax Error' which wasn't that helpful, but with a bit of research I noted that access databases seem to have an issue with columns called password. I renamed that and tried again, now I get this error when the </p>
  
  <blockquote>
    <p>da.Update(ds,"All_Users")</p>
  </blockquote>
  
  <p>command is executed. </p>
  
  <p>The full error message from VS is :
  <code>Syntax error (missing operator) in query expression '((ID = ?) AND ((? = 1 AND Forename IS NULL) OR (Forename = ?)) AND ((? = 1 AND Surname IS NULL) OR (Surname = ?)) AND ((? = 1 AND User_Level IS NULL) OR (User_Level = ?)) AND ((? = 1 AND Last Logon IS NULL) OR (Last Logon = ?)) AND ((? = 1 AND Allow IS NU'.</code></p>
  
  <p>My code is as follows:</p>
  
  <pre><code>Private Sub btnSave_Click(snder as System.Object, e As System.EventArgs) Handles btnSave.Click
      Dim Con As New OleDb.OleDbConnection
      Dim ConString As String
      Dim ds As New DataSet
      Dim da As OleDb.OleDbDataAdapter
      Dim Sql As String = "SELECT * FROM tblUsers"
      '
      ConString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" &amp; _
          Application.StartupPath &amp; "\Data\Users.accdb;Jet OLEDB:Database Password=---------;"
      Con.ConnectionString = ConString
      Con.Open()
      da = New OleDb.OleDbDataAdapter(Sql, Con)
      da.Fill(ds, "All_Users")
      'Now loop through the records until you find the one for this user
      For i = 0 To ds.Tables("All_Users").Rows.Count - 1
          If ds.Tables("All_Users").Rows(i).Item(0).ToString = CurrentUser.ID Then
              ds.Tables("All_Users").Rows(i).Item(6) = txtConfirmPassword.Text
          End If
      Next
      CurrentUser.Password = txtConfirmPassword.Text
      '
      Dim cb As New OleDb.OleDbCommandBuilder(da)
      da.Update(ds, "All_Users")
      '
      Con.Close()
      MessageBox.Show("Your password has been sucessfully updated.", "Success", _
                      MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1)
      Me.Close()
  </code></pre>