Data type mismatch in criteria expression | Access, OleDb, C#

asp.net, c#, datetime, ms-access, oledb

Solution

There is a known issue with OleDb and dates. Try doing something like:

OleDbParameter p = parameter as OleDbParameter;
if (null == p)
  parameter.DbType = DbType.DateTime;
else
  p.OleDbType = OleDbType.Date;

Or use explicit format string:

value.ToString("yyyy-MM-dd hh:mm:ss")

Problem

I read/update data from MS Access using C#. My code is: ``` public static void UpdateLastLogin(int userid, DateTime logintime) ///logintime = DateTime.Now { string sql = @"UPDATE [Customers] SET [LastLogin]=?"; OleDbParameter[] prms = new OleDbParameter[] { new OleDbParameter("@LastLogin",logintime) }; using (DAL dal = new DAL()) { dal.UpdateRow(sql, false, prms); } } ``` When it comes to Dates, I having trouble. This throws a "Data type mismatch in criteria expression." error. (I removed WHERE clause for keeping it simpler) Am I suuposed to enclose [LastLogin]=? question mark with single quotes, # signs .. does not help. Any leads on how to handle DateTime objects with Access and OleDb provider will be greatly appreciated. Thanks in advance.

Original source