我使用C#从MS Access中读取/更新数据。
我的代码是:

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);
    }
}

说到日期,我遇到了麻烦。
这将引发“条件表达式中的数据类型不匹配”。错误。
(我删除了WHERE子句以使其更简单)
我应该附上[LastLogin] =吗?带单引号的问号,#号..对此没有帮助。
任何有关如何使用Access和OleDb提供程序处理DateTime对象的线索都将不胜感激。

提前致谢。

最佳答案

OleDb和日期存在一个已知问题。尝试做类似的事情:

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

或使用显式格式字符串:
value.ToString("yyyy-MM-dd hh:mm:ss")

10-07 20:19