The most likely explanation for this is that you are using an OleDbCommandBuilder to generate your DELETE, INSERT and/or UPDATE statements based on your SELECT statement and the SQL code generated is invalid. The most common reason for that is that one or more of your table or column names are reserved words. The best way to avoid this is to not use reserved words as identifiers. If that change is not possible, the next thing to look at is, instead of using a wildcard in your query, write out the full column list. In that case you'll have to escape the resereved words and the command builder should follow suit. For example, instead of this:you do this:
You escape the reserved word "Password" to force it to be interpreted as an identifier.
SELECT UserID, UserName, [Password] FROM User