У вас проблема более высокого уровня.Вы должны никогда создавать оператор SQL путем объединения операторов и значений.Вы должны связать значения как параметры, тогда базовая структура будет обрабатывать параметры и даже предоставлять их отдельно от оператора SQL серверу.Это гораздо более безопасный способ (внедрение SQL не возможно), с лучшей производительностью, и вы не попадете в ошибки такого типа.
Если вы хотите понять причину проблемы, то вам следует изучитьфактический оператор вставки, который вы создаете, и проблема станет очевидной
"INSERT INTO Users (LastName, FirstName, UserName, Password) " + "VALUES ('" + lastName + "','" + firstName + "','" + username + "','" + encryptPassword + "')"
Вполне вероятно, что результат вашего хэша MD5 или других параметров каким-то образом нарушит синтаксис SQL INSERT.(в большинстве случаев не следует указывать фактические значения). Вы должны попытаться выполнить результирующий запрос к фактической базе данных, чтобы увидеть фактическую ошибку в возвратах (например, используйте SQL Server Management Studio)
Для привязки параметров вы должны использовать что-то вроде этого:
dCmd.Parameters.Add(new OleDbParameter("@username",username));
См. Справочник MSDN: Параметры OleDbCommand